Ubuntu更换键位设置

因为想为Emacs设置一下键位,所以查了一些资料,发现ubuntu下改键位还是挺困难的,下面把流程记下以为笔记。

首先,先确定你是要临时更换键位还是永久更换,如果要临时更换,则可以使用Xmodmap,好处是可以随身携带编辑好的文件,在哪里都可调用。如果要永久改变键位设置,则可编辑

/usr/share/X11/xkb/keycodes/evdev

来彻底改变键盘的定义行为,好处是比Xmodmap来的高效,不需要另外的读取时间。

首先简述键盘的读取原理。当你按下一个按钮,系统会首先读取这个按钮的keycode,比如大写锁的keycode是66。然后系统会去对照键盘的layout(布局,存储在/etc/default/keyboard里)去确定这个keycode对应是什么按键,比如66在配置文件里就是<CAPS>。确定你按的是什么按键之后,系统就会调用对应这个按键的函数(称之为keysym)来完成的功能了。

你可以用xev命令来查看按键的keycode和keysym。在弹出的小窗口里敲想看的按键就行了。

如果是永久交换,则在上文的evdev文件里修改按键的keycode和对应的键位关系即可。

如果是临时交换,则需要编辑一个Xmodmap文件,并在终端里执行

xmodmap xmodmap文件

来交换,不过这个交换只要重新登录就会被重置。

写法则详见man,这里简单说明。

首先用xev和xmodmap来确定你要改的按键和当前所有keycode对应的keysym。记下自己要改的按键当前的和修改后应该对应的keysym。

如果要编辑shift,大写锁,crtl,super或者alt的话,在命令行里直接敲xmodmap然后回车,会提示所有的modifier和其对应的keysym,先

remove MODIFIERNAME = KEYSYMNAME(清除对应项)

OR

clear  MODIFIERNAME(清除全部)

把你要改的按键全部remove掉。

然后把用

keycode NUMBER = KEYSYMNAME

或者

keysym KEYSYMNAME = KEYSYMNAME

(左边会被自动转换为keycode,我也不知道他是怎么知道已经被remove的按键的keycode的。)

给你需要的按键赋keysym值。

最后如果把remove掉的MODIFIERNAME用

add MODIFIERNAME

加回来。(我也不这一加一减意义何在,不过man上说应该这么做。)

比如man的例子,交换左ctrl和大写锁。

!

! Swap Caps_Lock and Control_L

!

remove Lock = Caps_Lock

remove Control = Control_L

keysym Control_L = Caps_Lock

keysym Caps_Lock = Control_L

add Lock = Caps_Lock

add Control = Control_L

(!是注释的标志符。)

以上。

参见

Damiano Venturin的博文

Xmodmap的man

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 例子: //这条命令相当于按了设备的Backkey键 adb shell input keyevent 4 //可...
    井望阅读 14,271评论 0 5
  • 手机端配置tcp方式连接 su setprop service.adb.tcp.port 5555 stop ad...
    yoyo鹿鸣阅读 5,711评论 0 4
  • 电话键 KEYCODE_CALL拨号键5 KEYCODE_ENDCALL挂机键6 KEYCODE_HOME按键Ho...
    _夏兮阅读 3,639评论 2 2
  • 代码就一句driver.keyevent()括号内填入的是物理按键的数字代号 代号表: 电话键 KEYCODE_C...
    SNC誓约阅读 1,667评论 0 1
  • 夜已深,从很久以前就喜欢独自一人感受夜晚,关上灯,坐在窗前,听着收音机里播放的柔和音乐,总是忍不住想说夜晚是多么美...
    mumuemilie阅读 325评论 0 1