使用 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 {
    // 没有找到
}
C++ 键盘按键映射表 - std::map<int, QString> 使用示例

原文地址: https://www.cveoy.top/t/topic/ntKH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录