最近在做个添加笔记本快捷键的支持工作,一直都是老大带着做,功能实现之后在这里整理下思路。
1 硬件层会提供一个键码(scancode),我们这里为64。
2 系统内核中有0~255 的keycode,我们首先要将scancode 与 keycodes 进行绑定 : 使用命令 : setkeycodes scancode keycode
3 这个keycode并不能直接拿来用,我还需要将它映射到 x window 层,使用 xmodmap -e "keycode NUMBER = KEYSYMNAME ..."(注 : 命令依赖于x层)来进行映射,这里KEYSYMNAME由系统提供,在一个shortcuts-list.h 中定义,这里我们尝试过下载源码添加KEYSYMNAME,但是没有反应,时间比较赶,也就没有来研究。
4 修改过后我们可以通过命令 : xmodmap -pke 来查看 x层的映射情况。如果成功你可以看到映射关系
5 下面就是添加我们的实现脚本了,在系统中有 /usr/share/cinnamon/js/ui/keybindings.js 文件,在其中添加 :
this.addHotKey("xxxxx", "KEYSYMNAME", Lang.bind(this, function() {
Util.spawnCommandLine("这里是你要执行的功能");
}
6 最后需要重启了。