在没有Alt代码的笔记本电脑上创建Alt代码



我的笔记本电脑有一个数字键盘,但它没有NumLock键,数字键盘实际上只是字母上方一行数字的副本。按下这些键时发送的虚拟钥匙代码会确认这一点。

我正在尝试开发一个小程序来模拟按下alt键和常规数字时的alt代码。我使用了一个低级键盘挂钩(我在另一个程序中也有类似的格式),首先检查alt键是否按下。如果是,我循环通过VK代码0x30-0x39(0-9键)。如果此时按下其中一个键,我会通过返回值1来放弃实际的击键,而是发送该键的numpad版本(此时仍按下alt)。

我可以确认挂钩正在到达,并且正在按下的alt键正在被成功识别。然而,当我在0-9上检查匹配项时,要么在没有匹配项之前只打印了几个,要么每次按下数字时都必须向上按下alt键。此外,在按下一个数字后释放alt,然后按住alt并按下另一个数字(这个数字是16x),一个数字可以打印16次。

此外,我可以通过从钩子中复制部分,将其放入主函数并用0x30替换I来确认SendInput序列是否有效。运行后,将在文本文档上键入0。

在文本文档中按住ALT(向下)+6+5+ALT(向上)时,显示"65"。如果我再加一个ALT(下降)+6,就会出现16个6。

挂钩程序:

LRESULT CALLBACK proc (int code, WPARAM wParam, LPARAM event) //hook proc
{
    if (code < HC_ACTION) //don't process if not meant to
        return CallNextHookEx (0, code, wParam, event); 
    if (GetAsyncKeyState (VK_MENU) & 0x8000) //if either alt is down
    {
        for (int i = 0x30; i <= 0x39; ++i) //loop 0-9
        {
            if (GetAsyncKeyState (i) & 0x8000) //if index is down
            {
                cout << "MATCHn"; //debug
                input.ki.wVk = i + 0x30; //set VK code to numpad version of index
                input.ki.dwFlags = 0; //key is being pressed
                SendInput (1, &input, sizeof (INPUT)); //send keystroke down
                input.ki.dwFlags = KEYEVENTF_KEYUP; //key is being released
                SendInput (1, &input, sizeof (INPUT)); //send keystroke up
                while (GetAsyncKeyState (i) & 0x8000) //wait for normal key to be released
                    Sleep (10); //don't hog CPU
                return 1; //discard normal key
            } //end if match
        } //end for
    } //end if alt
    return CallNextHookEx (0, code, wParam, event); //if any key not handled, pass on
} //end function

好吧,我终于回到了这个问题上,经过更多的测试,我发现以编程方式发送[ALT][num6][num5][ALT]什么都不做。我觉得这很奇怪,因为我可以模拟Mac键盘上的音量控制键,尽管没有这些键。

由于计算机根本无法发送alt代码,我宣布这个有用的工具彻底失败了,除非我映射数千个字符。

编辑:

以下是让数字键盘在G74SX-XA1:上工作所需的操作

  1. 下载BIOS 203(我不知道202是否有效,我从201到203)
  2. 将文件放在FAT32格式的闪存驱动器上
  3. 重新启动计算机,然后按F4直接进入EasyFlash,或者通过BIOS导航到它。附带的Winflash程序不起作用
  4. 在闪存驱动器上选择更新的BIOS文件
  5. 现在,数字锁指示灯将始终亮着,数字键盘将具有数字键盘的虚拟键代码,而不是字母上方的数字。这自然包括ALT代码的工作

最新更新