Ubuntu下修改键盘映射

由于公司的电脑是MAC,而我自己家里面的电脑是Ubuntu,在开发环境中,各种快捷键经常离不开ctrl和alt键,但是mac和其他电脑键盘这两个键的位置正好相反,因此在家和在公司来回切换键盘的使用习惯是相当痛苦的事情。
其实,最简单的方法就是修改MAC下面的键盘映射,这样在使用的时候就统一了。但是由于我之前一直使用的是MAC,对于其中的快捷键使用已经习惯并产生了依赖,因此我决定将家里的电脑的ctrl和alt映射成MAC的键盘布局。

xmodmap

我开始使用的是xmodmap来修改键盘映射,由于在Unbuntu14.06之后系统已经集成了Xmodmap,因此修改起来相对简单,即将如下内容保存为~/.Xmodmap文件,并使用xmodmap ~/.Xmodmap执行使映射生效就可以更改完成。

remove mod1 = Alt_L 
remove control = Control_L 
keysym Control_L = Alt_L 
keysym Alt_L = Control_L 
add mod1 = Alt_L 
add control = Control_L 

这种方法成功将我的笔记本的键盘的左ctrl和左alt交换位置,使用起来和MAC的体验差不多了。

HWDB

但是后面我将我的外接键盘接入后发现,这种映射方式对于外接键盘没有生效。google了一下,最后在这里找了解决方法,简单来说就分为以下几个步骤:

  1. 使用lsusb来确定外接键盘的ID并记下,后面会用到。例如:

    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 096: ID 046a:0014 Cherry GmbH 
    Bus 001 Device 094: ID 046a:0011 Cherry GmbH G83 (RS 6000) Keyboard
    Bus 001 Device 005: ID 17ef:100a Lenovo ThinkPad Mini Dock Plus Series 3
    Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
    
  2. 确定需要映射键位的keycode,推荐使用getscancodes来检测对应键位的keycode,下载地址在这里, 下载后可以根据自己的情况进行编译:

    $ tar -xzf getscancodes-1.0.tar.gz
    $ cd getscancodes
    $ make
    gcc -O2 -Wall -c -o getscancodes.o getscancodes.c
    gcc -o getscancodes getscancodes.o
    $ ./getscancodes 
    Usage: ./getscancodes /dev/input/eventX
    Where X = input device number
    

    当然我是直接使用的下载文件夹中编译好的getscancodes文件。由于每个输入设备在/dev/input目录下都有一个对应的event文件,可以通过插拔对应的输入设备来确定设备对应的是哪个event文件,然后就可以使用getscancodes来确定对应键盘键位的keycode,例如$ sudo ./getscancodes /dev/input/event11

    Input driver version is 1.0.1
    Input device ID: bus 0x3 vendor 0x46a product 0x14 version 0x111
    Input device name: "HID 046a:0014"
    458850 (0x70062)
    

    其中按下对应键后屏幕输出的信息就是这个键位对应的信息,其中第四行中的0x70062就是对应键的keycode。

  3. 创建映射配置文件。在确定了输入设备ID和对应键位的keycode后,就可以在/etc/udev/hwdb.d/目录下创建配置文件来实现映射,配置文件必须以hwdb作为扩展名,示例内容如下:

    keyboard:usb:v046Ap0014*
     KEYBOARD_KEY_0x70062=mute
     KEYBOARD_KEY_0x70059=calc
     KEYBOARD_KEY_0x70029=prog1
    

    其中第一行指明了需要修改映射的输入设备,其中v046Ap0014*就对应输入键盘的ID,注意:ID中的字母必须为大写,并以v开头,p分隔和*号结尾。
    后面的几行必须以空格开头,等号前的16进制数据部分就是对应键的keycode,等号后面为键映射后的标示符,其中有效的标示符大家可以查看这里。创建好了配置文件4. 后就可以通过重启或者$ sudo udevadm -d hwdb –update;sudo udevadm -d control –reload来使配置生效。
    最后测试使用第二种方法成功将我的外接键盘进行了映射。但是还有一个问题是,如果在映射生效后如果再插拔设备,那么本次映射就失效了,需要重新执行第4步来重新使配置生效。不过好在这个问题应该可以通过shell脚本解决。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Ubuntu 20.04上修改键盘布局,你可以按照以下步骤进行操作: 1. 打开终端,可以通过按下Ctrl + Alt + T组合键来快速打开终端。 2. 运行以下命令来修改键盘布局配置文件: ``` sudo nano /etc/default/keyboard ``` 3. 在打开的文件中,找到`XKBLAYOUT`属性行。这一行定义了当前的键盘布局。你可以将其值修改为你想要的布局代码。例如,如果你想将键盘布局修改为法语,你可以将`XKBLAYOUT`的值改为`fr`。 4. 保存修改,按下Ctrl + X,然后按下Y键确认保存,最后按下Enter键退出编辑器。 5. 重新启动系统或注销并重新登录,以使修改生效。 通过这些步骤,你应该能够成功地在Ubuntu 20.04上修改键盘布局。请注意,这个方法适用于Ubuntu 20.04版本,对于其他版本可能会有所不同。\[2\] #### 引用[.reference_title] - *1* *3* [Ubuntu修改默认键盘布局的方法(适用于13.04|14.04)](https://blog.csdn.net/linux_embedded/article/details/40016947)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Ubuntu20.04以及Ubuntu18.04修改键盘布局(法语键盘)](https://blog.csdn.net/weixin_42219627/article/details/116461884)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值