全局热键注册的修改器密钥代码

时间:2012-11-07 23:28:57

标签: c# global-hotkey

我正在将USB遥控器连接到我的软件,并且需要注册全局热键才能使用它。我有代码,它按预期工作,但当我挂起遥控器时,我发现它在处理修改键时需要特定的左或右Alt。

换句话说,现在我将全局热键设置为接受ALT + SHIFT + 0来运行特定功能。当我挂上遥控器时,我意识到他们的映射需要识别特定的Key修饰符。因此,我需要专门搜索L-ALT + L-SHIFT + 0.我搜索了这些修改器映射,但是找不到任何说明它们的东西。我只能找到一般ALT键的修饰符,而不是特定的L-ALT修饰符。

目前,我的钥匙定义如下:

    public const int NOMOD = 0x0000;            //  No HotKey
    public const int ALT = 0x0001;              //  ALT
    public const int CTRL = 0x0002;             //  CTRL
    public const int SHIFT = 0x0004;            //  SHIFT
    public const int WIN = 0x0008;              //  WIN button
    public const int WM_HOTKEY_MSG_ID = 0x0312; //  Windows message ID for HotKey

我试图找到L-Alt,L-CTRL和L-Shift代码的映射,但是没有成功。它们似乎不是ASCII。有谁知道这些的正确代码,或者我能找到它们的地方?感谢。

2 个答案:

答案 0 :(得分:0)

我输入Keys并点击F12转到定义,它已将alt和right alt列为LMenuRMenu,其值为164和165.这有用吗?你或我完全在错误的地方寻找。

答案 1 :(得分:0)

其他研究表明,您无法使用特定的SHIFT,ALT和CTRL键映射全局热键。但是,在经过大量实验并重新阅读远程文档后,我发现他们没有使用标准的ASCII密钥映射作为密钥。他们将左上方的键标记为0,然后向下计数,然后向下计数到右下方的键。因此,0映射到ESC,在我的情况下,18映射到1键。