作為一個(gè)emacs使用者,覺得把大寫鎖定和左側(cè)的ctrl鍵交換一下是比較方便的做法秘通,但是發(fā)現(xiàn)插了外接鍵盤之后之前修改的映射沒法用了,于是上網(wǎng)搜索了一下解決方案,參考: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來檢測對應(yīng)鍵位的keycode,下載地址在這里裆悄, 下載后可以根據(jù)自己的情況進(jìn)行編譯:
$ 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```
當(dāng)然我是直接使用的下載文件夾中編譯好的getscancodes文件矛纹。由于每個(gè)輸入設(shè)備在*/dev/input*目錄下都有一個(gè)對應(yīng)的event文件,可以通過插拔對應(yīng)的輸入設(shè)備來確定設(shè)備對應(yīng)的是哪個(gè)event文件光稼,然后就可以使用getscancodes來確定對應(yīng)鍵盤鍵位的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)
其中按下對應(yīng)鍵后屏幕輸出的信息就是這個(gè)鍵位對應(yīng)的信息,其中第四行中的***0x70062***就是對應(yīng)鍵的keycode艾君。
創(chuàng)建映射配置文件采够。在確定了輸入設(shè)備ID和對應(yīng)鍵位的keycode后,就可以在*/etc/udev/hwdb.d/*目錄下創(chuàng)建配置文件來實(shí)現(xiàn)映射冰垄,配置文件必須以hwdb作為擴(kuò)展名蹬癌,示例內(nèi)容如下:
keyboard:usb:v046DpC31C*
KEYBOARD_KEY_0x70039=rightctrl
KEYBOARD_KEY_0x700e4=capslock
其中第一行指明了需要修改映射的輸入設(shè)備,其中v046Ap0014*就對應(yīng)輸入鍵盤的ID虹茶,**注意:ID中的字母必須為大寫冀瓦,并以v開頭,p分隔和*號結(jié)尾写烤。** 后面的幾行必須以空格開頭翼闽,等號前的16進(jìn)制數(shù)據(jù)部分就是對應(yīng)鍵的keycode,等號后面為鍵映射后的標(biāo)示符洲炊,其中有效的標(biāo)示符大家可以查看[這里](https://hal.freedesktop.org/quirk/quirk-keymap-list.txt)感局。創(chuàng)建好了配置文件4. 后就可以通過重啟或者*$ sudo udevadm -d hwdb –update;sudo udevadm -d control –reload*來使配置生效尼啡。 最后[測試](http://lib.csdn.net/base/softwaretest)使用第二種方法成功將我的外接鍵盤進(jìn)行了映射。但是還有一個(gè)問題是询微,如果在映射生效后如果再插拔設(shè)備崖瞭,那么本次映射就失效了,需要重新執(zhí)行第4步來重新使配置生效撑毛。不過好在這個(gè)問題應(yīng)該可以通過shell腳本解決书聚。
以下是標(biāo)識符:
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