【问题标题】:How to globally map AltGr key to Alt key?如何将 AltGr 键全局映射到 Alt 键?
【发布时间】:2010-09-18 18:45:36
【问题描述】:

我希望我的 AltGr 键的行为与左 Alt 完全相同。
通常,我用Autohotkey 做这种事情,但我对不同的解决方案持开放态度。

我试过了:

LControl & RAlt::Alt

并且 Autohotkey 显示有关 Alt 未被识别操作的错误。
然后我尝试了以下代码:

LControl & RAlt::
  Send {Alt down}
  KeyWait LCtrl
  KeyWait Ralt
  Send {Alt up}
return

哪种有效 - 我可以使用 AltGr 键来访问热键,但它的行为仍然不同:
当我按下并释放左 Alt 时,当前程序中的第一个菜单项获得焦点。
使用此脚本按下和释放 AltGr 不会执行任何操作。

有什么想法吗?这甚至可以使用 Autohotkey 吗? (将右 CtrlShift 重新映射到它们的左兄弟是小菜一碟)


注意:我尝试在代码中将Alt 切换为LAlt,但没有任何区别。

【问题讨论】:

    标签: windows keyboard-shortcuts autohotkey


    【解决方案1】:

    谢谢大家的回答。我无法使用 AutoHotkey 解决这个问题——PhilLho 的答案很接近,但我确实需要与左 Alt 键完全相同的行为。

    但是,registry thing 实际上可以满足我的需要。

    将此保存为 AltGR_to_LeftAlt.reg 文件并运行它:

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
    "Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,38,00,38,e0,00,00,00,00
    

    或者,有一个 GUI 工具可以为您执行此操作 - 它被称为 SharpKeys 并且工作得很好:

    哦,别忘了重启或注销——在那之前它不会工作!

    【讨论】:

    • 这个答案是错误的:SharpKeys 不支持 Alt Gr。 (sharpkeys.codeplex.com/workitem/10375)
    • Right Alt 作为AltGr 的替代品用于我的目的(将训练营Cmd 重新映射到AltGr),唯一的区别是我必须从列表中手动选择它。 “右 Alt 键通常相当于 AltGr 键” - en.wikipedia.org/wiki/AltGr_key
    • 这个答案是正确的。我已经成功地用 SharpKeys 重新映射了我的 mac 键盘上的左右 ALT 键。您需要两个映射,一个用于 left<=>rightright<=>left 交换 ALT 键。
    【解决方案2】:

    正如 PhiLho 所指出的,Windows 提供了一种通过注册表键 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 重新映射任何键的方法。可以在Scan Code Mapper for Windows 找到基本概述。更好的描述可能是Answers to Scancode Mapping or Changing Key Values

    我正在使用这种方法将Windows Key 放在Caps Lock 上,因为我的键盘没有Windows Key,我也不需要Caps Lock

    【讨论】:

    • 因为我不应该在我的工作机器上添加软件,所以这真的很有用。我使用 Scan Code Mapper for Windows 链接将 Caps 映射到 Ctrl,然后在"Is it worth swapping Ctrl and Caps..." 发现现成的 reg 文件。
    【解决方案3】:

    这对我有用:

    LControl & *RAlt::Send {LAlt Down}
    LControl & *RAlt Up::Send {LAlt Up}
    

    这用于将其映射到 Windows 键:

    LControl & *RAlt::Send {LWin Down}
    LControl & *RAlt Up::Send {LWin Up}
    

    使用 SharpKeys(见上文)修改注册表更可靠(如果您有管理员权限)。

    【讨论】:

    • 为什么你映射LControlRAlt的组合而不是单独的RAlt
    • 当你按下 AltGr 时,Windows 实际上表示你同时按下了右 Alt 和左 Ctrl 键。
    【解决方案4】:

    通过组合两个热键,我得到了一个不错的行为:

    LControl & RAlt::Send {Alt}
    RAlt::Alt
    

    第一个用于独立按键(避免按住...),第二个用作组合键(Alt+F 等.).
    它并不完美,您不能进行 Ctrl+Alt+T 之类的组合,但也许它足以满足您的需求。

    请注意,您可以使用注册表进行永久重新映射。有关示例,请参阅this forum post。不确定它是否适用于像这样的复合键,但我想我应该提到它......

    【讨论】:

      【解决方案5】:

      在 AHK,你能做到吗:

      LControl & RAlt::!
      

      或者

      <^>!::!
      

      【讨论】:

      • 对不起,但这对我不起作用。第一个示例返回“无法识别的操作”错误,第二个示例什么也不做。当然,我的设置可能有问题。它对你有用吗?
      • 我没有钥匙,但查看 AHK 文档显示 !是 AltGr 的符号。右键单击 TrayIcon-->Help-->Hotkeys
      【解决方案6】:

      如果您想全局映射此键并且不需要为每次更改(但一次)重新启动系统,您可能需要为此编写键盘过滤器驱动程序。看here

      【讨论】:

        【解决方案7】:

        Windows 注册表编辑器 5.00 版:

        [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
        "Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,38,00,38,e0,00,00,00,00
        
        1. 将以上代码保存到reg文件中。
        2. 将其合并到注册表中。
        3. 重新启动您的电脑。
        4. 现在检查。

        【讨论】:

          猜你喜欢
          • 2019-05-05
          • 2013-12-09
          • 1970-01-01
          • 2017-07-24
          • 2023-03-27
          • 2017-11-20
          • 2015-03-09
          • 1970-01-01
          • 2018-11-24
          相关资源
          最近更新 更多