111 lines
3.0 KiB
D
111 lines
3.0 KiB
D
|
|
module patch.fixkeyboardinput;
|
||
|
|
|
||
|
|
import patches : isPatchEnabled;
|
||
|
|
import deimos.X11.keysym;
|
||
|
|
import deimos.X11.X : KeySym, ShiftMask, ControlMask, Mod1Mask, Mod4Mask;
|
||
|
|
|
||
|
|
static if (isPatchEnabled!"FIXKEYBOARDINPUT_PATCH") {
|
||
|
|
static KeySym[] mappedkeys = [
|
||
|
|
XK_space,
|
||
|
|
XK_m,
|
||
|
|
XK_i,
|
||
|
|
XK_A,
|
||
|
|
XK_B,
|
||
|
|
XK_C,
|
||
|
|
XK_D,
|
||
|
|
XK_E,
|
||
|
|
XK_F,
|
||
|
|
XK_G,
|
||
|
|
XK_H,
|
||
|
|
XK_I,
|
||
|
|
XK_K,
|
||
|
|
XK_J,
|
||
|
|
XK_L,
|
||
|
|
XK_M,
|
||
|
|
XK_N,
|
||
|
|
XK_O,
|
||
|
|
XK_P,
|
||
|
|
XK_Q,
|
||
|
|
XK_R,
|
||
|
|
XK_S,
|
||
|
|
XK_T,
|
||
|
|
XK_U,
|
||
|
|
XK_V,
|
||
|
|
XK_W,
|
||
|
|
XK_X,
|
||
|
|
XK_Y,
|
||
|
|
XK_Z,
|
||
|
|
XK_0,
|
||
|
|
XK_1,
|
||
|
|
XK_2,
|
||
|
|
XK_3,
|
||
|
|
XK_4,
|
||
|
|
XK_5,
|
||
|
|
XK_6,
|
||
|
|
XK_7,
|
||
|
|
XK_8,
|
||
|
|
XK_9,
|
||
|
|
XK_exclam,
|
||
|
|
XK_quotedbl,
|
||
|
|
XK_numbersign,
|
||
|
|
XK_dollar,
|
||
|
|
XK_percent,
|
||
|
|
XK_ampersand,
|
||
|
|
XK_apostrophe,
|
||
|
|
XK_parenleft,
|
||
|
|
XK_parenright,
|
||
|
|
XK_asterisk,
|
||
|
|
XK_plus,
|
||
|
|
XK_comma,
|
||
|
|
XK_minus,
|
||
|
|
XK_period,
|
||
|
|
XK_slash,
|
||
|
|
XK_colon,
|
||
|
|
XK_semicolon,
|
||
|
|
XK_less,
|
||
|
|
XK_equal,
|
||
|
|
XK_greater,
|
||
|
|
XK_question,
|
||
|
|
XK_at,
|
||
|
|
XK_bracketleft,
|
||
|
|
XK_backslash,
|
||
|
|
XK_bracketright,
|
||
|
|
XK_asciicircum,
|
||
|
|
XK_underscore,
|
||
|
|
XK_grave,
|
||
|
|
XK_braceleft,
|
||
|
|
XK_bar,
|
||
|
|
XK_braceright,
|
||
|
|
XK_asciitilde,
|
||
|
|
];
|
||
|
|
|
||
|
|
struct Key {
|
||
|
|
KeySym keysym;
|
||
|
|
uint mask;
|
||
|
|
string strng;
|
||
|
|
int appkey;
|
||
|
|
int appcursor;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Note: This is a partial implementation. The full key array from fixkeyboardinput.c
|
||
|
|
// would need to be converted completely, but this provides the structure.
|
||
|
|
static Key[] key = [
|
||
|
|
Key(XK_KP_Home, ShiftMask, "\033[2J", 0, -1),
|
||
|
|
Key(XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1),
|
||
|
|
Key(XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0),
|
||
|
|
Key(XK_KP_End, ControlMask, "\033[J", -1, 0),
|
||
|
|
Key(XK_KP_End, ControlMask, "\033[1;5F", +1, 0),
|
||
|
|
Key(XK_KP_End, ShiftMask, "\033[K", -1, 0),
|
||
|
|
Key(XK_KP_End, ShiftMask, "\033[1;2F", +1, 0),
|
||
|
|
Key(XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0),
|
||
|
|
Key(XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0),
|
||
|
|
Key(XK_KP_Insert, ShiftMask, "\033[4l", -1, 0),
|
||
|
|
Key(XK_KP_Insert, ControlMask, "\033[L", -1, 0),
|
||
|
|
Key(XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0),
|
||
|
|
Key(XK_KP_Delete, ControlMask, "\033[M", -1, 0),
|
||
|
|
Key(XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0),
|
||
|
|
Key(XK_KP_Delete, ShiftMask, "\033[2K", -1, 0),
|
||
|
|
Key(XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0),
|
||
|
|
// TODO: Add the rest of the key mappings from fixkeyboardinput.c
|
||
|
|
];
|
||
|
|
}
|