xkbcommon: Converting keysym to keycode
Peter Hutterer
peter.hutterer at who-t.net
Sun Dec 5 05:15:12 UTC 2021
On Sat, Dec 04, 2021 at 08:34:49AM +0000, adlo wrote:
> Basically the program I’m working on was originally designed for X11, and I’m trying to adapt it to Wayland. I’m trying to find an equivalent to XKeysymToKeycode().
>
> > it doesn't, but if you look at xkbcli how-to-type and it's source
> > (tools/how-to-type.c) that's the closest approximation.
>
> What does this program do? Does it iterate through all possible keycodes and lookup the keysym for them?
please look at the source, it's not a huge program.
> >
> > Main reason is that the keycode->keysym conversion is one-way only and it's
> > not 100% reliable to go back. e.g. if a modifier is locked/latched you cannot
> > access certain keysyms without unlocking that modifier, etc.
>
> How would I deal with capital letters with regards to getting a keycode from a keysym?
there's no such thing as a capital letter with keycodes, keycodes are really
just "this physical key has been pressed". so capital letters usually resolve
to a sequence - shift down, keycode, shift up. That is where the difficult
bits start.
>
> > KEY_TAB is defined in linux/input-event-codes.h. XKB uses those keycodes + 8
> > for the evdev ruleset (see /usr/share/X11/xkb/keycodes/evdev for the mapping)
> > and it goes from there. If you're using a different ruleset you're going to
> > get interesting results but evdev is effectively hardcoded everywhere anyway,
> > so you won't.
>
> Is linux/input-event-codes.h keycodes or keysyms?
keycodes, but they have semantic naming for easier association.
Cheers,
Peter
More information about the wayland-devel
mailing list