Linux更改键位映射

linux使用xmodmap管理键位映射。

一、xmodmap

(一)语法格式

xmodmap [选项] [filename]

(二)选项

-display host:dpy     X server to use
-verbose, -quiet     turn logging on or off
-n     don't execute changes, just show like make
-e expression     execute string
-pm     print modifier map
-pk     print keymap table
-pke     print keymap table as expressions
-pp     print pointer map
-help     print this usage message
-grammar     print out short help on allowable input
-version     print program version
-     read standard input

(三)参数

文件名:可以把xmodmap支持的命令,写进文件里,然后由xmodmap批量执行

(四)示例用法

1.-e选项

如果命令很少,可以用

xmodmap -e expression

2.使用文件

把命令写到file里,然后执行

xmodmap file

二、概念原理

(一)keycode

键盘某个键位按下去之后会向Linux系统发送一个code,这个code叫keycode,该code是不可更改的。

keycode是一个数字,值从8到255

(二)keysym

keysym可以理解为输入字符函数。
linux系统输入一个字符,比如a,是系统调用某个函数实现的。可以简单理解,keysym就是那个函数。

举一些keysym的例子:

(a) (A)
(s) (S)
(d) (D)
(f) (F)
(g) (G)
(h) (H)
(j) (J)
(k) (K)
(l) (L)
(semicolon) (colon)
(apostrophe) (quotedbl)

(三)keycode绑定keysym

keycode与keysym之间存在映射。

比如,a键keycode与a字符的keysym绑定,那么当按下键盘的a键时,对应的函数就会调用,系统就输入了字符a。

可以手动绑定keycode与keysym,也就是说,完全可以实现,按下a键,输入b字符。

使用如下命令绑定:

keycode <keycode> = <keysym>...

如,

keycode 50 = Caps_Lock

keycode  38 = a A

上面命令可以用xmodmap -e执行,也可以把它们写到文件里,然后用xmodmap file执行。

使用xmodmap -pke 命令查看目前keycode与keysym的绑定

(四)modifier

也叫修饰符。
像control、alt等按键,多了一个叫“修饰符”的概念,就是在按下键之后,除了输入字符,还多出一种功能(比如切换大小写),这个功能就是修饰功能。

有如下修饰符:

shift
lock
control
mod1
mod2
mod3
mod4
mod5

(五)绑定modifier与keysym

可以手动绑定modifier与keysym,也就是说,完全可以实现按下a键,切换大小写

使用如下命令绑定:

add MODIFIER = KEYSYM ...

如,

add Lock = Caps_Lock
add shift = Shift_L Shift_R

清除modifier的所有绑定:

clear MODIFIER

如,

clear Lock
clear shift

清除modifier的某个keysym:

remove MODIFIER = KEYSYM ...

如,

remove shift = Shift_R

上面可以使用xmodmap -e执行,也可以把它们写到文件里,然后使用xmodmap file执行。

使用xmodmap -pm查看目前modifier与keysym的绑定

shift Shift_R (0x3e), Shift_L (0x42)
lock Caps_Lock (0x32)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Alt_L (0xcc), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 ISO_Level5_Shift (0xcb)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c)


 

三、实战

互换shift和capslock

(一)~目录中创建.Xmodmap文件把下面的代码填进去

clear Lock
clear shift
keycode 50 = Caps_Lock
keycode 66 = Shift_L
add Lock = Caps_Lock
add shift = Shift_L Shift_R

代码意思就是:先清除modifier的keysym绑定,然后再重新绑定keycode与keysym,最后再绑定modifier与keysym。


(二)然后在终端输入xmodmap ~/.Xmodmap就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值