怎么在Ubuntu上替换ESC键

本文介绍了一种在Ubuntu系统中替换损坏键盘按键的方法,通过使用xmodmap工具重新映射按键,例如将右Ctrl键替换为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

转载于:https://www.cnblogs.com/chenchenluo/archive/2012/06/26/2564420.html

<think>好的,我现在需要解决用户在安装Ubuntu时遇到的盘无响应问题。首先,我得回忆一下相关的可能原因和解决方案。根据用户提供的引用资料,虽然大部分是关于登录界面或系统运行中的问题,但安装过程中的问题可能有相似之处。 首先,安装环境可能是虚拟机或物理机。用户提到使用VMware和Ubuntu20.04,但这里的问题是在安装过程中,所以需要确认是否在虚拟机设置中正确配置了USB控制器或输入设备。例如,在VMware中,可能需要检查虚拟机的USB兼容性设置,确保启用了USB3.0或2.0控制器,并且正确连接了虚拟盘。 另外,安装介质的问题也可能导致输入设备无法识别。建议用户验证ISO文件的完整性,确保下载的Ubuntu镜像没有损坏,可以通过校验SHA256哈希值来确认。如果使用U盘安装,可能需要重新制作启动盘,使用可靠的工具如Rufus或Etcher。 BIOS/UEFI设置中的USB相关选项也需要检查,比如启用USB Legacy支持或XHCI Hand-off,特别是在较旧的硬件上。此外,安装过程中尝试不同的USB端口,尤其是直接连接到主板的后置端口,避免使用前端可能供电不足的端口。 如果用户是在物理机上安装,并且盘是PS/2接口的,可能需要加载特定的内核模块。但现代盘多为USB,这种情况较少见。不过,在安装时选择“nomodeset”内核参数可能有助于解决驱动问题。具体步骤可能是在GRUB界面按e编辑启动选项,在linux行末尾添加nomodeset,然后按F10启动。 另外,引用[4]提到进入恢复模式的方法,可能在安装过程中无法直接使用,但如果在安装时遇到问题,重启并尝试进入恢复选项可能会有帮助。此外,引用[2]和[3]提到的强制关闭应用程序的方法可能在安装过程中不适用,但如果是安装程序本身无响应,可能需要强制重启,但需谨慎操作,避免损坏数据。 总结可能的解决方案步骤:检查虚拟机设置、验证安装介质、调整BIOS/UEFI设置、更换USB端口或接口、使用nomodeset参数、尝试不同的盘。需要将这些步骤条理清晰地呈现给用户,同时建议备份数据以防万一。还要考虑用户可能不熟悉GRUB界面的操作,提供详细步骤,比如如何进入GRUB,如何编辑内核参数等。</think>### Ubuntu安装过程中盘无响应解决方案 #### 1. **检查虚拟机设置(若使用虚拟环境)** - 在VMware/VirtualBox中,确保虚拟机的**USB控制器**已启用,并选择与主机兼容的版本(如USB3.0/2.0)[^4]。 - 确认虚拟机的**输入设备配置**中已勾选“连接虚拟盘”或类似选项。 #### 2. **验证安装介质完整性** - 下载的Ubuntu ISO文件可能损坏,需校验SHA256哈希值: ```bash sha256sum ubuntu-xx.xx-desktop-amd64.iso ``` 与官网提供值对比,若不一致需重新下载[^1]。 - 重新制作启动U盘,推荐使用**Rufus**或**Etcher**工具,避免写入错误。 #### 3. **调整BIOS/UEFI设置** - 重启进入BIOS/UEFI界面(开机时按`Del`/`F2`/`F10`等),检查以下选项: - 启用**USB Legacy Support**(旧硬件需开启)。 - 禁用**Secure Boot**(部分驱动兼容性问题可能因此导致)。 - 启用**XHCI Hand-off**(避免系统接管USB控制器失败)[^4]。 #### 4. **尝试更换USB接口或盘** - 使用主板后置USB接口(供电更稳定),避免通过扩展坞或前置接口。 - 若为PS/2接口盘,尝试改用USB盘(部分安装环境对PS/2支持有限)。 #### 5. **修改内核启动参数** - 在GRUB引导界面(开机时按`Esc`或`Shift`)选择“**Try Ubuntu**”或“**Install Ubuntu**”后按`e`进入编辑模式。 - 在`linux`行末尾添加以下参数之一,按`Ctrl+X`或`F10`启动: - `nomodeset`:禁用显卡驱动,可能间接解决输入问题。 - `i8042.noloop`:针对PS/2控制器冲突问题。 - `usbhid.kbdquirks=0x1234:0x5678`:特定USB盘的驱动兼容性修复(需替换为实际设备ID)。 #### 6. **使用文本模式安装** - 在GRUB界面选择“**Ubuntu (safe graphics)**”或手动添加参数`text`进入文本安装界面,减少图形驱动冲突可能。 #### 7. **检查硬件兼容性** - 查阅Ubuntu官方硬件兼容列表(HCL),确认主板、USB芯片组等支持情况。 - 对于较新硬件(如Intel第12代CPU),可能需要使用**Ubuntu 22.04**及以上版本。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值