我最近买了一个罗技 K520 键盘和鼠标。这是一款不错的键盘,而且,像现在一样,它有笔记本电脑风格的 Fn 键作为F1-F12键的替代键。我其实不需要这些,但由于我放弃了右手的 Super/Windows 键,换成了一个原本没用的Fn键,所以最好能利用一下它们。
问题是:有些键不发送特殊键代码,而是发送组合键。例如,Fn+F5发送Alt+ Tab,而Fn+F6发送Win+ D。
我看不出有任何方法可以在操作系统级别区分实际的Alt+Tab和Fn-key 生成的Alt+ Tab- 是否有某种方法可以对键盘进行编程以发送替代键代码?如果它涉及仅适用于 Windows 的软件,那么更改是否是永久性的,即我可以从 Windows 虚拟机重新配置键盘,然后在 Linux 上获得好处吗?
答案1
如果你想稍微破解一下,可以在 Linux 上重新映射这些 Fn 键。在我的文章中Logitech Unifying Linux:逆向工程和解除配对工具,我描述了如何监控 USB 流量来对 Logitech Unifying 设备进行逆向工程。
自行对 Fn 键进行逆向工程重新分配的要求:
- 具备 Logitechs HID++ 1.0 协议的基本知识(可能还有 2.0 协议,具体取决于您的设备)。(可从以下网址获取)https://lekensteyn.nl/files/logitech/)
- 我的文章中介绍的工具
read-dev-usbmon
,可以用来更轻松地进行监控。 - 能够写入特权设备(通常
/dev/hidraw0
),有关详细信息,请参阅我的文章。
时间允许的话,我会研究一下。在此之前,我只能给你一些建议:
在我的 K800 键盘 (HID++ 1.0) 上,启用字段 1 上的通知位 1 会更改键盘发送的信息,大概是为了允许进行您描述的自定义。来自https://git.lekensteyn.nl/ltunify/tree/registers.txt#n80:
00 rw ENABLED_NOTIFS, 10 02 00, 10 is Battery info, buy what is 02? After writing FF FF FF, reading the register shows 13 02 00 .1 .. .. - If enabled, keys like Web and Mute are passed over the HID protocol with short message type=03. This presumably allows the user to customize key bindings. .2 .. .. - ? 1. .. .. - battery status (documented) (see also below, register/type 07) .. .2 .. - backlight changes (pressing Fn+F[56])
当有人实现这个功能时(可能是我),它很可能最终会出现在 Solaar 软件中。此功能可在https://github.com/pwr/Solaar/issues/31
答案2
solaar
通过 pip 安装对我而言适用于“K400 Plus”型号。例如:
solaar config 1 fn-swap off