【问题标题】:Detecting certain keys on an AZERTY keyboard?检测到 AZERTY 键盘上的某些键?
【发布时间】:2012-05-28 08:27:34
【问题描述】:

我在检测按键的程序中遇到问题。所有字符都在 QUERTY 键盘上工作,但我知道 AZERTY 键盘上的某些字符存在问题。

例如,当在 AZERTY 键盘上按下 \ 时,会得到 226 (â) 的键码。

如何确保键盘布局的行为一致?我希望内置的事件处理是一致的。

【问题讨论】:

  • 您也许可以检查按键布局。我不知道功能。问:现在还有人用谷歌吗?
  • 向我们展示你是如何掌握按键的
  • 我正在使用 RichTextBox 的标准 KeyDown 事件并检查 e.KeyCode。
  • 我刚刚注意到 KeyPress 事件按预期工作。但是,我需要使用 KeyDown 事件进行处理:(
  • 对于现在还在纠结这个问题的人来说,如何准确地从键码中获取字符的答案是here。不过,我不会将十年前的问题标记为重复。

标签: c# keyboard keyboard-events regional-settings azerty-keyboard


【解决方案1】:

您可能想先detect the keyboard layout,然后使用不同的键码到字符映射。

【讨论】:

    【解决方案2】:

    我根本无法重现。通过按住 AltGr 然后在字母上方的数字行上按 8 键在 AZERTY 键盘上组成反斜杠。当您这样做时,会触发以下 KeyDown 事件:

    • KeyCode:Menu,KeyValue:18 表示 AltGr 向下
    • KeyCode:D8,KeyValue:56 表示 8 下降

    另一方面,如果您立即按下 W 左侧的键,则会触发带有 KeyCode OemBackslash 和 KeyValue 226 的 KeyDown,并且文本中会出现 < 字符盒子。

    我想知道您的键盘布局是否设置不正确以匹配您的特定键盘。我假设你的键盘看起来像这个维基百科页面上的图像:http://en.wikipedia.org/wiki/AZERTY

    【讨论】:

      【解决方案3】:

      是的,不同的键盘布局会给出不同的键码。 documentationVK_OEM_102(键码 226)描述为 "<>" or "\|" on RT 102-key keyboard,因此键码甚至不应该对应于单个特定字符。

      要查看某个键对应的字符,请使用MapVirtualKey 函数。然后您可以检查它是否是反斜杠。

      【讨论】:

        猜你喜欢
        • 2020-07-29
        • 2018-01-19
        • 2018-03-28
        • 2016-01-19
        • 1970-01-01
        • 2014-02-07
        • 2021-11-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多