/* * Released into the public domain * by Aki Goto */ #include #include "keymap.h" #define UP ButtonId_UP #define DOWN ButtonId_DOWN #define LEFT ButtonId_LEFT #define RIGHT ButtonId_RIGHT #define A ButtonId_A #define B ButtonId_B #define X ButtonId_X #define Y ButtonId_Y static void set(struct Keymap *this, int first, int second, int keysym) { int index; index = first * 8 + second; this->keysym[index] = keysym; } void Keymap_initialize(struct Keymap *this) { set(this, UP, UP, XK_Escape); set(this, UP, DOWN, XK_grave); set(this, UP, LEFT, 0); set(this, UP, RIGHT, 0); set(this, DOWN, UP, 0); set(this, DOWN, DOWN, XK_space); set(this, DOWN, LEFT, 0); set(this, DOWN, RIGHT, 0); set(this, LEFT, UP, 0); set(this, LEFT, DOWN, 0); set(this, LEFT, LEFT, XK_Tab); set(this, LEFT, RIGHT, 0); set(this, B, A, XK_minus); set(this, B, B, XK_BackSpace); set(this, B, X, XK_equal); set(this, B, Y, XK_apostrophe); set(this, X, A, 0); set(this, X, B, 0); set(this, X, X, XK_space); set(this, X, Y, 0); set(this, Y, A, XK_backslash); set(this, Y, B, XK_bracketleft); set(this, Y, X, XK_bracketright); set(this, Y, Y, XK_Return); set(this, LEFT, Y, XK_1); set(this, DOWN, Y, XK_2); set(this, UP, Y, XK_3); set(this, RIGHT, Y, XK_4); set(this, RIGHT, LEFT, XK_5); set(this, A, Y, XK_6); set(this, A, LEFT, XK_7); set(this, B, LEFT, XK_8); set(this, X, LEFT, XK_9); set(this, Y, LEFT, XK_0); set(this, LEFT, B, XK_q); set(this, DOWN, B, XK_w); set(this, UP, B, XK_e); set(this, RIGHT, B, XK_r); set(this, RIGHT, UP, XK_t); set(this, A, B, XK_y); set(this, A, UP, XK_u); set(this, B, UP, XK_i); set(this, X, UP, XK_o); set(this, Y, UP, XK_p); set(this, LEFT, A, XK_a); set(this, DOWN, A, XK_s); set(this, UP, A, XK_d); set(this, RIGHT, A, XK_f); set(this, RIGHT, RIGHT, XK_g); set(this, A, A, XK_h); set(this, A, RIGHT, XK_j); set(this, B, RIGHT, XK_k); set(this, X, RIGHT, XK_l); set(this, Y, RIGHT, XK_semicolon); set(this, LEFT, X, XK_z); set(this, DOWN, X, XK_x); set(this, UP, X, XK_c); set(this, RIGHT, X, XK_v); set(this, RIGHT, DOWN, XK_b); set(this, A, X, XK_n); set(this, A, DOWN, XK_m); set(this, B, DOWN, XK_comma); set(this, X, DOWN, XK_period); set(this, Y, DOWN, XK_slash); } int Keymap_get(struct Keymap *this, struct Code *code) { int index; index = code->first * 8 + code->second; return this->keysym[index]; }