在Linux下 使用Scroll键开关键盘背光灯

花了4天半的时间鼓捣好了一个机械键盘,

找了一个老外大牛写的stm32-based 键盘矩阵扫描器,改改装在了键盘上边

dfu功能,移植在keil下没有被识别,估计一阵子也没有多少时间来折腾,暂时先用着,

因为io口不够用,多区背光给改成了Scroll键开关,

但是,发现 Scroll 键 在高版本linux下给屏蔽了,

国内百度了半天没找到好的解决方案

转到google 发现 Why is the Scroll Lock key disabled in Cinnamon/Linux/Xorg? 一文给出了详细的方法 通过

xmodmap -pm

查看当前系统 mod键映射情况

[lanbing@LanBing-Laptop ~]$ xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

其中mod3 这行是空的 通过这 条命令启用 Scroll Lock:

modmap -e "add mod3 = Scroll_Lock"

测试ok

[lanbing@LanBing-Laptop ~]$ xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Scroll_Lock (0x4e)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

让它每回开机都自动运行, 将这行放入~/.Xmodmap中

add mod3 = Scroll_Lock

或者

cd ~
echo >.Xmodmap "add mod3 = Scroll_Lock"

or

cd ~
echo >> .bashrc 'modmap -e "add mod3 = Scroll_Lock" '

这种方式在系统启动之后,会自动载入配置,

但是在重新插拔USB键盘后,系统会清空配置,需要手动重新载入

通过修改 /usr/share/X11/xkb/symbols/us文件

xkb_symbols "basic" {区段尾部添加如下:

modifier_map Mod3   { Scroll_Lock };

使配置永久生效。

Comments