Ubuntu修改外接键盘的映射

作为一个emacs使用者,觉得把大写锁定和左侧的ctrl键交换一下是比较方便的做法,但是发现插了外接键盘之后之前修改的映射没法用了,于是上网搜索了一下解决方案,参考:http://blog.csdn.net/yxz329130952/article/details/52349163

HWDB

使用lsusb来确定外接键盘的ID并记下,后面会用到。例如:
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching HubBus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 096: ID 046a:0014 Cherry GmbH Bus 001 Device 094: ID 046a:0011 Cherry GmbH G83 (RS 6000) KeyboardBus 001 Device 005: ID 17ef:100a Lenovo ThinkPad Mini Dock Plus Series 3Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver

确定需要映射键位的keycode,推荐使用getscancodes来检测对应键位的keycode,下载地址在这里, 下载后可以根据自己的情况进行编译:

$ cd getscancodes
$ makegcc -O2 -Wall -c -o getscancodes.o getscancodes.cgcc -o getscancodes getscancodes.o
$ ./getscancodes Usage: ./getscancodes /dev/input/eventXWhere X = input device number```

当然我是直接使用的下载文件夹中编译好的getscancodes文件。由于每个输入设备在*/dev/input*目录下都有一个对应的event文件,可以通过插拔对应的输入设备来确定设备对应的是哪个event文件,然后就可以使用getscancodes来确定对应键盘键位的keycode,例如*$ sudo ./getscancodes /dev/input/event11*
Input driver version is 1.0.1Input device ID: bus 0x3 vendor 0x46a product 0x14 version 0x111Input device name: "HID 046a:0014"458850 (0x70062)

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

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

keyboard:usb:v046DpC31C*
KEYBOARD_KEY_0x70039=rightctrl
KEYBOARD_KEY_0x700e4=capslock


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

以下是标识符:

0
1
102nd
2
3
4
5
6
7
8
9
a
ab
addressbook
again
alterase
angle
apostrophe
archive
audio
aux
b
back
backslash
backspace
bassboost
battery
blue
bluetooth
bookmarks
break
brightnessdown
brightnessup
brl_dot1
brl_dot2
brl_dot3
brl_dot4
brl_dot5
brl_dot6
brl_dot7
brl_dot8
c
calc
calendar
camera
cancel
capslock
cd
channel
channeldown
channelup
chat
clear
close
closecd
coffee
comma
compose
computer
config
connect
copy
cut
cyclewindows
d
database
del_eol
del_eos
delete
deletefile
del_line
digits
direction
directory
displaytoggle
documents
dot
down
dvd
e
edit
editor
ejectcd
ejectclosecd
email
end
enter
epg
equal
esc
exit
f
f1
f10
f11
f12
f13
f14
f15
f16
f17
f18
f19
f2
f20
f21
f22
f23
f24
f3
f4
f5
f6
f7
f8
f9
fastforward
favorites
file
finance
find
first
fn
fn_1
fn_2
fn_b
fn_d
fn_e
fn_esc
fn_f
fn_f1
fn_f10
fn_f11
fn_f12
fn_f2
fn_f3
fn_f4
fn_f5
fn_f6
fn_f7
fn_f8
fn_f9
fn_s
forward
forwardmail
front
g
games
goto
graphicseditor
grave
green
h
hangeul
hanguel
hanja
help
henkan
hiragana
home
homepage
hp
i
info
insert
ins_line
iso
j
k
katakana
katakanahiragana
kbdillumdown
kbdillumtoggle
kbdillumup
keyboard
kp0
kp1
kp2
kp3
kp4
kp5
kp6
kp7
kp8
kp9
kpasterisk
kpcomma
kpdot
kpenter
kpequal
kpjpcomma
kpleftparen
kpminus
kpplus
kpplusminus
kprightparen
kpslash
l
language
last
left
leftalt
leftbrace
leftctrl
leftmeta
leftshift
linefeed
list
m
macro
mail
media
memo
menu
messenger
mhp
min_interesting
minus
mode
move
mp3
msdos
muhenkan
mute
n
new
news
next
nextsong
numlock
o
ok
open
option
p
pagedown
pageup
paste
pause
pausecd
pc
phone
play
playcd
player
playpause
power
power2
presentation
previous
previoussong
print
prog1
prog2
prog3
prog4
program
props
pvr
q
question
r
radio
record
red
redo
refresh
reply
reserved
restart
rewind
right
rightalt
rightbrace
rightctrl
rightmeta
rightshift
ro
s
sat
sat2
save
screen
screenlock
scrolldown
scrolllock
scrollup
search
select
semicolon
send
sendfile
setup
shop
shuffle
slash
sleep
slow
sound
space
sport
spreadsheet
stop
stopcd
subtitle
suspend
switchvideomode
sysrq
t
tab
tape
teen
text
time
title
tuner
tv
tv2
twen
u
undo
unknown
up
v
vcr
vcr2
vendor
video
videophone
voicemail
volumedown
volumeup
w
wakeup
wlan
wordprocessor
www
x
xfer
y
yellow
yen
z
zenkakuhankaku
zoom
zoomin
zoomout
zoomreset

你可能感兴趣的:(Ubuntu修改外接键盘的映射)