博文

目前显示的是 2018的博文

Ubuntu修改键盘映射,18.04,gnome

前言:这是一篇早期的东西,写这个东西的时候我甚至不知道X是啥所以写的很莫名其妙 因为想为Emacs设置一下键位,所以查了一些资料,发现ubuntu下改键位还是挺困难的,下面把流程记下以为笔记。 首先,先确定你是要临时更换键位还是永久更换,如果要临时更换,则可以使用Xmodmap,好处是可以随身携带编辑好的文件,在哪里都可调用。如果要永久改变键位设置,则可编辑 /usr/share/X11/xkb/keycodes/evdev 来彻底改变键盘的定义行为,好处是比Xmodmap来的高效,不需要另外的读取时间。个人的做法是把<BKSP>改成66,把<CPAS>9改成,把<ESC>改成22。这样把大小写放到esc键上,把退格放到大小写上,把esc放到退格键上。(老实说并不是很推荐这个键位设定,因为小拇指经常会按错退格和tab,而且也很累。不过我ctrl都是用关节去压的所以还好罢了。) 首先简述键盘的读取原理。当你按下一个按钮,系统会首先读取这个按钮的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。 如果要编辑MODIFIER(shift,大写锁,crtl,super或者alt)的话,在命令行里直接敲xmodmap然后回车,会提示所有的modifier和其对应的keysym,先 remove MOD