2014-01-20 2 views
0

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

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

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, мне нужно использовать внутренний Linux API (или POSIX), то API X11 или инструментарий конкретного API? (как Qt). Спасибо.

ответ

1

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

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

Смежные вопросы