Linux下使用setkeycodes映射键盘按键

Linux下使用setkeycodes映射键盘按键

0x01 工具介绍

setkeycodes 是一个将 scancodes-to-keycodes 映射表加载到Linux内核中的工具。它的用法是:

setkeycodes scancode keycode ...

扫描码(Scancodes)以十六进制给出, 键位码(keycode)以十进制给出。
扫描码可以通过showkey -s得到,键位码可以通过showkey得到,对应的值在/usr/include/linux/input.h中。

0x02 例子

以我的笔记本为例,小问题不断的机械革命,这次遇到的问题就是不能设置触摸板快捷键来切换触摸板开关(Fn+F5)。步骤如下:

  1. 找到扫描码(Scancodes)
$ sudo showkey -s
0xe0 0x5b 0x1d 0x76 0xf6 0x9d 0xe0 0xdb # 按下触摸板开关键(Fn+F5) ,得到的是多个键的组合
0x1d 0x9d # 是组合键中的左Ctrl键
0xe0 0x5b 0xe0 0xdb # 是组合键中的Meta键(Win键或Super键)

以上按键是带有按下和释放事件,我只取了按下的扫描码。
2. 找到键位码(keycode)

$ sudo showkey
keycode  63 press # 按下F5,也可以指定其他按键
  1. 应用新的映射
$ sudo setkeycodes 76 63

0x03 测试

通过把切换触摸板快捷键设置成Ctrl+Meta+F5,或者直接Fn+F5,可以实现正常切换,并且双击触摸板左上角的小点也触发相同的事件,所以同样正常工作,但那个小点的指示灯还不能正常亮起。

你可能感兴趣的:(linux,按键事件)