找出 Fn+F6 发出的键码

找出 Fn+F6 发出的键码

在 Windows 上的我的 Lenovo IdeaPad Yoga 2 Pro 上,有一个可用的功能Fn+F6 应该打开和关闭触摸板(我想将正确的密钥映射到脚本位于askubuntu)。

但在 Linux 上,它不起作用。

如何找出按下此组合时它发出的事件键码?

我尝试过showkey -ashowkey -k并且xev在按下时都显示大多数按键代码,但在Fn+时F6它们保持安静。另一个Fn+F1-F5显示输出,只是F6不显示输出,尽管它可以在 Windows 上运行。还有别的备择方案有到xevshowkey吗?

到目前为止我发现的唯一提示是:

grep TOUCHPAD /usr/include/linux/input.h

#define KEY_TOUCHPAD_TOGGLE 0x212   /* Request switch touchpad on or off */
#define KEY_TOUCHPAD_ON     0x213
#define KEY_TOUCHPAD_OFF    0x214

来源:评论中https://askubuntu.com/a/270428/34298并链接到本文

也许有人有想法?

答案1

当我运行 或者xev时,showkey我能够获取Fn+的键码F6

例子

当我使用showkey -kThinkpad T410 笔记本电脑时,我得到以下信息。

$ sudo showkey -k 
kb mode was ?UNKNOWN?
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
keycode  28 release
keycode 143 press                   <--- Fn press + release
keycode 143 release
^[[17~keycode  64 press             <--- F6 press + release
keycode  64 release
keycode 212 press                   <--- Fn + F6 press + release
keycode 212 release
keycode  29 press                   <--- Ctrl + C press + release
^Ccaught signal 2, cleaning up...

也许不支持?

我发现这篇 Arch Linux wiki 文章的标题是:联想 Ideapad Yoga 2 Pro,这似乎表明该键没有直接被映射。将继续挖掘,但我想我也会在这里添加此信息。

摘抄

键盘特殊键

BIOS 有一个设置可以翻转 FN 键的行为。

  fn+F1   XF86AudioMute
  fn+F2   XF86AudioLowerVolume
  fn+F3   XF86AudioRaiseVolume
  fn+F4   Alt_L+<F4>
  fn+F5   <F5>
  fn+F6   n/a
  fn+F7   n/a
  fn+F8   Alt_L+Tab
  fn+F9   n/a?
  fn+F10  super_L+p
  fn+F11  XF86MonBrightnessDown
  fn+F12  XF86MonBrightnessUp

使用修改后的ideapad_laptop模块?

我发现这个页面的标题是:联想IdeaPad Yoga 2 Pro在 LinLap 维基上。本文讨论了该ideapad_laptop模块的修补版本,它可以解决某些按键不起作用的问题。

摘抄

通过将黑名单 ideapad_laptop 添加到.黑名单ideapad_laptop以使其正常工作。/etc/modprobe.d/blacklist.conf修补后的ideapad_laptop模块可从https://github.com/pfps/yoga-laptopYoga_laptop 目录中的内容使无线功能正常工作,并且还可以处理飞行模式键。

对于README这个修补模块,关于密钥也有这样的说法F6

禁用触摸板 (F6) 会生成无法识别的扫描代码。可以sudo setkeycodes e03f 191通过然后设置 XF86TouchPadToggle触发脚本来切换触摸板的状态来手动修复此问题。暂停和中断产生相同的字符。这可以通过 来修复 sudo setkeycodes e046 194; xmodmap -e "keycode 202 = Break"。更好的方法是通过 udev 规则 - 请参阅 Yoga_laptop/README 了解更多信息。

参考

答案2

https://wiki.ubuntu.com/Hotkeys/Troubleshooting有一些解决此类键盘问题的提示:

安装

sudo apt-get install evtest

并运行

sudo evtest

选择3用于

/dev/input/event3:  AT Translated Set 2 keyboard

你会看到类似的东西

Event: time 1397868878.732211, -------------- SYN_REPORT ------------
Event: time 1397868878.915728, type 4 (EV_MSC), code 4 (MSC_SCAN), value bf

答案3

在我的盒子(Lenovo Yoga 900 13ISK2)上,每当我按下 Fn F6 时,我都可以看到以下输出dmesg

[20468.127492] atkbd serio0: Unknown key pressed (translated set 2, code 0xbf on isa0060/serio0). [20468.127504] atkbd serio0: Use 'setkeycodes e03f <keycode>' to make it known.

我使用的是从 git 源代码树编译的 4.8 内核。在include/uapi/linux/input-event-codes.h我看到:

#define KEY_TOUCHPAD_TOGGLE 0x212   /* Request switch touchpad on or off */

所以我做了setkeycodes e03f 530。之后dmesg不再显示该消息,但按下该键并没有打开/关闭触摸板。

另一个有趣的事实:当我将屏幕翻转到“平板电脑模式”时,我可以看到相同的消息,dmesg因此看起来 BIOS 正在发送与按下 Fn F6 相同的事件。不幸的是,这只发生在我完全翻转屏幕之后,而​​不是在屏幕超过 190° 左右之后。

答案4

这有点旧了,但我在笔记本电脑上遇到了类似的问题(不是切换模式,但未映射是类似的)。每次我按下“Fn”键时,它都会报告 6f 未映射。我最终发现“Fn”键的映射为 464 (0x1D0)https://github.com/torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h...然后我可以使用:

setkeycodes 6f 464 现在它显示为“KEY_FN”。但为了使其永久化,我最终创建了一个启动脚本。在您的情况下,如果它不适用于切换,可能还有另一个更好的键码?但你确实需要 evtest (正如有人已经指出的那样)来确保“fn+f6”产生 bf.我不会同意 dmesg 所说的,因为当我像它所说的那样使用“e0xx”时,它不起作用。看起来你的应该是:

setkeycodes bf 530

相关内容