Last active
August 25, 2023 10:44
-
-
Save bluetech/3833422 to your computer and use it in GitHub Desktop.
Finding an ASCII keysym for a keycode
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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