/** Convert a keysym to a string. * \param ksym The keysym. * \param buf The destination buffer. * \param buf_len The buffer length. */ bool keyresolv_keysym_to_string(xcb_keysym_t ksym, char *buf, ssize_t buf_len) { /* Handle special KeySym (Tab, Newline...) */ if((ksym & 0xffffff00) == 0xff00) return keysym_to_str(buf, buf_len, ksym); else if((ksym & 0xfffffe00) == 0xfe00) return keysym_to_xkb(buf, buf_len, ksym); else if((ksym & 0x1008F000) == 0x1008F000) return keysym_to_xf86(buf, buf_len, ksym); /* Handle other KeySym (like unicode...) */ return keysym_to_utf8(buf, ksym); }
static bool key_press_lookup_string(xcb_key_press_event_t *e, char *buf, int buf_len, xcb_keysym_t *ksym) { *ksym = key_getkeysym(e->detail, e->state); /* Handle special KeySym (Tab, Newline...) */ if((*ksym & 0xffffff00) == 0xff00) return keysym_to_str(buf, buf_len, *ksym); else if((*ksym & 0xfffffe00) == 0xfe00) return keysym_to_xkb(buf, buf_len, *ksym); /* Handle other KeySym (like unicode...) */ return keysym_to_utf8(buf, buf_len, *ksym); }