C++ 在Linux中获取键盘键代码
我需要从键盘输入中获取键码(但在Linux中之后),我能够找到 按键密码仅在Windows中可用 使用枚举,我可以使它跨平台,这里是一块(不完整,太大)的 枚举代码:C++ 在Linux中获取键盘键代码,c++,linux,qt,enums,keycode,C++,Linux,Qt,Enums,Keycode,我需要从键盘输入中获取键码(但在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, } 这里还有另一
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
\ifdef\u WIN32
#包括
内联e_IWEKey getKey(uchar OSKey)
{
开关(OSKey)
{
//数字/数字
案例0x30:返回IWEKeys::D0;
案例0x31:返回IWEKeys::D1;
案例0x32:返回IWEKeys::D2;
案例0x33:返回IWEKeys::D3;
案例0x34:返回IWEKeys::D4;
案例0x35:返回IWEKeys::D5;
案例0x36:返回IWEKeys::D6;
案例0x37:返回IWEKeys::D7;
案例0x38:返回IWEKeys::D8;
案例0x39:返回IWEKeys::D9;
//信件
案例0x41:返回IWEKeys::A;
案例0x42:返回IWEKeys::B;
案例0x43:返回IWEKeys::C;
案例0x44:返回IWEKeys::D;
案例0x45:返回IWEKeys::E;
案例0x46:返回IWEKeys::F;
案例0x47:返回IWEKeys::G;
案例0x48:返回IWEKeys::H;
案例0x49:返回IWEKeys::I;
案例0x4A:返回IWEKeys::J;
案例0x4B:返回IWEKeys::K;
案例0x4C:返回IWEKeys::L;
案例0x4D:返回IWEKeys::M;
案例0x4E:返回IWEKeys::N;
案例0x4F:返回IWEKeys::O;
案例0x50:返回IWEKeys::P;
案例0x51:返回IWEKeys::Q;
案例0x52:返回IWEKeys::R;
案例0x53:返回IWEKeys::S;
案例0x54:返回IWEKeys::T;
案例0x55:返回IWEKeys::U;
案例0x56:返回IWEKeys::V;
案例0x57:返回IWEKeys::W;
案例0x58:返回IWEKeys::X;
案例0x59:返回IWEKeys::Y;
案例0x5A:返回IWEKeys::Z;
//功能键
案例VK_F1:返回IWEKeys::F1;
案例VK_F2:返回IWEKeys::F2;
案例VK_F3:返回IWEKeys::F3;
案例VK_F4:返回IWEKeys::F4;
案例VK_F5:返回IWEKeys::F5;
案例VK_F6:返回IWEKeys::F6;
案例VK_F7:返回IWEKeys::F7;
案例VK_F8:返回IWEKeys::F8;
案例VK_F9:返回IWEKeys::F9;
案例VK_F10:返回IWEKeys::F10;
案例VK_F11:返回IWEKeys::F11;
案例VK_F12:返回IWEKeys::F12;
案例VK_F13:返回IWEKeys::F13;
案例VK_F14:返回IWEKeys::F14;
案例VK_F15:返回IWEKeys::F15;
案例VK_F16:返回IWEKeys::F16;
案例VK_F17:返回IWEKeys::F17;
案例VK_F18:返回IWEKeys::F18;
案例VK_F19:返回IWEKeys::F19;
案例VK_F20:返回IWEKeys::F20;
案例VK_F21:返回IWEKeys::F21;
案例VK_F22:返回IWEKeys::F22;
案例VK_F23:返回IWEKeys::F23;
案例VK_F24:返回IWEKeys::F24;
}
}
#恩迪夫
但是我从来没有找到Linux密钥码,我需要使用内部Linux API(或POSIX)、X11 API或特定于工具箱的API?(如Qt)。
谢谢。如果您可以使用qt,那么就有了 基于qt中键的定义,我认为在linux和windows之间键代码不会改变