我有 Logitech 无线键盘和鼠标 MK710。在 Fedora 上,我可以映射每个键,包括打开 CD 托盘的自定义键,事实上,我认为默认情况下所有键都已正确映射。在 Windows 10 上,情况并非如此。我已经下载了与我的键盘相关的所有 Windows 程序/驱动程序,可在 Logitech 的网站上找到。
我见过几个适用于 Windows 的键盘映射程序,他们说他们不映射自定义的 Logitech 按键等,他们只映射 Windows 中默认支持的按键。
我联系了 Logitech,他们告诉我使用他们的软件 Setpoint,我试过了,但它只检测到计算器键我回复告诉他们他们的软件不起作用,他们忽略了我的第二封电子邮件。
是否可以映射这些自定义键?目前我想要映射的键根本没有任何作用。
答案1
Setpoint 在自定义按键方面表现非常糟糕,此外它还有吞噬部分按键(如多媒体按键)的坏习惯,导致其他程序无法使用它们。
我建议避免使用 Setpoint,而使用 自动热键。
您的第一步是找出特殊键的扫描码。由于我们使用 AutoHotkey,因此创建一个.ahk
文件,然后输入并运行以下脚本 (来源):
SetFormat, Integer, Hex
Gui +ToolWindow -SysMenu +AlwaysOnTop
Gui, Font, s14 Bold, Arial
Gui, Add, Text, w100 h33 vSC 0x201 +Border, {SC000}
Gui, Show,, % "// ScanCode //////////"
Loop 9
OnMessage( 255+A_Index, "ScanCode" ) ; 0x100 to 0x108
Return
ScanCode( wParam, lParam ) {
Clipboard := "SC" SubStr((((lParam>>16) & 0xFF)+0xF000),-2)
GuiControl,, SC, %Clipboard%
}
运行它,当 GUI 处于焦点时按下一个键,扫描码将显示并以热键或发送命令的格式复制到剪贴板。
扫描码可以在脚本中使用。例如,使用浏览器多媒体键来运行 Firefox:
SC032::Run "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
脚本完成后,您可以将其存储在启动文件夹中,以便它将随 Windows 自动运行。
您可能需要搜索可以执行所需操作的命令行程序。例如,可以通过免费的 近红外命令。
答案2
按照其他人的说法,更改写入的 user.xml 文件
%USERPROFILE%\AppData\Roaming\Logitech\SetPoint
是让它正常工作的唯一方法。
例如,对于 Logitech K530 键盘,我想映射小工具键(左上角)和媒体中心键(右上方)将应用程序移动到左侧/右侧的显示器。
我用的是切换监视器左和切换监视器右HandlerSets - 其他示例可以在 C:\Program Files\Logitech\SetPointP\default.xml 文件中找到。
这就是小工具钥匙:
<Button Number="589885" Name="Gadgets">
<Param IconLoc="Devices\Keyboard\CommonIcons\Gadgets" Type="HOTKEY"/>
<Trigger Class="ButtonPress">
<Param Button="589885" EventType="100663297" FirstRepeatDelay="0" RepeatDelay="0" Silent="0" Type="0"/>
<TriggerState Name="ButtonDownUp" HandlerSet="SwitchMonitorLeft">
</TriggerState>
</Trigger>
</Button>
这是媒体中心钥匙:
<Button Number="12320781" Name="Media Player">
<Param IconLoc="Devices\Keyboard\CommonIcons\mediacenternew" Type="HOTKEY"/>
<Trigger Class="ButtonPress">
<Param Button="12320781" EventType="100663297" FirstRepeatDelay="0" RepeatDelay="0" Silent="0" Type="0"/>
<TriggerState Name="ButtonDownUp" HandlerSet="SwitchMonitorRight">
</TriggerState>
</Trigger>
</Button>