zoukankan      html  css  js  c++  java
  • 修改emacs按键:右alt映射为ctrl键

    使用emacs,最大痛苦就是‘你的小指永远不够长!!!!’,因此修改键盘映射是十分必要的。在这里介绍一下我的自定义键映射:caps_lock改为esc,右alt改为额外的ctrl。这样,可以用左手小指方便的按meta键,右手大拇指按ctrl键。而且,caps_lock和右ctrl估计没几个人用过,不要也没影响。

    在ubuntu 中,改caps_lock很方便的,在system->perferences->keyboard->layouts->options中就可以很方便的修改。

     

    而修改右alt就比较麻烦了,只能由命令修改。

    首先,使用xev命令查看右alt的keysym,

     

    这里,我的alt键的keysym是ISO_level3_shift

    然后用‘xmodmap -pm’发现iso_level3_shift是作为modifier ‘mod5’来使用的,因此我们首先要

    xmodmap -e 'remove mod5 = ISO_Level3_Shift'  解除于modifier ‘mod5’的绑定 ,然后

    xmodmap -e 'add control = ISO_Level3_Shift' 将他作为modifier ‘control'使用

    大功告成。

    ================重要====================

    我想大部分人都看得迷迷糊糊的,最后解释几个概念。

    再xmodmap中,又3个重要的概念keycode, keysym, 和modifier。keycode就是你敲下键盘按键的编号,比如敲下‘a’,keycode就是 38。keysym则有点复杂,他是能够输入符号的名称,比如keycode 38(就是键盘上的字母a啦)就映射到两个keysym,分别是‘a’(小写a)和‘A’(大写A),明白了么,keycode是与你的键盘一一对应的,一个键一个keycode,而keysym就包括了那些不能直接输入的符号,比如‘!@#¥’这些用shift输入的标点,还有一些稀奇古怪的东东,比如’iso_level3_shift',‘super_r'。

    聪明的同学很快就发现,keysym要比keycode多得多了,怎么实现映射呢?,这就是要靠modifier的帮助了,常用的modifier就是‘control’‘shift’‘lock'。 我给大家写下来:

    xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):
    (接下来的表中的第一列就是modifier,第二列就是触发这个modifier的keysym了。大家发现我的‘lock’没有对应keysym,而‘control’又很多,这就是为了emacs方便啦)
    shift       Shift_L (0x32),  Shift_R (0x3e) 
    lock     
    control     Control_L (0x25),  ISO_Level3_Shift (0x5c),  Control_R (0x69),  ISO_Level3_Shift (0x6c)
    mod1        Alt_L (0x40),  Meta_L (0xcd)
    mod2        Num_Lock (0x4d)
    mod3      
    mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
    mod5        Mode_switch (0xcb)
     

    举个例子比如对按键z基keycode呵keysym映射 “keycode  52 = z Z z Z”,我们发现keycode对应多个keysym,至于对应哪个keysym,取决于同时按下哪个modifier。

  • 相关阅读:
    day12 Python操作rabbitmq及pymsql
    day11 队列、线程、进程、协程及Python使用缓存(redis/memcache)
    day10 Python作用域 Python2.7与Python3.x的类继承的区别、异步IO、多进程,多线程简介
    day09 Python socket编程
    day08 面向对象补充及单例模式
    day07 configparser xml subprocess 面向对象
    day06 Python的一些内建变量、反射、hashlib模块、re模块、os模块、sys模块
    day05 Python多层装饰器、模块、序列化、字符串格式化、生成器和迭代器、递归、time、datetime模块、logging模块
    day04 Python一些内置函数及装饰器
    查看旧版jexus命令
  • 原文地址:https://www.cnblogs.com/zhengchl/p/2655753.html
Copyright © 2011-2022 走看看