Получите клавиши с кодами клавиш клавиатуры в Linux

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

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

  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). Спасибо.


person Cristopher Sosa    schedule 20.01.2014    source источник


Ответы (1)