重新映射每个媒体按钮的通用方法

nix*_*xda 13 windows keyboard-shortcuts autohotkey

今天我尝试将一些键盘媒体键重新映射到更有用的功能,但没有这样做。

在此处输入图片说明

问题

  • 制造商不提供用于绑定和执行自定义命令的实用程序。
    我以前的罗技键盘在他们的SetPoint软件中有这样的选项
  • 大多数我用来捕获底层键码的程序都无法识别键码(或扫描码)。

    例如,其他优秀的工具SharpKeys有一个捕捉模式,它会告诉你你刚刚按下了什么键。我花了一些时间才意识到它告诉我错误的密钥代码在我的测试过程中,我按下了右上角的“星形按钮”,SharpKeys 告诉我这是带有密钥代码的“D”键00_20。但正确的关键代码是00_181

    另一个尝试是这个AutoHotKey 脚本,它也无法识别我不寻常的媒体键

任务

  • 即使对于不寻常的媒体按钮,也能找到正确的键码
  • 无需安装任何附加工具或程序即可重新映射所有媒体密钥。注册表调整,使用已安装的驱动程序或小型便携式应用程序是可以接受的

nix*_*xda 10

这是重新映射任何键盘按钮的通用方法。甚至奇怪的


  1. 使用KeyCodes(便携式,415 KB)来捕捉关键代码。下载、解压并启动 KeyCodes3.exe。按下你的神秘按钮,你会看到十进制数字的键码

    在此处输入图片说明

    另一种方法是这个 AHK 脚本,它使用键盘钩子和“KeyHistory”

    #Persistent
    #InstallMouseHook
    #InstallKeybdHook
    while !(getKeyState("F1", "T"))
          KeyHistory
    return
    esc::exitapp
    
    Run Code Online (Sandbox Code Playgroud)

    在此处输入图片说明

  2. 将数字从十进制转换为十六进制:171»AB

  3. 使用便携式版本的 AutoHotKey重新映射按钮。
    下载并解压您选择的 .zip 版本。无需安装。
    创建一个新的文本文件并粘贴

    #NoEnv, #Persistent, #SingleInstance
    vkB5::return                ;music node button  181 » B5   do nothing
    vkAC::return                ;home button        172 » AC   do nothing
    vkAA::return                ;search button      170 » AA   do nothing
    vkAB::Run, c:\myapp.exe     ;star button        171 » AB   execute tool
    vkB4::Send {Volume_Mute}    ;mail button        180 » B4   mute/unmute
    
    Run Code Online (Sandbox Code Playgroud)
    • vk 代表虚拟键码,后跟要重新映射的十六进制键码
    • ::是重映射运算符。左边是触发器,右边是你的新按钮或动作
    • Send {<my_new_key>}可以是此列表中的任何键。
      或者,您可以使用Run command执行自定义路径。
      或者,如果您想再次执行媒体按钮,请{vkAB}用作操作
  4. 在您的自动启动文件夹中创建一个新的快捷方式,以便在每次启动时启动您的 AHK 脚本。例如

    "D:\Tools\AutoHotKey\AutoHotkey.exe" "D:\Tools\AutoHotKey\RemapKeys.ahk"
    
    Run Code Online (Sandbox Code Playgroud)

重新启动或手动 AHK 脚本启动后,所有按钮都会重新映射


Den*_*lov 6

简而言之:您可以在以下注册表项中找到多媒体键映射:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey”

例如,邮件键通常会启动默认的邮件应用程序。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\15\RegisteredApp = "Mail"

如果要替换这个来打开记事本,

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\15\ShellExecute = "notepad.exe"

(如果您想为所有用户等进行修改,则更改 HKLM)

RegisteredApp 表示将调用为该函数注册的应用程序。(如上面的邮件)

关联 表示将打开与特定文件类型关联的应用程序。例如,媒体键默认注册为 .cda,这意味着用于播放音乐 CD 的默认应用程序将在按下该键时打开。

ShellExecute 打开要运行的特定程序。

有关更多详细信息,请阅读这篇文章

  • 请从参考链接中引用答案的重要部分,因为如果链接页面发生变化,答案可能会失效。 (2认同)