Получить ключи клавиш клавиатуры в Linux

Мне нужно получить коды клавиш с клавиатуры (но после) в Linux, я смог найти
только коды клавиш в Windows.

Используя enum, я могу сделать его кроссплатформенным, вот кусок (не полный, слишком большой)
код перечисления:

  enum e_IWEKey
{
Unknown = 0,

// Digits / Numbers
D0,
D1,
D2,
D3,
D4,
D5,
D6,
D7,
D8,
D9,

// Letters
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
}

А здесь еще один кусок соответствующих кодов Win32API.

    #ifdef _WIN32
# include <WinUser.h>

inline e_IWEKey getKey(uchar OSKey)
{
switch (OSKey)
{
// Digits / Numbers
case 0x30: return IWEKeys::D0;
case 0x31: return IWEKeys::D1;
case 0x32: return IWEKeys::D2;
case 0x33: return IWEKeys::D3;
case 0x34: return IWEKeys::D4;
case 0x35: return IWEKeys::D5;
case 0x36: return IWEKeys::D6;
case 0x37: return IWEKeys::D7;
case 0x38: return IWEKeys::D8;
case 0x39: return IWEKeys::D9;

// Letters
case 0x41: return IWEKeys::A;
case 0x42: return IWEKeys::B;
case 0x43: return IWEKeys::C;
case 0x44: return IWEKeys::D;
case 0x45: return IWEKeys::E;
case 0x46: return IWEKeys::F;
case 0x47: return IWEKeys::G;
case 0x48: return IWEKeys::H;
case 0x49: return IWEKeys::I;
case 0x4A: return IWEKeys::J;
case 0x4B: return IWEKeys::K;
case 0x4C: return IWEKeys::L;
case 0x4D: return IWEKeys::M;
case 0x4E: return IWEKeys::N;
case 0x4F: return IWEKeys::O;
case 0x50: return IWEKeys::P;
case 0x51: return IWEKeys::Q;
case 0x52: return IWEKeys::R;
case 0x53: return IWEKeys::S;
case 0x54: return IWEKeys::T;
case 0x55: return IWEKeys::U;
case 0x56: return IWEKeys::V;
case 0x57: return IWEKeys::W;
case 0x58: return IWEKeys::X;
case 0x59: return IWEKeys::Y;
case 0x5A: return IWEKeys::Z;

// Function Keys
case VK_F1: return IWEKeys::F1;
case VK_F2: return IWEKeys::F2;
case VK_F3: return IWEKeys::F3;
case VK_F4: return IWEKeys::F4;
case VK_F5: return IWEKeys::F5;
case VK_F6: return IWEKeys::F6;
case VK_F7: return IWEKeys::F7;
case VK_F8: return IWEKeys::F8;
case VK_F9: return IWEKeys::F9;
case VK_F10: return IWEKeys::F10;
case VK_F11: return IWEKeys::F11;
case VK_F12: return IWEKeys::F12;
case VK_F13: return IWEKeys::F13;
case VK_F14: return IWEKeys::F14;
case VK_F15: return IWEKeys::F15;
case VK_F16: return IWEKeys::F16;
case VK_F17: return IWEKeys::F17;
case VK_F18: return IWEKeys::F18;
case VK_F19: return IWEKeys::F19;
case VK_F20: return IWEKeys::F20;
case VK_F21: return IWEKeys::F21;
case VK_F22: return IWEKeys::F22;
case VK_F23: return IWEKeys::F23;
case VK_F24: return IWEKeys::F24;
}
}
#endif

но я никогда не нахожу коды клавиш Linux, мне нужно использовать внутренний API-интерфейс Linux (или POSIX), API-интерфейс X11 или API для конкретного инструментария? (как Qt).
Благодарю.

0

Решение

Если вы можете использовать QT, есть Qt :: Key enum.

Основываясь на том, как ключи определены в qt, я думаю, что коды клавиш не будут меняться между Linux и Windows …

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]