Skip to content

Instantly share code, notes, and snippets.

@bluetech
Last active August 25, 2023 10:44
Show Gist options
  • Save bluetech/3833422 to your computer and use it in GitHub Desktop.
Save bluetech/3833422 to your computer and use it in GitHub Desktop.
Finding an ASCII keysym for a keycode
static xkb_keysym_t
get_ascii(struct xkb_state *state, xkb_keycode_t keycode)
{
struct xkb_keymap *keymap;
xkb_layout_index_t num_layouts;
xkb_layout_index_t layout;
xkb_level_index_t level;
const xkb_keysym_t *syms;
int num_syms;
keymap = xkb_state_get_keymap(state);
num_layouts = xkb_keymap_num_layouts_for_key(keymap, keycode);
for (layout = 0; layout < num_layouts; layout++) {
level = xkb_state_key_get_level(state, keycode, layout);
num_syms = xkb_keymap_key_get_syms_by_level(keymap, keycode,
layout, level, &syms);
if (num_syms != 1)
continue;
if (syms[0] > 0 && xkb_keysym_to_utf32(syms[0]) < 128)
return syms[0];
}
return XKB_KEY_NoSymbol;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment