KeySym unicode2keysym(wchar_t wc) { static const keymap_t keymap = GetKeyMap(); keymap_t::const_iterator itr = keymap.find(wc); if ( itr != keymap.end()) return itr->second; return NoSymbol; }
void Editor::keystroke(const Event& e) { char buf[100]; int n = e.mapkey(buf, sizeof(buf) - 1); if (n > 0) { buf[n] = '\0'; GetKeyMap()->Execute(buf); } else if (e.rep()->xevent_.type == KeyPress) { KeySym ks = XKeycodeToKeysym(e.rep()->display_->rep()->display_, e.rep()->xevent_.xkey.keycode, 0); if (ks) { strncpy(buf, (const char*)&ks, 2); n = 2; buf[n] = '\0'; GetKeyMap()->Execute(buf); } } }