C++ 键盘按键映射表 - std::map<int, QString> 使用示例
使用 std::map<int, QString> lanrenAPI::keyMap 创建一个键盘按键映射表,其中键值对的 key 是按键的数字代码,value 是按键的名称。
std::map<int, QString> lanrenAPI::keyMap = {
{1, 'Ctrl键状态'},
{2, 'Shift键状态'},
{3, 'Break键'},
{4, 'Alt键状态'},
{8, '退格键'},
{9, 'Tab键'},
{13, '回车键'},
{16, 'Shift键'},
{17, 'Ctrl键'},
{18, 'Alt键'},
{19, 'Pause键'},
{20, 'CapsLock键'},
{27, 'Esc键'},
{32, '空格键'},
{33, 'PageUp键'},
{34, 'PageDown键'},
{35, 'End键'},
{36, 'Home键'},
{37, '左光标键'},
{38, '上光标键'},
{39, '右光标键'},
{40, '下光标键'},
{45, 'Ins键'},
{46, 'Del键'},
{48, '键0'},
{49, '键1'},
{50, '键2'},
{51, '键3'},
{52, '键4'},
{53, '键5'},
{54, '键6'},
{55, '键7'},
{56, '键8'},
{57, '键9'},
{65, 'A键'},
{66, 'B键'},
{67, 'C键'},
{68, 'D键'},
{69, 'E键'},
{70, 'F键'},
{71, 'G键'},
{72, 'H键'},
{73, 'I键'},
{74, 'J键'},
{75, 'K键'},
{76, 'L键'},
{77, 'M键'},
{78, 'N键'},
{79, 'O键'},
{80, 'P键'},
{81, 'Q键'},
{82, 'R键'},
{83, 'S键'},
{84, 'T键'},
{85, 'U键'},
{86, 'V键'},
{87, 'W键'},
{88, 'X键'},
{89, 'Y键'},
{90, 'Z键'},
{112, 'F1键'},
{113, 'F2键'},
{114, 'F3键'},
{115, 'F4键'},
{116, 'F5键'},
{117, 'F6键'},
{118, 'F7键'},
{119, 'F8键'},
{120, 'F9键'},
{121, 'F10键'},
{122, 'F11键'},
{123, 'F12键'},
{124, 'F13键'},
{125, 'F14键'},
{126, 'F15键'},
{127, 'F16键'},
{144, 'NumLock键'},
{145, 'ScrollLock键'},
{186, '分号键'},
{187, '等号键'},
{188, '逗号键'},
{189, '减号键'},
{190, '圆点键'},
{191 ,'除号键'},
{192, '反撇号键'},
{219, '左中括号键'},
{220, '右中括号键'},
{221, '斜杠键'},
{222, '单引号键'}
};
如何查找按键对应的数字代码?
可以使用 std::find_if 算法来查找。以下是一个示例代码,用于查找 value 为 'Ctrl键状态' 的键值对的 key:
auto it = std::find_if(keyMap.begin(), keyMap.end(), [](const auto& pair) {
return pair.second == 'Ctrl键状态';
});
if (it != keyMap.end()) {
int key = it->first;
// 处理 key 值
} else {
// 没有找到
}
原文地址: https://www.cveoy.top/t/topic/ntKH 著作权归作者所有。请勿转载和采集!