xfce 下 键盘映射 多媒体按键的个人经验

各种窗口管理器和美化相关
头像
qingliang
帖子: 114
注册时间: 2007-07-07 20:17

xfce 下 键盘映射 多媒体按键的个人经验

#1

帖子 qingliang » 2008-12-01 23:49

去了一趟百脑汇 去买硬盘线 没想到 碰到 星宇出品的士兵突进键盘鼠标套装50才

超爽 马上入手 :em09
图片
星宇士兵突击网吧专用版红绿相间的外包装盒,非常符合士兵突击的命名。产品外观采用黑色基调,整体采用了圆滑的设计风格。玩家常用的WASD键及上下左右键采用了黄色的键帽设计,显出了其专业游戏键盘的特性。
图片
键帽表面采用激光镭射,字体不易磨损。特殊静音功能,营造安静工作环境,这样一是可以保证通宵的游戏玩家处于安静的环境中,另外也可以避免长时间敲击的疲劳感。

超高质量,按键机械寿命和电气寿命>300万次,连接线抗拉强度>5KG。网际3D滚轮功能和无段缩放功能,您不需移动鼠标便可直接上下移动画面,按下滚轮即可使用Autoscroll(八方向自动卷轴)

好了 不做广告了 面对一大堆特殊的多媒体键 不能用可太可惜了 所以一定要利用上

所以开始设置

首先 通常在安装linux的时候一半选择的就是普通的107键US的键盘

这个选项的意思就是把107键US键盘的映射加入到设置中

因为有些人使用的是笔记本 所以键盘当然不一样

还有很多外国人使用的键盘是和美国英语的键盘不一样的 他们有专门的按键

比如一些特殊的发音 不举例了哦

中文如果按照笔画映射 那估计就用5个就足够了 ^^ 最多十几个

所以还是按照拼音来映射 所以和英文一样 (我的理解)

想要映射多媒体按键需要以下准备:

Xmodmap
这个软件直接打开终端输入:

代码: 全选

xmodmap
就ok了

如果正常的话会显示以下(不正常 就自己去安):
xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x6d)
mod1 Alt_L (0x40), Alt_R (0x71), Meta_L (0x9c)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x7f), Hyper_L (0x80)
mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c)
这些是安装选项导致的自动映射的一些选项

终端输入:
xmodmap --help
可以看到xmodmap的使用帮助
usage: xmodmap [-options ...] [filename]

where options include:
-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
-grammar print out short help on allowable input
- read standard input
然后输入:

代码: 全选

xmodmap --pke
之后显示一大堆有规律的代码 这些就是具体按键的映射表格及内容
...
keycode 23 = Tab ISO_Left_Tab
keycode 24 = q Q
keycode 25 = w W
keycode 26 = e E
keycode 27 = r R
keycode 28 = t T
keycode 29 = y Y
keycode 30 = u U
keycode 31 = i I
keycode 32 = o O
keycode 33 = p P
keycode 34 = bracketleft braceleft
keycode 35 = bracketright braceright
...
很浅显易懂吧

keycode 32就是32号按键 =号后面就是代表映射的内容

keycode 32 就是字母o 的O在后面代表shift按键按住时

下面这些都看懂了 就可开始映射 自己的多媒体按键了

有两个问题要解决:
1 这些按键都是多少号
2 映射内容都是什么

这时候就要使用xev了

还是终端里输入:

代码: 全选

xev
然后就会看到一个框框
图片

不过这个没用 ^^

还是看终端

不要瞎晃动鼠标 单纯的按一个键盘上的按键看看

比如我还是按字母o

终端显示一段字符 不过最有用的 都能看出来就是那个
...
keycode 32 (keysym 0x6f, o)
...
这下就能知道这个按键的号码了

然后把自己键盘的特殊按键都按一遍 然后记下都是对应的多少号

象我的键盘对应的就是
230
239
231
235
236
130
160
164
237
232
234
233
176
144
162
153
174
多吧 ^^&

然后是第二个问题 就是映射内容也就是功能是什么

打开文件

/usr/share/X11/XKeysymDB

这里面有他们的列表 选吧

因为用的是linux 所以就选择
! The definitions here should match <X11/XF86keysym.h>
下面的这些就可以了

我是按照按键上的图进行瞎选的

然后建立一个新文件 随便起名 例如我的就叫做mykey

然后按照之前xmodmap -pke那样显示的格式 把自己的多媒体按键 写进去

下面是我的:
keycode 230 = XF86MyComputer
keycode 229 = XF86Search
keycode 231 = XF86Refresh
keycode 235 = XF86Phone
keycode 236 = XF86Mail
keycode 130 = XF86HomePage
keycode 160 = XF86AudioMute
keycode 164 = XF86Display
keycode 237 = XF86Close
keycode 232 = XF86AudioMedia
keycode 234 = XF86Back
keycode 233 = XF86Forward
keycode 176 = XF86AudioRaiseVolume
keycode 144 = XF86AudioPrev
keycode 162 = XF86AudioPlay
keycode 153 = XF86AudioNext
keycode 174 = XF86AudioLowerVolume
其实 自己想写哪个都行 不过还是为了追求原始效果

保存后

在终端输入:

代码: 全选

xmodmap ~/mykey
如果正常 什么都不显示 -_-

然后输入:

代码: 全选

xmodmap -pke
就能看到改变的效果了
例如我这几个按键都能看到了
图片

这下这几个按键都出来了

然后加入到自启动中去 如果不愿意 不强求

菜单->设置->自启动程序

点添加 名字 描述自己随意写

命令就写xmodmap ~/mykey就差不多了 (应该差不多了吧)

不过映射之后xfce下 默认的快捷键 大部分还是不支持的 需要自己设置

如果你的按键 和映射的功能正好能被支持 那就太方便了

比如我的按键映射功能是
XF86Refresh XF86Back XF86Forward 这几个都可以直接用 firefox 就支持

但是其他的 还是有些没反应 只好自己设置

下面打开 菜单->settings->settings manager 里面的键盘
图片
这里面的先选择左侧的添加 添加一个自己的设置 随便起名字

然后在选上自己的设置 点击右下的那个添加

添加一个自己想要的 我想直接打开 xfce的播放器
就在命令里输入如下
图片
选择确定 出现下面画面
图片
这时候我按下自己刚才设置的一个多媒体按键

就能显示成最后下面那样了 想要打开播放器 直接按键盘上的那个多媒体键就ok了
图片

当然还能设置好多 :em11

我把终端 iceweasel(我改到debian+xfce了) abiword都设置上了

这下可以更懒了 都不用鼠标选了 直接按一个按键就ok了

每个人都有不同的设置 还有无数用法

比如有的键盘 xubuntu 或者debian 默认的映射总是错误

就可以靠这个方法纠正

虽然很简单但是写了很罗嗦

所以有意见不许提 有建议小声说 谢谢

在blogger留了个小存档http://zhh9ws.blogspot.com/2008/12/xfce.html
附件
Screenshot-6.png
Screenshot-5.png
Screenshot-5.png (15.18 KiB) 查看 7776 次
Screenshot-4.png
Screenshot-4.png (12.06 KiB) 查看 7776 次
Screenshot-3.png
Screenshot-2.png
Screenshot-2.png (3.89 KiB) 查看 7779 次
xingyu.jpg
头像
jiachaorui
帖子: 187
注册时间: 2007-05-16 22:30

Re: xfce 下 键盘映射 多媒体按键的个人经验

#2

帖子 jiachaorui » 2008-12-16 10:42

这个正是我需要的,谢谢!
*IdeaPad Y450A TSI/T6600/PM45/1TB/GT 130M/2G DDR3/14' LED@1366X768 (2009-05)
xubuntu/Windows 7 32bit
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: xfce 下 键盘映射 多媒体按键的个人经验

#3

帖子 eexpress » 2008-12-16 10:47

头次看到这么认真的。 :em11
● 鸣学
weiwei330
帖子: 94
注册时间: 2007-06-12 17:54

Re: xfce 下 键盘映射 多媒体按键的个人经验

#4

帖子 weiwei330 » 2009-01-03 16:03

头次看到这么认真的写键盘教程的,谢谢拉
tangb4c
帖子: 1
注册时间: 2008-08-11 10:18

Re: xfce 下 键盘映射 多媒体按键的个人经验

#5

帖子 tangb4c » 2009-01-04 23:32

赞一个,很有用的。
头像
追疯少年
帖子: 950
注册时间: 2008-03-13 23:37
联系:

Re: xfce 下 键盘映射 多媒体按键的个人经验

#6

帖子 追疯少年 » 2009-01-23 1:13

xmodmap -pk
就能看到你的按键的系统代码值了(keysym value),,如下
root@jia-laptop:~# xmodmap -pk
There are 6 KeySyms per KeyCode; KeyCodes range from 8 to 255.

KeyCode Keysym (Keysym) ...
Value Value (Name) ...

8
9 0xff1b (Escape)
10 0x0031 (1) 0x0021 (exclam)
11 0x0032 (2) 0x0040 (at)
12 0x0033 (3) 0x0023 (numbersign)
13 0x0034 (4) 0x0024 (dollar)
14 0x0035 (5) 0x0025 (percent)
15 0x0036 (6) 0x005e (asciicircum)
16 0x0037 (7) 0x0026 (ampersand)
17 0x0038 (8) 0x002a (asterisk)
18 0x0039 (9) 0x0028 (parenleft)
19 0x0030 (0) 0x0029 (parenright)
20 0x002d (minus) 0x005f (underscore)
21 0x003d (equal) 0x002b (plus)
22 0xff08 (BackSpace) 0xfed5 (Terminate_Server)
头像
xuper
帖子: 2
注册时间: 2010-02-23 11:01

Re: xfce 下 键盘映射 多媒体按键的个人经验

#7

帖子 xuper » 2010-03-01 14:09

万分感谢,我是个新手,全靠你们这些大神发这些简单教程起步的,希望楼主多多发表 :em11
gisopus
帖子: 60
注册时间: 2007-08-12 18:47

Re: xfce 下 键盘映射 多媒体按键的个人经验

#8

帖子 gisopus » 2010-03-05 21:31

marks,学习中
Core2 T5670
Ram 3G
NV9300MGS
Fedora 15

Celeon 1.7
Ram 512M
i845G
Debian5+Awesome2
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: xfce 下 键盘映射 多媒体按键的个人经验

#9

帖子 wangdu2002 » 2010-03-05 22:46

很有意思,顶后再瞧瞧。 :em11
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
smannue
帖子: 5
注册时间: 2010-08-04 12:47

Re: xfce 下 键盘映射 多媒体按键的个人经验

#10

帖子 smannue » 2010-08-12 20:23

mark
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

Re: xfce 下 键盘映射 多媒体按键的个人经验

#11

帖子 pityonline » 2010-08-21 15:15

挖个坟,键盘映射的贴子挺多,就不再开新贴了。

1、键盘与鼠标键映射。
我想把键盘上的Menu键映射为鼠标中键,其实鼠标左右键同时按下就是中键功能,触摸板右上角也有个中键区,但特别不方便,不小心碰上会把不想粘贴的东西贴上。键盘上的Menu键感觉没什么用处,离触摸板也比较近,所以有了这个需求。
已知:

代码: 全选

Menu: keycode 135 (keysym 0xff67, Menu) 
鼠标中键:button2
以上是用xev探测到的,但用

代码: 全选

xmodmap -e "keysym Menu = button 2" -n
测试会提示:

代码: 全选

xmodmap:  commandline:1:  bad keysym name 'button' in keysym list
! dump of work queue
        keycode 0x87 = 2
因为keysym中没有button鼠标键的定义,那应该怎么映射呢?

2、功能键及多媒体键。
刚买笔记本时装的9.04,笔记本自带的功能键和多媒体键除了滑动音量键不能用全都能正常使用,现在到10.04了,除了播放/暂停、停止、上一首、下一首和静音键能用,其它全挂了。现在失效的按键为Web、Main、Bluetooth和ePower键,键盘快捷键中显示的倒是蛮多,但就是不能用,最关键的是,这些键按下去xev根本探测不到……

3、Fn+数字小键盘。
我的Fn组合键大都可以用,但还是有一个问题,就是数字小键盘,如果想用小键盘输入数字必须先按下Fn+Num键开启小键盘,但在输入数字与字母组合时要不停地解锁、锁定数字小键盘,主键盘区的数字键离得太远又分散,不方便。曾经一段时间里,好像是9.04时可以直接按住Fn键再按小键盘上的数字键输入的,而不需要解锁数字键盘,输完数字释放Fn键又可正常输入字母,但从9.04后这个功能就没有了,只有在计算器中才能实现。据我测试,按住Fn再按数字小键盘会把2、4、6、8四个键变为左、下、右、上四个方向键,其它数字键无效。9.04时的win7还不具备按住Fn+数字小键盘输入数字的功能,但前些时候一次更新实现了这个功能,而ubuntu却从有到无了。

或许是牢骚吧,或许这些也无解,还是希望遇到过这方面问题的同学看看,或许能解决呢……
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

Re: xfce 下 键盘映射 多媒体按键的个人经验

#12

帖子 pityonline » 2010-08-21 21:18

已经定义好了Fn+数字键盘功能,再也不用先Fn+Num启动数字键盘输入小键盘上的数字然后再Fn+Num关掉数字键盘输入字母了。

xmodmap -pke|grep KP
这是我笔记本上原始的Fn组合键定义,估计KP就是KeyPad的意思:

代码: 全选

keycode  63 = KP_Multiply XF86_ClearGrab KP_Multiply XF86_ClearGrab
keycode  79 = KP_Home KP_7 KP_Home KP_7
keycode  80 = KP_Up KP_8 KP_Up KP_8
keycode  81 = KP_Prior KP_9 KP_Prior KP_9
keycode  82 = KP_Subtract XF86_Prev_VMode KP_Subtract XF86_Prev_VMode
keycode  83 = KP_Left KP_4 KP_Left KP_4
keycode  84 = KP_Begin KP_5 KP_Begin KP_5
keycode  85 = KP_Right KP_6 KP_Right KP_6
keycode  86 = KP_Add XF86_Next_VMode KP_Add XF86_Next_VMode
keycode  87 = KP_End KP_1 KP_End KP_1
keycode  88 = KP_Down KP_2 KP_Down KP_2
keycode  89 = KP_Next KP_3 KP_Next KP_3
keycode  90 = KP_Insert KP_0 KP_Insert KP_0
keycode  91 = KP_Delete KP_Decimal KP_Delete KP_Separator
keycode 104 = KP_Enter NoSymbol KP_Enter
keycode 106 = KP_Divide XF86_Ungrab KP_Divide XF86_Ungrab
keycode 125 = KP_Equal NoSymbol KP_Equal
keycode 129 = KP_Decimal NoSymbol KP_Decimal
原来是把Fn组合键定义了两重功能,而输入数字排在后面,于是把前面的功能直接删掉了,保存为 .xmodmap:

代码: 全选

keycode  79 = KP_7 KP_7
keycode  80 = KP_8 KP_8
keycode  81 = KP_9 KP_9
keycode  83 = KP_4 KP_4
keycode  84 = KP_5 KP_5
keycode  85 = KP_6 KP_6
keycode  87 = KP_1 KP_1
keycode  88 = KP_2 KP_2
keycode  89 = KP_3 KP_3
keycode  90 = KP_0 KP_0
执行 xmodmap .xmodmap 后就生效了,以后输入效率会大大增加!
上次由 pityonline 在 2010-08-21 21:43,总共编辑 1 次。
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

Re: xfce 下 键盘映射 多媒体按键的个人经验

#13

帖子 pityonline » 2010-08-21 21:40

代码: 全选

keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
keycode 124 = XF86PowerOff NoSymbol XF86PowerOff
keycode 128 = XF86LaunchA NoSymbol XF86LaunchA
keycode 141 = XF86Copy NoSymbol XF86Copy
keycode 143 = XF86Paste NoSymbol XF86Paste
keycode 145 = XF86Cut NoSymbol XF86Cut
keycode 147 = XF86MenuKB NoSymbol XF86MenuKB
keycode 148 = XF86Calculator NoSymbol XF86Calculator
keycode 150 = XF86Sleep NoSymbol XF86Sleep
keycode 151 = XF86WakeUp NoSymbol XF86WakeUp
keycode 152 = XF86Explorer NoSymbol XF86Explorer
keycode 153 = XF86Send NoSymbol XF86Send
keycode 155 = XF86Xfer NoSymbol XF86Xfer
keycode 156 = XF86Launch1 NoSymbol XF86Launch1
keycode 157 = XF86Launch2 NoSymbol XF86Launch2
keycode 158 = XF86WWW NoSymbol XF86WWW
keycode 159 = XF86DOS NoSymbol XF86DOS
keycode 160 = XF86ScreenSaver NoSymbol XF86ScreenSaver
keycode 162 = XF86RotateWindows NoSymbol XF86RotateWindows
keycode 163 = XF86Mail NoSymbol XF86Mail
keycode 164 = XF86Favorites NoSymbol XF86Favorites
keycode 165 = XF86MyComputer NoSymbol XF86MyComputer
keycode 166 = XF86Back NoSymbol XF86Back
keycode 167 = XF86Forward NoSymbol XF86Forward
keycode 169 = XF86Eject NoSymbol XF86Eject
keycode 170 = XF86Eject XF86Eject XF86Eject XF86Eject
keycode 171 = XF86AudioNext NoSymbol XF86AudioNext
keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause
keycode 173 = XF86AudioPrev NoSymbol XF86AudioPrev
keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
keycode 175 = XF86AudioRecord NoSymbol XF86AudioRecord
keycode 176 = XF86AudioRewind NoSymbol XF86AudioRewind
keycode 177 = XF86Phone NoSymbol XF86Phone
keycode 179 = XF86Tools NoSymbol XF86Tools
keycode 180 = XF86HomePage NoSymbol XF86HomePage
keycode 181 = XF86Reload NoSymbol XF86Reload
keycode 182 = XF86Close NoSymbol XF86Close
keycode 185 = XF86ScrollUp NoSymbol XF86ScrollUp
keycode 186 = XF86ScrollDown NoSymbol XF86ScrollDown
keycode 189 = XF86New NoSymbol XF86New
keycode 191 = XF86Tools NoSymbol XF86Tools
keycode 192 = XF86Launch5 NoSymbol XF86Launch5
keycode 193 = XF86MenuKB NoSymbol XF86MenuKB
keycode 200 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay
keycode 209 = XF86AudioPause NoSymbol XF86AudioPause
keycode 210 = XF86Launch3 NoSymbol XF86Launch3
keycode 211 = XF86Launch4 NoSymbol XF86Launch4
keycode 212 = XF86LaunchB NoSymbol XF86LaunchB
keycode 213 = XF86Suspend NoSymbol XF86Suspend
keycode 214 = XF86Close NoSymbol XF86Close
keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay
keycode 216 = XF86AudioForward NoSymbol XF86AudioForward
keycode 220 = XF86WebCam NoSymbol XF86WebCam
keycode 223 = XF86Mail NoSymbol XF86Mail
keycode 225 = XF86Search NoSymbol XF86Search
keycode 227 = XF86Finance NoSymbol XF86Finance
keycode 229 = XF86Shop NoSymbol XF86Shop
keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp
keycode 234 = XF86AudioMedia NoSymbol XF86AudioMedia
keycode 235 = XF86Display NoSymbol XF86Display
keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff
keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
keycode 239 = XF86Send NoSymbol XF86Send
keycode 240 = XF86Reply NoSymbol XF86Reply
keycode 241 = XF86MailForward NoSymbol XF86MailForward
keycode 242 = XF86Save NoSymbol XF86Save
keycode 243 = XF86Documents NoSymbol XF86Documents
keycode 244 = XF86Battery NoSymbol XF86Battery
keycode 245 = XF86Bluetooth NoSymbol XF86Bluetooth
keycode 246 = XF86WLAN NoSymbol XF86WLAN
我的所有功能键及多媒体键都在这儿了,但怎么从keycode去找实际的键位在哪里呢?而有的键用xev还检测不到,怎么把它们对应起来呢?
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

Re: xfce 下 键盘映射 多媒体按键的个人经验

#14

帖子 pityonline » 2010-08-21 22:09

重启电脑后提示是否载入可用的.xmodmap,我点载入,确定,但还是被打回了原形,看来还是需要命令行解决……
Screenshot-载入 modmap 文件.png
Screenshot-载入 modmap 文件.png (20.74 KiB) 查看 6120 次
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
zeroxia
帖子: 4
注册时间: 2007-12-04 9:02

Re: xfce 下 键盘映射 多媒体按键的个人经验

#15

帖子 zeroxia » 2010-09-25 10:17

借问一下,我的笔记本键盘空格键右边的按键标记的是 Alt Gr,在系统里不能作为Alt键使用。空格键左边的Alt是正常的。
要如何设置让Alt Gr作为Alt使用?
回复