139 lines
4.5 KiB
C++
Executable File
139 lines
4.5 KiB
C++
Executable File
//shared keycode lookup table + initialization routine:
|
|
//#include inside a class interface to use
|
|
|
|
//Xlib keycodes for each key can vary between platforms, so this header file
|
|
//will lookup keycodes from static keysyms, and map them to nall/input.hpp's
|
|
//keyboard identifiers.
|
|
//
|
|
//this allows input capture routine to iterate quickly over all keycodes and
|
|
//map their states to ruby's input state table.
|
|
|
|
uint8_t keycode[256];
|
|
|
|
bool init_keycodes() {
|
|
Display *display = XOpenDisplay(0);
|
|
memset(&keycode, 0, sizeof keycode);
|
|
|
|
#define assign(x, y) keycode[x] = XKeysymToKeycode(display, y)
|
|
assign(keyboard<0>::escape, XK_Escape);
|
|
|
|
assign(keyboard<0>::f1, XK_F1);
|
|
assign(keyboard<0>::f2, XK_F2);
|
|
assign(keyboard<0>::f3, XK_F3);
|
|
assign(keyboard<0>::f4, XK_F4);
|
|
assign(keyboard<0>::f5, XK_F5);
|
|
assign(keyboard<0>::f6, XK_F6);
|
|
assign(keyboard<0>::f7, XK_F7);
|
|
assign(keyboard<0>::f8, XK_F8);
|
|
assign(keyboard<0>::f9, XK_F9);
|
|
assign(keyboard<0>::f10, XK_F10);
|
|
assign(keyboard<0>::f11, XK_F11);
|
|
assign(keyboard<0>::f12, XK_F12);
|
|
|
|
//assign(keyboard<0>::print_screen, XK_???);
|
|
assign(keyboard<0>::scroll_lock, XK_Scroll_Lock);
|
|
assign(keyboard<0>::pause, XK_Pause);
|
|
|
|
assign(keyboard<0>::tilde, XK_asciitilde);
|
|
|
|
assign(keyboard<0>::num_0, XK_0);
|
|
assign(keyboard<0>::num_1, XK_1);
|
|
assign(keyboard<0>::num_2, XK_2);
|
|
assign(keyboard<0>::num_3, XK_3);
|
|
assign(keyboard<0>::num_4, XK_4);
|
|
assign(keyboard<0>::num_5, XK_5);
|
|
assign(keyboard<0>::num_6, XK_6);
|
|
assign(keyboard<0>::num_7, XK_7);
|
|
assign(keyboard<0>::num_8, XK_8);
|
|
assign(keyboard<0>::num_9, XK_9);
|
|
|
|
assign(keyboard<0>::dash, XK_minus);
|
|
assign(keyboard<0>::equal, XK_equal);
|
|
assign(keyboard<0>::backspace, XK_BackSpace);
|
|
|
|
assign(keyboard<0>::insert, XK_Insert);
|
|
assign(keyboard<0>::delete_, XK_Delete);
|
|
assign(keyboard<0>::home, XK_Home);
|
|
assign(keyboard<0>::end, XK_End);
|
|
assign(keyboard<0>::page_up, XK_Prior);
|
|
assign(keyboard<0>::page_down, XK_Next);
|
|
|
|
assign(keyboard<0>::a, XK_A);
|
|
assign(keyboard<0>::b, XK_B);
|
|
assign(keyboard<0>::c, XK_C);
|
|
assign(keyboard<0>::d, XK_D);
|
|
assign(keyboard<0>::e, XK_E);
|
|
assign(keyboard<0>::f, XK_F);
|
|
assign(keyboard<0>::g, XK_G);
|
|
assign(keyboard<0>::h, XK_H);
|
|
assign(keyboard<0>::i, XK_I);
|
|
assign(keyboard<0>::j, XK_J);
|
|
assign(keyboard<0>::k, XK_K);
|
|
assign(keyboard<0>::l, XK_L);
|
|
assign(keyboard<0>::m, XK_M);
|
|
assign(keyboard<0>::n, XK_N);
|
|
assign(keyboard<0>::o, XK_O);
|
|
assign(keyboard<0>::p, XK_P);
|
|
assign(keyboard<0>::q, XK_Q);
|
|
assign(keyboard<0>::r, XK_R);
|
|
assign(keyboard<0>::s, XK_S);
|
|
assign(keyboard<0>::t, XK_T);
|
|
assign(keyboard<0>::u, XK_U);
|
|
assign(keyboard<0>::v, XK_V);
|
|
assign(keyboard<0>::w, XK_W);
|
|
assign(keyboard<0>::x, XK_X);
|
|
assign(keyboard<0>::y, XK_Y);
|
|
assign(keyboard<0>::z, XK_Z);
|
|
|
|
assign(keyboard<0>::lbracket, XK_bracketleft);
|
|
assign(keyboard<0>::rbracket, XK_bracketright);
|
|
assign(keyboard<0>::backslash, XK_backslash);
|
|
assign(keyboard<0>::semicolon, XK_semicolon);
|
|
assign(keyboard<0>::apostrophe, XK_apostrophe);
|
|
assign(keyboard<0>::comma, XK_comma);
|
|
assign(keyboard<0>::period, XK_period);
|
|
assign(keyboard<0>::slash, XK_slash);
|
|
|
|
assign(keyboard<0>::pad_0, XK_KP_0);
|
|
assign(keyboard<0>::pad_1, XK_KP_1);
|
|
assign(keyboard<0>::pad_2, XK_KP_2);
|
|
assign(keyboard<0>::pad_3, XK_KP_3);
|
|
assign(keyboard<0>::pad_4, XK_KP_4);
|
|
assign(keyboard<0>::pad_5, XK_KP_5);
|
|
assign(keyboard<0>::pad_6, XK_KP_6);
|
|
assign(keyboard<0>::pad_7, XK_KP_7);
|
|
assign(keyboard<0>::pad_8, XK_KP_8);
|
|
assign(keyboard<0>::pad_9, XK_KP_9);
|
|
|
|
assign(keyboard<0>::add, XK_KP_Add);
|
|
assign(keyboard<0>::subtract, XK_KP_Subtract);
|
|
assign(keyboard<0>::multiply, XK_KP_Multiply);
|
|
assign(keyboard<0>::divide, XK_KP_Divide);
|
|
assign(keyboard<0>::enter, XK_KP_Enter);
|
|
|
|
//assign(keyboard<0>::num_lock, XK_???);
|
|
//assign(keyboard<0>::caps_lock, XK_???);
|
|
|
|
assign(keyboard<0>::up, XK_Up);
|
|
assign(keyboard<0>::down, XK_Down);
|
|
assign(keyboard<0>::left, XK_Left);
|
|
assign(keyboard<0>::right, XK_Right);
|
|
|
|
assign(keyboard<0>::tab, XK_Tab);
|
|
assign(keyboard<0>::return_, XK_Return);
|
|
assign(keyboard<0>::spacebar, XK_space);
|
|
|
|
assign(keyboard<0>::lctrl, XK_Control_L);
|
|
assign(keyboard<0>::rctrl, XK_Control_R);
|
|
assign(keyboard<0>::lalt, XK_Alt_L);
|
|
assign(keyboard<0>::ralt, XK_Alt_R);
|
|
assign(keyboard<0>::lshift, XK_Shift_L);
|
|
assign(keyboard<0>::rshift, XK_Shift_R);
|
|
assign(keyboard<0>::lsuper, XK_Super_L);
|
|
assign(keyboard<0>::rsuper, XK_Super_R);
|
|
assign(keyboard<0>::menu, XK_Menu);
|
|
#undef assign
|
|
|
|
XCloseDisplay(display);
|
|
}
|