zoukankan      html  css  js  c++  java
  • 怎么在Ubuntu上替换ESC键 沉沉_

    最近拆了次笔记本电脑,但装上的时候不小心,把Esc键弄坏了,又没银子去换个笔记本键盘,所以就在网络上鼓捣鼓捣怎么替换ESC键。

    想了想用ESC键的场合主要又VI ,和Ubuntu中退出一些系统菜单时需要使用。在VIM 中可以Ctrl + [ 替代 ESC 来切换不同的模式,但是在Ubuntu系统中没有其他的快捷键来替代ESC键,应该只能将其他的不常用的按键绑定为ESC键。在网上搜了搜,还真找到一篇文章,在这篇文章的指导下,将不常用的Contrl_R(右Ctrl键)替换为ESC键。

    具体的做法是在用户的家目录下建立.Xmodmap 文件,里面输入以下代码,重启即可:

    1        remove Control = Control_R 
    2         
    3        keycode 9 = Control_R 
    4         
    5        keycode 105 = Escape 
    6          
    7        add Control = Control_R
    8    

    具体怎么写的,可以参考以下文章:

    http://blog.163.com/abe618@126/blog/static/164543642201062172520529/

    Ubuntu下键盘按键替换
    首先要知道键盘每个击键的Keycode, 这个可以使用xev在一台键盘layout相同的电脑上查到。

    得知ESC的keycode是9,Symbol为"Escape" 准备替换为WinKey(就是那个windowslogo的按键)

    WinKey 的 keycode是115



    然后,在~/ ($home) 目录下创建.Xmodmap (如果没有就创建):

    gedit ~/.Xmodmap

    里面加这么一句:

    keycode 115 = Escape

    (定义keycode 115为 Escape按键)

    然后 logout再login 就ok了。http://www.cbi.pku.edu.cn/chinese/documents/csdoc/cman/xmodmap.html

    这个网址中详细介绍了xmodmap的用法。xmodmap就是我们用来修改键位的利器。呵呵,省下一笔钱。



    xmodmap - 在 X 环境中调节键盘映射和鼠标键映射



    xmodmap 用来 编辑 或 显示 键盘的 修饰键映射(modifier map) 和 键盘映射表(keymap table),
    客户程序 用 它们 把 键码(keycode) 事件 转换为 keysym. 通常 在 用户会话 的 启动脚本 中 使用 xmodmap, 把
    键盘 配置成 用户 喜爱的 风格.



    xmodmap [-options ...] [filename]

    选项 (OPTIONS)



    xmodmap 可以 使用 下列 选项:



    -display display

    这个选项 指定 主机 和 显示器.



    -help

    这个选项 在 标准错误设备 显示 命令行参数 的 说明. 如果 出现了 无法识别 的参数, xmodmap 也会 执行 这个 功能.



    -grammar

    这个选项 在 标准错误设备 显示 表达式 的 语法. 该语法 适用于 文件 或 -e expression 选项.



    -verbose

    这个选项 要求 xmodmap 在 分析 输入数据 的 时候 显示 日志信息.



    -quiet

    这个选项 要求 关闭 verbose 日志信息. 这是 缺省选项.



    -n

    这个选项 不要求 xmodmap 真的改变 (键盘,鼠标) 映射, 而只是 显示出 它 可能 做什么, 如同 make(1) 的 相同 选项 一样.



    -e expression

    这个选项 执行 一个 给定的 表达式. 命令行上 可以 指定 任何 数量 的 表达式.



    -pm

    这个选项 要求 在 标准输出设备 显示 当前的 修饰键(modifier)映射.



    -pk

    这个选项 要求 在 标准输出设备 显示 当前的 键盘映射表(keymap).



    -pke

    这个选项 要求 在 标准输出设备 显示 当前的 键盘映射表(keymap). 输出格式能够 作为 xmodmap 的 输入.



    -pp

    这个选项 要求 在 标准输出设备 显示 当前的 鼠标(pointer)映射.



    -

    单独的 短横线(-) 说明 把 标准输入设备 作为 输入文件 使用.



    filename 指定 一个文件, 其中 包含 xmodmap 将要 执行的 表达式. 这个文件 通常 命名为 .xmodmaprc, 存放在 用户的 根目录下.



    (大家好好看看我给的那个网址里面xmodmap的用法,我在这里就不重复了。)

    下面我以我本身的例子讲讲是如何操作的。



    假设我的两个shift键都不能用(坏键),没办法,这个时候我只能找其它键来代替了。嗯,选定右ctrl键了(用右ctrl来代替shift键了。)



    首先我们输入

    xmodmap -pke

    -pke

    这个选项 要求 在 标准输出设备 显示 当前的 键盘映射表(keymap). 输出格式能够 作为 xmodmap 的 输入.



    将看到下面的输出:

    ...

    keycode 61 = slash question

    keycode 62 = Shift_R

    ...

    keycode 108 = KP_Enter

    keycode 109 = Control_R

    keycode 110 = Pause Break

    keycode 111 = Print Sys_Req

    .......



    看到keycode 62 = Shift_R与keycode 109 = Control_R没,就是这两行拉,只要替换一下就OK

    接着我们在$HOME目录下建立文件.Xmodmap,

    以我为例,kytor@kytor-desktop:~$ gedit .Xmodmap

    输入以下内容:

    remove Shift = Shift_R

    remove Control = Control_R

    keycode 62 = Control_R

    keycode 109 = Shift_R

    add Shift = Shift_R

    add Control = Control_R



    OK,保存。

    重启一下,它会提示是否加载.Xmodmap,你只要选是就OK了。xmodmap只改x的keysym。对终端无效。首先找一个键盘是好,换掉那个坏的键盘,进入系统,建立一个文本文件,名字是dumpkey,内容很简单:

    代码: dumpkeys >newkey.map

    因为坏了shift键的键盘你打不出来“>”。然后关机,换上那个坏的键盘,进入系统

    给dumpkey文件加上执行权限

    chmod 755 dumpkey

    然后执行

    ./dumpkey

    在当前目录生成newkey.map文件,编辑它,比如我的内容有一段是这样:

    代码: keycode 117 = F17

    altgr control keycode 117 = VoidSymbol

    shift alt keycode 117 = VoidSymbol

    keycode 118 = KP_MinPlus

    altgr control keycode 118 = VoidSymbol

    shift alt keycode 118 = VoidSymbol

    keycode 119 = Pause

    keycode 120 =

    keycode 121 =

    keycode 122 =

    keycode 123 =

    keycode 124 =

    keycode 125 =

    keycode 126 =

    keycode 127 =

    keycode 128 = nul

    altgr control keycode 128 = VoidSymbol

    shift alt keycode 128 = Vo idSymbol

    keycode 129 = nul

    altgr control

    keycode 129 = VoidSymbol

    shift alt

    keycode 129 = VoidSymbol

    keycode 130 = nul

    注意keycode 120到 127
    都没有定义,说明你的键盘上有没有用的键,你就可以把其中一个改成你要定义的键,至于具体是哪个keycode对应键盘上哪个键就要自己去试,好像用
    showkey命令看的也不准确。我是懒的去找,干脆全部都改成 =Shift 。

    当然如果没有空闲的键,你就要交换,把两个键的keycode交换应该就可以了。

    然后保存退出,执行命令 代码: loadkeys newkey.map

    现在试一下看看是不是有些键能当shift用了

    如果可以用,你就可以把loadkey /your/dir/of/newkey.map写到开机自动运行的script里去,以后就不用每次输了。



    要注意的是这个办法只对文本模式有用,你进了xwindow就不起作用了,X 下面要使用xmodmap

  • 相关阅读:
    【BZOJ 1185】 凸包+旋转卡壳
    【BZOJ 2829】 2829: 信用卡凸包 (凸包)
    【BZOJ 1045】 1045: [HAOI2008] 糖果传递
    【BZOJ 2453|bzoj 2120】 2453: 维护队列 (分块+二分)
    【BZOJ 3343 】 分块
    【BZOJ 1069】 凸包+旋转卡壳
    【NOIP 2016 总结】
    【无聊放个模板系列】洛谷 负环 模板
    【无聊放个模板系列】BZOJ 3172 (AC自动机)
    【无聊放个模板系列】HDU 3506 (四边形不等式优化DP-经典石子合并问题[环形])
  • 原文地址:https://www.cnblogs.com/chenchenluo/p/2564420.html
Copyright © 2011-2022 走看看