当前位置:首页 > Code > 正文内容

键盘scancode和usage id的转换

许玮6年前 (2018-11-27)Code2044
static const qint32 Scancode_Usageid_map[][2]
={
{0x1e,0x04},{0x30,0x05},{0x2e,0x06},{0x20,0x07},{0x12,0x08},{0x21,0x09},{0x22,0x0a},{0x23,0x0b}, //abcdefgh
{0x17,0x0c},{0x24,0x0d},{0x25,0x0e},{0x26,0x0f},{0x32,0x10},{0x31,0x11},{0x18,0x12},{0x19,0x13}, //ijklmnop
{0x10,0x14},{0x13,0x15},{0x1f,0x16},{0x14,0x17},{0x16,0x18},{0x2f,0x19},{0x11,0x1a},{0x2d,0x1b}, //qrstuvwx
{0x15,0x1c},{0x2c,0x1d}, //yz
{0x02,0x1e},{0x03,0x1f},{0x04,0x20},{0x05,0x21},{0x06,0x22},{0x07,0x23},{0x08,0x24},{0x09,0x25}, //12345678
{0x0a,0x26},{0x0b,0x27},                                                 //90
{0x1c,0x28},{0x01,0x29},{0x0e,0x2a},{0x0f,0x2b},{0x39,0x2c},{0x0c,0x2d},{0x0d,0x2e},{0x1a,0x2f}, //Enter Esc Backspace Tab Space - = [
{0x1b,0x30},{0x2b,0x31},{0x27,0x33},{0x28,0x34},{0x29,0x35},{0x33,0x36},{0x34,0x37}, //] \ ; ' ~ , . /
{0x35,0x38},{0x3a,0x39}, //? Caps
{0x3b,0x3a},{0x3c,0x3b},{0x3d,0x3c},{0x3e,0x3d},{0x3f,0x3e},{0x40,0x3f},{0x41,0x40},{0x42,0x41}, //F1-F8
{0x43,0x42},{0x44,0x43},{0x57,0x44},{0x58,0x45},                                                 //F9-F12
{0x37,0x46},{0x46,0x47},{0x45,0x48}, //Print Scroll Pause
{0x52,0x49},{0x47,0x4a},{0x49,0x4b},{0x53,0x4c},{0x4f,0x4d},{0x51,0x4e}, //Insert Home P_up Delete End P_down
{0x4d,0x4f},{0x4b,0x50},{0x50,0x51},{0x48,0x52},                                                 //r l down up
{0xe1,0x53},{0xe2,0x54},{0xe3,0x55},{0x4A,0x56},{0x4e,0x57},{0xe5,0x58},                         //NumLock / * - + NumEnter
{0xe6,0x59},{0xe7,0x5a},{0xe8,0x5b},{0xe9,0x5c},{0x4c,0x5d},{0xea,0x5e},{0xeb,0x5f},{0xec,0x60}, //Num1-Num8
{0xe4,0x61},{0xed,0x62},{0xe0,0x63},{0x5d,0x65}, //Num9 Num0 NumDelApp
{0x2a,0xe1},{0x1d,0xe0},{0x5b,0xe3},{0x38,0xe2},{0x38,0xe6},{0x5c,0xe7},{0x1d,0xe4},{0x36,0xe5}  //Shift ctrl win alt
};


bool TanslateScan2Uid(qint32 iScanCode,qint32 & UsageID)
{
    bool bRet=false;
    qint32 iCount;
    iCount= sizeof(Scancode_Usageid_map)/sizeof(Scancode_Usageid_map[0]);
    for(qint32 i=0;i<iCount;i++)
    {
        if(Scancode_Usageid_map[i][0]==iScanCode)
        {
            UsageID=Scancode_Usageid_map[i][1];
            bRet=true;
        }
    }
    return bRet;
}


bool TanslateUid2Scan(qint32  UsageID,qint32 & iScanCode)
{
    bool bRet=false;
    qint32 iCount;
    iCount= sizeof(Scancode_Usageid_map)/sizeof(Scancode_Usageid_map[0]);
    for(qint32 i=0;i<iCount;i++)
    {
        if(Scancode_Usageid_map[i][1] ==  UsageID)
        {
            iScanCode=Scancode_Usageid_map[i][0];
            bRet=true;
        }
    }
    return bRet;
}


扫描二维码推送至手机访问。

版权声明:本文由Will编程学习之路发布,如需转载请注明出处。

本文链接:http://willhsu.com/?id=13

标签: QT
分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。