700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 键盘研究:按键 键码 键符号

键盘研究:按键 键码 键符号

时间:2020-05-29 08:00:41

相关推荐

键盘研究:按键 键码 键符号

----------------------------------------

按键,键码,键符号

----------------------------------------

话说105键盘,也只需要105个键码, 看了下我的dell 笔记本101个按键

它的键码分布又是如何呢?

用xev 工具测试,以下按键码,键符号,按键的方式表示了它的布局。

了解它有什么用呢? 全局感!

1. 键码128个就够了

2. 功能键,控制键符号用到了16位, 高8位为ff, 低8位尽量保持与ascii有关联。例如0x13,0x1b等

常规的字母数字符号键的符号值是其ascii 码值

以下为xev 输出的简化整理. 显然只突出了keycode, keysym, keymap

字母键及数字键

keycode 38 (keysym 0x61, a)

keycode 56 (keysym 0x62, b)

keycode 54 (keysym 0x63, c)

keycode 40 (keysym 0x64, d)

keycode 26 (keysym 0x65, e)

keycode 41 (keysym 0x66, f)

keycode 42 (keysym 0x67, g)

keycode 43 (keysym 0x68, h)

keycode 31 (keysym 0x69, i)

keycode 44 (keysym 0x6a, j)

keycode 45 (keysym 0x6b, k)

keycode 46 (keysym 0x6c, l)

keycode 58 (keysym 0x6d, m)

keycode 57 (keysym 0x6e, n)

keycode 32 (keysym 0x6f, o)

keycode 33 (keysym 0x70, p)

keycode 24 (keysym 0x71, q)

keycode 27 (keysym 0x72, r)

keycode 39 (keysym 0x73, s)

keycode 28 (keysym 0x74, t)

keycode 30 (keysym 0x75, u)

keycode 55 (keysym 0x76, v)

keycode 25 (keysym 0x77, w)

keycode 53 (keysym 0x78, x)

keycode 29 (keysym 0x79, y)

keycode 52 (keysym 0x7a, z)

keycode 19 (keysym 0x30, 0)

keycode 10 (keysym 0x31, 1)

keycode 11 (keysym 0x32, 2)

keycode 12 (keysym 0x33, 3)

keycode 13 (keysym 0x34, 4)

keycode 14 (keysym 0x35, 5)

keycode 15 (keysym 0x36, 6)

keycode 16 (keysym 0x37, 7)

keycode 17 (keysym 0x38, 8)

keycode 18 (keysym 0x39, 9)

功能键

keycode 67 (keysym 0xffbe, F1)

keycode 68 (keysym 0xffbf, F2)

keycode 69 (keysym 0xffc0, F3)

keycode 70 (keysym 0xffc1, F4)

keycode 71 (keysym 0xffc2, F5)

keycode 72 (keysym 0xffc3, F6)

keycode 73 (keysym 0xffc4, F7)

keycode 74 (keysym 0xffc5, F8)

keycode 75 (keysym 0xffc6, F9)

keycode 76 (keysym 0xffc7, F10)

keycode 95 (keysym 0xffc8, F11)

keycode 96 (keysym 0xffc9, F12)

控制键

keycode 50 (keysym 0xffe1, Shift_L)

keycode 62 (keysym 0xffe2, Shift_R)

keycode 37 (keysym 0xffe3, Control_L)

keycode 105 (keysym 0xffe4, Control_R)

keycode 64 (keysym 0xffe9, Alt_L)

keycode 108 (keysym 0xffea, Alt_R)

keycode 9 (keysym 0xff1b, Escape)

keycode 22 (keysym 0xff08, BackSpace)

keycode 36 (keysym 0xff0d, Return)

keycode 118 (keysym 0xff63, Insert)

keycode 119 (keysym 0xffff, Delete)

keycode 112 (keysym 0xff55, PgUp)

keycode 117 (keysym 0xff56, PgDn)

keycode 110 (keysym 0xff50, Home)

keycode 115 (keysym 0xff57, End)

keycode 111 (keysym 0xff52, Up)

keycode 116 (keysym 0xff54, Down)

keycode 113 (keysym 0xff51, Left)

keycode 114 (keysym 0xff53, Right)

keycode 107 (keysym 0xff61, Print)

符号键

keycode 20 (keysym 0x2d, minus)

keycode 21 (keysym 0x3d, equal)

keycode 34 (keysym 0x5b, bracketleft)

keycode 35 (keysym 0x5d, bracketright)

keycode 51 (keysym 0x5c, backslash)

keycode 47 (keysym 0x3b, semicolon)

keycode 48 (keysym 0x27, apostrophe)

keycode 59 (keysym 0x2c, comma)

keycode 60 (keysym 0x2e, period)

keycode 61 (keysym 0x2f, slash)

keycode 49 (keysym 0x60, grave)

小键盘我没有测,不影响理解了。

组合键输入: 左shift1,2,3,q,w,e 与右shift1,2,3,q,w,e

keycode 10 (keysym 0x21, exclam)

keycode 11 (keysym 0x40, at)

keycode 12 (keysym 0x23, numbersign)

keycode 24 (keysym 0x51, Q)

keycode 25 (keysym 0x57, W)

keycode 26 (keysym 0x45, E)

keycode 10 (keysym 0x21, exclam)

keycode 11 (keysym 0x40, at)

keycode 12 (keysym 0x23, numbersign)

keycode 24 (keysym 0x51, Q)

keycode 25 (keysym 0x57, W)

keycode 26 (keysym 0x45, E)

我们看到,左shift+1, 右shift+1, 1的keycode 都是10,

但是,单按键10映射到0x31, 而shift键按下时映射到0x21

同样的keycode 24, 不按shift 映射到q, 按shift映射到Q

a.组合键盘keycode, 研究发现,ctrl+字母数字键,alt+字母数字键其keycode,及keysym与不按ctrl,alt一致

keycode 10 (keysym 0x31, 1)

keycode 11 (keysym 0x32, 2)

keycode 12 (keysym 0x33, 3)

keycode 24 (keysym 0x71, q)

keycode 25 (keysym 0x77, w)

keycode 26 (keysym 0x65, e)

可见keycode 是不变的,叫键盘扫描码, 根据不同状态映射成不同符号

b.键盘符号对应的英文名称,

state 含义还不是很清楚,当然是与状态有关,待叙吧。

state 0x11, keycode 49 (keysym 0x7e, asciitilde)

state 0x11, keycode 10 (keysym 0x21, exclam)

state 0x11, keycode 11 (keysym 0x40, at)

state 0x11, keycode 12 (keysym 0x23, numbersign)

state 0x11, keycode 13 (keysym 0x24, dollar)

state 0x11, keycode 14 (keysym 0x25, percent)

state 0x11, keycode 15 (keysym 0x5e, asciicircum)

state 0x11, keycode 16 (keysym 0x26, ampersand)

state 0x11, keycode 17 (keysym 0x2a, asterisk)

state 0x11, keycode 18 (keysym 0x28, parenleft)

state 0x11, keycode 19 (keysym 0x29, parenright)

state 0x11, keycode 20 (keysym 0x5f, underscore)

state 0x11, keycode 21 (keysym 0x2b, plus)

state 0x11, keycode 34 (keysym 0x7b, braceleft)

state 0x11, keycode 35 (keysym 0x7d, braceright)

state 0x11, keycode 51 (keysym 0x7c, bar)

state 0x11, keycode 47 (keysym 0x3a, colon)

state 0x11, keycode 48 (keysym 0x22, quotedbl)

state 0x11, keycode 59 (keysym 0x3c, less)

state 0x11, keycode 60 (keysym 0x3e, greater)

state 0x11, keycode 61 (keysym 0x3f, question)

state 0x11, keycode 62 (keysym 0xffe2, Shift_R)

state 0x10, keycode 23 (keysym 0xff09, Tab)

state 0x10, keycode 66 (keysym 0xffe5, Caps_Lock)

state 0x12, keycode 77 (keysym 0xff7f, Num_Lock)

state 0x2, keycode 37 (keysym 0xffe3, Control_L)

state 0x6, keycode 54 (keysym 0x43, C)

----------------------------------------

xmodmap 使用

----------------------------------------

1. 简单介绍

keycode, keysym 用xmodmap 工具查看一目了然

xmodmap -pk 打印keycode, keysym map

xmodmap -h 可以查看它的帮助.

例子:

xmodmap -e 'keycode 38=b B'

与如下写法等价

xmodmap -e 'keycode 38=0x62 0x42'

执行完这条命令后,控制台输入不了a键了,全被转换为b了,

赶紧变回来吧。输入不了a字符可以用数字带入.好在命令里没有a字符.

xmodmap -e 'keycode 38=0x61 0x41'

一个keycode 可以对应7个keysym, 但xmodmap -pk 也只显示了4个,

我只知道第一个对应default, 第2个对应shift按下,其它不知道怎么用

我又变了一下,把1映射为2

xmodmap -e 'keycode 10=2 @'

这下惨了!!! 我再也输不进1了, 也没有办法再把映射改回来了,因为输不进数字1了。

因为新启动的shell 也用了改动的map, 只能重启机器来复原了.

2. 把capslock 映射成control 按键

!删除旧modifier lock 映射

remove lock = Caps_Lock

!键符号变换

keysym Caps_Lock = Control_L

!重绑定control 修饰符, 这样就加入了Caps_Lock

add control = Control_L

可以将上述指令存为一个文件例如.mymap, 放到根目录下

然后执行 xmodmap ~/.mymap 就可以了。

若想开机自动运行, 加到/etc/profile 中 或 .bashrc 中,

.bashrc 下加一些手段最好保证只运行一次. 这里就不给例子了.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。