X Keycodes
.c
switch(key_event->detail)
{
// NOTE(ak): to get keycodes run `xmodmap -pk`
case 9:{key = Wl_Key_Esc;};break;
case 10:{key = Wl_Key_1;}break;
case 11:{key = Wl_Key_2;}break;
case 12:{key = Wl_Key_3;}break;
case 13:{key = Wl_Key_4;}break;
case 14:{key = Wl_Key_5;}break;
case 15:{key = Wl_Key_6;}break;
case 16:{key = Wl_Key_7;}break;
case 17:{key = Wl_Key_8;}break;
case 18:{key = Wl_Key_9;}break;
case 19:{key = Wl_Key_0;}break;
case 20:{key = Wl_Key_Minus;}break;
case 21:{key = Wl_Key_Equal;}break;
case 22:{key = Wl_Key_Backspace;}break;
case 23:{key = Wl_Key_Tab;}break;
case 24:{key = Wl_Key_Q;}break;
case 25:{key = Wl_Key_W;}break;
case 26:{key = Wl_Key_E;}break;
case 27:{key = Wl_Key_R;}break;
case 28:{key = Wl_Key_T;}break;
case 29:{key = Wl_Key_Y;}break;
case 30:{key = Wl_Key_U;}break;
case 31:{key = Wl_Key_I;}break;
case 32:{key = Wl_Key_O;}break;
case 33:{key = Wl_Key_P;}break;
case 34:{key = Wl_Key_LeftBracket;}break;
case 35:{key = Wl_Key_RightBracket;}break;
case 36:{key = Wl_Key_Return;}break;
case 37:{key = Wl_Key_CtrlLeft;}break;
case 38:{key = Wl_Key_A;}break;
case 39:{key = Wl_Key_S;}break;
case 40:{key = Wl_Key_D;}break;
case 41:{key = Wl_Key_F;}break;
case 42:{key = Wl_Key_G;}break;
case 43:{key = Wl_Key_H;}break;
case 44:{key = Wl_Key_J;}break;
case 45:{key = Wl_Key_K;}break;
case 46:{key = Wl_Key_L;}break;
case 47:{key = Wl_Key_Semicolon;}break;
case 48:{key = Wl_Key_Quote;}break;
case 49:{key = Wl_Key_Tick;}break;
case 50:{key = Wl_Key_ShiftLeft;}break;
case 51:{key = Wl_Key_BackSlash;}break;
case 52:{key = Wl_Key_Z;}break;
case 53:{key = Wl_Key_X;}break;
case 54:{key = Wl_Key_C;}break;
case 55:{key = Wl_Key_V;}break;
case 56:{key = Wl_Key_B;}break;
case 57:{key = Wl_Key_N;}break;
case 58:{key = Wl_Key_M;}break;
case 59:{key = Wl_Key_Comma;}break;
case 60:{key = Wl_Key_Period;}break;
case 61:{key = Wl_Key_Slash;}break;
case 62:{key = Wl_Key_ShiftRight;}break;
case 63:{key = Wl_Key_NumStar;}break;
case 64:{key = Wl_Key_AltLeft;}break;
case 65:{key = Wl_Key_Space;}break;
case 66:{key = Wl_Key_CapsLock;}break;
case 67:{key = Wl_Key_F1;}break;
case 68:{key = Wl_Key_F2;}break;
case 69:{key = Wl_Key_F3;}break;
case 70:{key = Wl_Key_F4;}break;
case 71:{key = Wl_Key_F5;}break;
case 72:{key = Wl_Key_F6;}break;
case 73:{key = Wl_Key_F7;}break;
case 74:{key = Wl_Key_F8;}break;
case 75:{key = Wl_Key_F9;}break;
case 76:{key = Wl_Key_F10;}break;
case 77:{key = Wl_Key_NumLock;}break;
case 78:{key = Wl_Key_ScrollLock;}break;
case 79:{key = Wl_Key_Num7;}break;
case 80:{key = Wl_Key_Num8;}break;
case 81:{key = Wl_Key_Num9;}break;
case 82:{key = Wl_Key_NumMinus;}break;
case 83:{key = Wl_Key_Num4;}break;
case 84:{key = Wl_Key_Num5;}break;
case 85:{key = Wl_Key_Num6;}break;
case 86:{key = Wl_Key_NumPlus;}break;
case 87:{key = Wl_Key_Num1;}break;
case 88:{key = Wl_Key_Num2;}break;
case 89:{key = Wl_Key_Num3;}break;
case 90:{key = Wl_Key_Num0;}break;
case 91:{key = Wl_Key_NumPeriod;}break;
// 92 ISO_Level3_Shift
// 93
// 94 less
case 95:{key = Wl_Key_F11;}break;
case 96:{key = Wl_Key_F12;}break;
// 97
// 98 Katakana
// 99 Hiragana
// 100 Henkan_Mode
// 101 Hiragana_Katakana
// 102 Muhenkan
// 103
case 104:{key = Wl_Key_NumReturn;}break;
case 105:{key = Wl_Key_CtrlRight;}break;
case 106:{key = Wl_Key_NumSlash;}break;
case 107:{key = Wl_Key_Print;}break;
case 108:{key = Wl_Key_AltRight;}break;
// 109 Linefeed
case 110:{key = Wl_Key_Home;}break;
case 111:{key = Wl_Key_Up;}break;
case 112:{key = Wl_Key_PageUp;}break;
case 113:{key = Wl_Key_Left;}break;
case 114:{key = Wl_Key_Right;}break;
case 115:{key = Wl_Key_End;}break;
case 116:{key = Wl_Key_Down;}break;
case 117:{key = Wl_Key_PageDown;}break;
case 118:{key = Wl_Key_Insert;}break;
case 119:{key = Wl_Key_Delete;}break;
// 120
case 121:{key = Wl_Key_AudioMute;}break;
case 122:{key = Wl_Key_AudioLowerVolume;}break;
case 123:{key = Wl_Key_AudioRaiseVolume;}break;
// 124 XF86PowerOff
// 125 KP_Equal
// 126 plusminus
case 127:{key = Wl_Key_Pause;}break;
// 128 XF86LaunchA
// 129 KP_Decimal
// 130 Hangul
// 131 Hangul_Hanja
// 132
case 133:{key = Wl_Key_SuperLeft;}break;
case 134:{key = Wl_Key_SuperRight;}break;
case 135:{key = Wl_Key_Menu;}break;
default:{}break;
}
event.key = key;
event.mod_key = mod_key;
break;
}