Files
padkey_linux/keymap.c
2013-04-03 00:35:44 +09:00

113 lines
2.4 KiB
C

/*
* Released into the public domain
* by Aki Goto <tyatsumi@gmail.com>
*/
#include <X11/keysym.h>
#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];
}