Browse Source

Merge branch 'keycodes-support' into svg

pull/141/head
Patrick Desaulniers 6 years ago
parent
commit
116aefffec
6 changed files with 312 additions and 166 deletions
  1. +134
    -0
      dgl/Base.hpp
  2. +0
    -0
      dgl/src/pugl/COPYING.keycode
  3. +129
    -129
      dgl/src/pugl/pugl.h
  4. +14
    -11
      dgl/src/pugl/pugl_osx.m
  5. +15
    -12
      dgl/src/pugl/pugl_win.cpp
  6. +20
    -14
      dgl/src/pugl/pugl_x11.c

+ 134
- 0
dgl/Base.hpp View File

@@ -86,6 +86,140 @@ enum Key {
kKeySuper
};

/**
Layout-independent keycodes.
These keycodes are relative to an US QWERTY keyboard.
Therefore, the keycode for the letter 'A' on an AZERTY keyboard will be equal to kKeyCodeQ.
*/
enum KeyCode {
/* Zero, does not correspond to any key. */
kKeyCodeNone = 0,

kKeyCodeA = 4,
kKeyCodeB = 5,
kKeyCodeC = 6,
kKeyCodeD = 7,
kKeyCodeE = 8,
kKeyCodeF = 9,
kKeyCodeG = 10,
kKeyCodeH = 11,
kKeyCodeI = 12,
kKeyCodeJ = 13,
kKeyCodeK = 14,
kKeyCodeL = 15,
kKeyCodeM = 16,
kKeyCodeN = 17,
kKeyCodeO = 18,
kKeyCodeP = 19,
kKeyCodeQ = 20,
kKeyCodeR = 21,
kKeyCodeS = 22,
kKeyCodeT = 23,
kKeyCodeU = 24,
kKeyCodeV = 25,
kKeyCodeW = 26,
kKeyCodeX = 27,
kKeyCodeY = 28,
kKeyCodeZ = 29,
kKeyCode1 = 30,
kKeyCode2 = 31,
kKeyCode3 = 32,
kKeyCode4 = 33,
kKeyCode5 = 34,
kKeyCode6 = 35,
kKeyCode7 = 36,
kKeyCode8 = 37,
kKeyCode9 = 38,
kKeyCode0 = 39,
kKeyCodeEscape = 41,
kKeyCodeDelete = 42,
kKeyCodeTab = 43,
kKeyCodeSpace = 44,
kKeyCodeMinus = 45,
kKeyCodeEquals = 46,
kKeyCodeLeftBracket = 47,
kKeyCodeRightBracket = 48,
kKeyCodeBackslash = 49,
kKeyCodeSemicolon = 51,
kKeyCodeQuote = 52,
kKeyCodeGrave = 53,
kKeyCodeComma = 54,
kKeyCodePeriod = 55,
kKeyCodeSlash = 56,
kKeyCodeCapsLock = 57,
kKeyCodeF1 = 58,
kKeyCodeF2 = 59,
kKeyCodeF3 = 60,
kKeyCodeF4 = 61,
kKeyCodeF5 = 62,
kKeyCodeF6 = 63,
kKeyCodeF7 = 64,
kKeyCodeF8 = 65,
kKeyCodeF9 = 66,
kKeyCodeF10 = 67,
kKeyCodeF11 = 68,
kKeyCodeF12 = 69,
kKeyCodePrintScreen = 70,
kKeyCodeScrollLock = 71,
kKeyCodePause = 72,
kKeyCodeInsert = 73,
kKeyCodeHome = 74,
kKeyCodePageUp = 75,
kKeyCodeDeleteForward = 76,
kKeyCodeEnd = 77,
kKeyCodePageDown = 78,
kKeyCodeRight = 79,
kKeyCodeLeft = 80,
kKeyCodeDown = 81,
kKeyCodeUp = 82,
kKeyCodeKP_NumLock = 83,
kKeyCodeKP_Divide = 84,
kKeyCodeKP_Multiply = 85,
kKeyCodeKP_Subtract = 86,
kKeyCodeKP_Add = 87,
kKeyCodeKP_Enter = 88,
kKeyCodeKP_1 = 89,
kKeyCodeKP_2 = 90,
kKeyCodeKP_3 = 91,
kKeyCodeKP_4 = 92,
kKeyCodeKP_5 = 93,
kKeyCodeKP_6 = 94,
kKeyCodeKP_7 = 95,
kKeyCodeKP_8 = 96,
kKeyCodeKP_9 = 97,
kKeyCodeKP_0 = 98,
kKeyCodePoint = 99,
kKeyCodeNonUSBackslash = 100,
kKeyCodeKP_Equals = 103,
kKeyCodeF13 = 104,
kKeyCodeF14 = 105,
kKeyCodeF15 = 106,
kKeyCodeF16 = 107,
kKeyCodeF17 = 108,
kKeyCodeF18 = 109,
kKeyCodeF19 = 110,
kKeyCodeF20 = 111,
kKeyCodeF21 = 112,
kKeyCodeF22 = 113,
kKeyCodeF23 = 114,
kKeyCodeF24 = 115,
kKeyCodeHelp = 117,
kKeyCodeMenu = 118,
kKeyCodeMute = 127,
kKeyCodeSysReq = 154,
kKeyCodeReturn = 158,
kKeyCodeKP_Clear = 216,
kKeyCodeKP_Decimal = 220,
kKeyCodeLeftControl = 224,
kKeyCodeLeftShift = 225,
kKeyCodeLeftAlt = 226,
kKeyCodeLeftGUI = 227,
kKeyCodeRightControl = 228,
kKeyCodeRightShift = 229,
kKeyCodeRightAlt = 230,
kKeyCodeRightGUI = 231
};

// -----------------------------------------------------------------------
// Base DGL classes



dgl/src/pugl/COPYING → dgl/src/pugl/COPYING.keycode View File


+ 129
- 129
dgl/src/pugl/pugl.h View File

@@ -124,136 +124,136 @@ typedef enum {

/**
Layout-independent keycodes.
These keycodes are relative to an US QWERTY keyboard.
Therefore, the keycode for the letter 'A' on an AZERTY keyboard will be equal to PUGL_VK_Q.
*/
These keycodes are relative to an US QWERTY keyboard.
Therefore, the keycode for the letter 'A' on an AZERTY keyboard will be equal to PUGL_KC_Q.
*/
typedef enum {
/* Zero, does not correspond to any key. */
PUGL_KC_None = 0,
PUGL_KC_A = 4,
PUGL_KC_B = 5,
PUGL_KC_C = 6,
PUGL_KC_D = 7,
PUGL_KC_E = 8,
PUGL_KC_F = 9,
PUGL_KC_G = 10,
PUGL_KC_H = 11,
PUGL_KC_I = 12,
PUGL_KC_J = 13,
PUGL_KC_K = 14,
PUGL_KC_L = 15,
PUGL_KC_M = 16,
PUGL_KC_N = 17,
PUGL_KC_O = 18,
PUGL_KC_P = 19,
PUGL_KC_Q = 20,
PUGL_KC_R = 21,
PUGL_KC_S = 22,
PUGL_KC_T = 23,
PUGL_KC_U = 24,
PUGL_KC_V = 25,
PUGL_KC_W = 26,
PUGL_KC_X = 27,
PUGL_KC_Y = 28,
PUGL_KC_Z = 29,
PUGL_KC_1 = 30,
PUGL_KC_2 = 31,
PUGL_KC_3 = 32,
PUGL_KC_4 = 33,
PUGL_KC_5 = 34,
PUGL_KC_6 = 35,
PUGL_KC_7 = 36,
PUGL_KC_8 = 37,
PUGL_KC_9 = 38,
PUGL_KC_0 = 39,
PUGL_KC_Escape = 41,
PUGL_KC_Delete = 42,
PUGL_KC_Tab = 43,
PUGL_KC_Space = 44,
PUGL_KC_Minus = 45,
PUGL_KC_Equals = 46,
PUGL_KC_LeftBracket = 47,
PUGL_KC_RightBracket = 48,
PUGL_KC_Backslash = 49,
PUGL_KC_Semicolon = 51,
PUGL_KC_Quote = 52,
PUGL_KC_Grave = 53,
PUGL_KC_Comma = 54,
PUGL_KC_Period = 55,
PUGL_KC_Slash = 56,
PUGL_KC_CapsLock = 57,
PUGL_KC_F1 = 58,
PUGL_KC_F2 = 59,
PUGL_KC_F3 = 60,
PUGL_KC_F4 = 61,
PUGL_KC_F5 = 62,
PUGL_KC_F6 = 63,
PUGL_KC_F7 = 64,
PUGL_KC_F8 = 65,
PUGL_KC_F9 = 66,
PUGL_KC_F10 = 67,
PUGL_KC_F11 = 68,
PUGL_KC_F12 = 69,
PUGL_KC_PrintScreen = 70,
PUGL_KC_ScrollLock = 71,
PUGL_KC_Pause = 72,
PUGL_KC_Insert = 73,
PUGL_KC_Home = 74,
PUGL_KC_PageUp = 75,
PUGL_KC_DeleteForward = 76,
PUGL_KC_End = 77,
PUGL_KC_PageDown = 78,
PUGL_KC_Right = 79,
PUGL_KC_Left = 80,
PUGL_KC_Down = 81,
PUGL_KC_Up = 82,
PUGL_KC_KP_NumLock = 83,
PUGL_KC_KP_Divide = 84,
PUGL_KC_KP_Multiply = 85,
PUGL_KC_KP_Subtract = 86,
PUGL_KC_KP_Add = 87,
PUGL_KC_KP_Enter = 88,
PUGL_KC_KP_1 = 89,
PUGL_KC_KP_2 = 90,
PUGL_KC_KP_3 = 91,
PUGL_KC_KP_4 = 92,
PUGL_KC_KP_5 = 93,
PUGL_KC_KP_6 = 94,
PUGL_KC_KP_7 = 95,
PUGL_KC_KP_8 = 96,
PUGL_KC_KP_9 = 97,
PUGL_KC_KP_0 = 98,
PUGL_KC_Point = 99,
PUGL_KC_NonUSBackslash = 100,
PUGL_KC_KP_Equals = 103,
PUGL_KC_F13 = 104,
PUGL_KC_F14 = 105,
PUGL_KC_F15 = 106,
PUGL_KC_F16 = 107,
PUGL_KC_F17 = 108,
PUGL_KC_F18 = 109,
PUGL_KC_F19 = 110,
PUGL_KC_F20 = 111,
PUGL_KC_F21 = 112,
PUGL_KC_F22 = 113,
PUGL_KC_F23 = 114,
PUGL_KC_F24 = 115,
PUGL_KC_Help = 117,
PUGL_KC_Menu = 118,
PUGL_KC_Mute = 127,
PUGL_KC_SysReq = 154,
PUGL_KC_Return = 158,
PUGL_KC_KP_Clear = 216,
PUGL_KC_KP_Decimal = 220,
PUGL_KC_LeftControl = 224,
PUGL_KC_LeftShift = 225,
PUGL_KC_LeftAlt = 226,
PUGL_KC_LeftGUI = 227,
PUGL_KC_RightControl = 228,
PUGL_KC_RightShift = 229,
PUGL_KC_RightAlt = 230,
PUGL_KC_RightGUI = 231
/* Zero, does not correspond to any key. */
PUGL_KC_None = 0,
PUGL_KC_A = 4,
PUGL_KC_B = 5,
PUGL_KC_C = 6,
PUGL_KC_D = 7,
PUGL_KC_E = 8,
PUGL_KC_F = 9,
PUGL_KC_G = 10,
PUGL_KC_H = 11,
PUGL_KC_I = 12,
PUGL_KC_J = 13,
PUGL_KC_K = 14,
PUGL_KC_L = 15,
PUGL_KC_M = 16,
PUGL_KC_N = 17,
PUGL_KC_O = 18,
PUGL_KC_P = 19,
PUGL_KC_Q = 20,
PUGL_KC_R = 21,
PUGL_KC_S = 22,
PUGL_KC_T = 23,
PUGL_KC_U = 24,
PUGL_KC_V = 25,
PUGL_KC_W = 26,
PUGL_KC_X = 27,
PUGL_KC_Y = 28,
PUGL_KC_Z = 29,
PUGL_KC_1 = 30,
PUGL_KC_2 = 31,
PUGL_KC_3 = 32,
PUGL_KC_4 = 33,
PUGL_KC_5 = 34,
PUGL_KC_6 = 35,
PUGL_KC_7 = 36,
PUGL_KC_8 = 37,
PUGL_KC_9 = 38,
PUGL_KC_0 = 39,
PUGL_KC_Escape = 41,
PUGL_KC_Delete = 42,
PUGL_KC_Tab = 43,
PUGL_KC_Space = 44,
PUGL_KC_Minus = 45,
PUGL_KC_Equals = 46,
PUGL_KC_LeftBracket = 47,
PUGL_KC_RightBracket = 48,
PUGL_KC_Backslash = 49,
PUGL_KC_Semicolon = 51,
PUGL_KC_Quote = 52,
PUGL_KC_Grave = 53,
PUGL_KC_Comma = 54,
PUGL_KC_Period = 55,
PUGL_KC_Slash = 56,
PUGL_KC_CapsLock = 57,
PUGL_KC_F1 = 58,
PUGL_KC_F2 = 59,
PUGL_KC_F3 = 60,
PUGL_KC_F4 = 61,
PUGL_KC_F5 = 62,
PUGL_KC_F6 = 63,
PUGL_KC_F7 = 64,
PUGL_KC_F8 = 65,
PUGL_KC_F9 = 66,
PUGL_KC_F10 = 67,
PUGL_KC_F11 = 68,
PUGL_KC_F12 = 69,
PUGL_KC_PrintScreen = 70,
PUGL_KC_ScrollLock = 71,
PUGL_KC_Pause = 72,
PUGL_KC_Insert = 73,
PUGL_KC_Home = 74,
PUGL_KC_PageUp = 75,
PUGL_KC_DeleteForward = 76,
PUGL_KC_End = 77,
PUGL_KC_PageDown = 78,
PUGL_KC_Right = 79,
PUGL_KC_Left = 80,
PUGL_KC_Down = 81,
PUGL_KC_Up = 82,
PUGL_KC_KP_NumLock = 83,
PUGL_KC_KP_Divide = 84,
PUGL_KC_KP_Multiply = 85,
PUGL_KC_KP_Subtract = 86,
PUGL_KC_KP_Add = 87,
PUGL_KC_KP_Enter = 88,
PUGL_KC_KP_1 = 89,
PUGL_KC_KP_2 = 90,
PUGL_KC_KP_3 = 91,
PUGL_KC_KP_4 = 92,
PUGL_KC_KP_5 = 93,
PUGL_KC_KP_6 = 94,
PUGL_KC_KP_7 = 95,
PUGL_KC_KP_8 = 96,
PUGL_KC_KP_9 = 97,
PUGL_KC_KP_0 = 98,
PUGL_KC_Point = 99,
PUGL_KC_NonUSBackslash = 100,
PUGL_KC_KP_Equals = 103,
PUGL_KC_F13 = 104,
PUGL_KC_F14 = 105,
PUGL_KC_F15 = 106,
PUGL_KC_F16 = 107,
PUGL_KC_F17 = 108,
PUGL_KC_F18 = 109,
PUGL_KC_F19 = 110,
PUGL_KC_F20 = 111,
PUGL_KC_F21 = 112,
PUGL_KC_F22 = 113,
PUGL_KC_F23 = 114,
PUGL_KC_F24 = 115,
PUGL_KC_Help = 117,
PUGL_KC_Menu = 118,
PUGL_KC_Mute = 127,
PUGL_KC_SysReq = 154,
PUGL_KC_Return = 158,
PUGL_KC_KP_Clear = 216,
PUGL_KC_KP_Decimal = 220,
PUGL_KC_LeftControl = 224,
PUGL_KC_LeftShift = 225,
PUGL_KC_LeftAlt = 226,
PUGL_KC_LeftGUI = 227,
PUGL_KC_RightControl = 228,
PUGL_KC_RightShift = 229,
PUGL_KC_RightAlt = 230,
PUGL_KC_RightGUI = 231
} PuglKeyCodes;

/**


+ 14
- 11
dgl/src/pugl/pugl_osx.m View File

@@ -121,22 +121,25 @@ getModifiers(PuglView* view, NSEvent* ev)
return mods;
}

static unsigned
/**
Convert system specific keycodes into system independent ones (PuglKeyCodes)
*/
static unsigned
scancodeToHID(unsigned scancode)
{
const unsigned char KEYCODE_MACOS_TO_HID[128] = {
4,22,7,9,11,10,29,27,6,25,0,5,20,26,8,21,28,23,30,31,32,33,35,34,46,38,36,
45,37,39,48,18,24,47,12,19,158,15,13,52,14,51,49,54,56,17,16,55,43,44,53,42,
0,41,231,227,225,57,226,224,229,230,228,0,108,220,0,85,0,87,0,216,0,0,127,
84,88,0,86,109,110,103,98,89,90,91,92,93,94,95,111,96,97,0,0,0,62,63,64,60,
65,66,0,68,0,104,107,105,0,67,0,69,0,106,117,74,75,76,61,77,59,78,58,80,79,
81,82,0
static const unsigned char KEYCODE_MACOS_TO_HID[128] = {
4,22,7,9,11,10,29,27,6,25,0,5,20,26,8,21,28,23,30,31,32,33,35,34,46,38,36,
45,37,39,48,18,24,47,12,19,158,15,13,52,14,51,49,54,56,17,16,55,43,44,53,42,
0,41,231,227,225,57,226,224,229,230,228,0,108,220,0,85,0,87,0,216,0,0,127,
84,88,0,86,109,110,103,98,89,90,91,92,93,94,95,111,96,97,0,0,0,62,63,64,60,
65,66,0,68,0,104,107,105,0,67,0,69,0,106,117,74,75,76,61,77,59,78,58,80,79,
81,82,0
};

if (scancode >= 128)
return 0;
if (scancode >= 128)
return 0;

return KEYCODE_MACOS_TO_HID[scancode];
return KEYCODE_MACOS_TO_HID[scancode];
}

static int


+ 15
- 12
dgl/src/pugl/pugl_win.cpp View File

@@ -377,24 +377,27 @@ setModifiers(PuglView* view)
view->mods |= (GetKeyState(VK_RWIN) < 0) ? PUGL_MOD_SUPER : 0;
}

/**
Convert system specific keycodes into system independent ones (PuglKeyCodes)
*/
static unsigned
keycodeToHID(unsigned keycode)
{
const unsigned char KEYCODE_WINDOWS_TO_HID[256] = {
0,41,30,31,32,33,34,35,36,37,38,39,45,46,42,43,20,26,8,21,23,28,24,12,18,19,
47,48,158,224,4,22,7,9,10,11,13,14,15,51,52,53,225,49,29,27,6,25,5,17,16,54,
55,56,229,0,226,0,57,58,59,60,61,62,63,64,65,66,67,72,71,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,68,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,230,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,74,82,75,0,80,0,79,0,77,81,78,73,76,0,0,0,0,0,0,0,227,231,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
static const unsigned char KEYCODE_WINDOWS_TO_HID[256] = {
0,41,30,31,32,33,34,35,36,37,38,39,45,46,42,43,20,26,8,21,23,28,24,12,18,19,
47,48,158,224,4,22,7,9,10,11,13,14,15,51,52,53,225,49,29,27,6,25,5,17,16,54,
55,56,229,0,226,0,57,58,59,60,61,62,63,64,65,66,67,72,71,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,68,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,230,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,74,82,75,0,80,0,79,0,77,81,78,73,76,0,0,0,0,0,0,0,227,231,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};

if (keycode >= 256)
return 0;
if (keycode >= 256)
return 0;
return KEYCODE_WINDOWS_TO_HID[keycode];
return KEYCODE_WINDOWS_TO_HID[keycode];
}

static LRESULT


+ 20
- 14
dgl/src/pugl/pugl_x11.c View File

@@ -486,30 +486,36 @@ setModifiers(PuglView* view, unsigned xstate, unsigned xtime)
view->mods |= (xstate & Mod4Mask) ? PUGL_MOD_SUPER : 0;
}

/**
convert system specific keycodes into system independent ones (PuglKeyCodes)
*/
static unsigned
scancodeToHID(unsigned scancode)
{
const unsigned char KEYCODE_LINUX_TO_HID[256] = {
0,41,30,31,32,33,34,35,36,37,38,39,45,46,42,43,20,26,8,21,23,28,24,12,18,19,
47,48,158,224,4,22,7,9,10,11,13,14,15,51,52,53,225,49,29,27,6,25,5,17,16,54,
55,56,229,85,226,44,57,58,59,60,61,62,63,64,65,66,67,83,71,95,96,97,86,92,
93,94,87,89,90,91,98,99,0,0,100,68,69,0,0,0,0,0,0,0,88,228,84,154,230,0,74,
82,75,80,79,77,81,78,73,76,0,0,0,0,0,103,0,72,0,0,0,0,0,227,231,0,0,0,0,0,0,
0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,104,105,106,107,108,109,110,111,112,113,114,115,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
static const unsigned char KEYCODE_LINUX_TO_HID[256] = {
0,41,30,31,32,33,34,35,36,37,38,39,45,46,42,43,20,26,8,21,23,28,24,12,18,19,
47,48,158,224,4,22,7,9,10,11,13,14,15,51,52,53,225,49,29,27,6,25,5,17,16,54,
55,56,229,85,226,44,57,58,59,60,61,62,63,64,65,66,67,83,71,95,96,97,86,92,
93,94,87,89,90,91,98,99,0,0,100,68,69,0,0,0,0,0,0,0,88,228,84,154,230,0,74,
82,75,80,79,77,81,78,73,76,0,0,0,0,0,103,0,72,0,0,0,0,0,227,231,0,0,0,0,0,0,
0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,104,105,106,107,108,109,110,111,112,113,114,115,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};

//On Linux, the keycodes are offset by KEYCODE_EVDEV_OFFSET when they are sent by evdev
const unsigned KEYCODE_EVDEV_OFFSET = 8;
static const unsigned KEYCODE_EVDEV_OFFSET = 8;

if (scancode < KEYCODE_EVDEV_OFFSET)
return 0;

scancode -= KEYCODE_EVDEV_OFFSET;

if (scancode >= 256)
return 0;
if (scancode >= 256)
return 0;

return KEYCODE_LINUX_TO_HID[scancode];
return KEYCODE_LINUX_TO_HID[scancode];
}

static void


Loading…
Cancel
Save