LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1056|回复: 5

[求助]KDE环境下方向键等功能区按键无效

[复制链接]
发表于 2010-6-29 19:28:15 | 显示全部楼层 |阅读模式
新做好的LFS, KDE图形环境已经做好了,其它没什么问题,刚开始发现在图形环境下4个方向键没有反应,在数字键区指示灯numlock关闭时可以使用2468作为方向键,1379可以作为功能键。后来发现功能键区的HOME, END, PAGE UP, PAGE DOWN等都无效。

使用Ctrl+Alt+F1~F6切换至终端时,按键均正常。

使用showkey命令查看scancode,所有按键均有显示,但数字键区与功能键显示不同。于是想到去修改keycodes和keymap,进入目录/usr/share/X11/xkb/下,发现修改该处文件仍无法解决问题。(该方法是自己随便试的,估计是不对的)

或者keycodes是在编译的时候设置的?

请问各位有遇到过类似的问题吗?希望得到答复,谢谢。
发表于 2010-6-29 19:57:41 | 显示全部楼层
KDE4 在这个环节上本来就是有问题的:这个实际上是 Qt4 对按键的处理跟 Qt3 不同,导致很多 KDE4 开发者并不能有效的熟练的掌握对小键盘区的识别造成。(原先KDE3基本都是好的。)

现在的现状是:某些 KDE4 程序能够正确处理小键盘,某些不行。例如 konsole 原先也是不行的,被我改了。amarok 好像是已经被人改好了。

鉴于这纯粹是程序员的问题。。。所以解决起来恐怕不容易。


理论上 xkb 的办法应该能够替换的,不过我没有试过。但是从你现在的现象来看,好像跟我说的不是一回事,请测试 konsole,如果这个也不能识别小键盘,那应该是你的配置问题。不是KDE的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-6-29 20:40:39 | 显示全部楼层
恩, 感谢poet

在图形环境下确实是无效的, 最早就是在konsole发现方向键没有用的, 然后试了下其它的: 例如在文件中选中一个图标, 按方向键应该是移动选中焦点的, 但是什么反应都没有. 后来又试了下del键, 也没有反应.

使用showkey命令测试: 按方向键上左下右分别对应103, 105, 108, 106, 关闭numlock时2468分别对应80,....(这个记不太清了) 我查看keymap选用的是us, 但是查看us的keycode时, 无论是scancode + min还是scancode都对应不上. 于是我对应着查看了红帽的设置,发现和lfs是一样的...

请问此时有解决办法吗?如果是设置的问题请问该如何设置呢?

感谢回复.
回复 支持 反对

使用道具 举报

发表于 2010-6-29 21:05:49 | 显示全部楼层
大半是没配置好 X11 中键盘部分。
showkey scancode 处理对象是 tty 设备,与 X11 无关,X11 自己接管键盘。
用,也要用 xkb* xmodmap 这些东东。

顺便该看下 KDE QT 中关于键盘的配置。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-7-12 18:13:18 | 显示全部楼层
不好意思,过了这么久才来回复帖子,笔记本中了闪屏门,今天还没拿回来,该死的惠普……

后来我又使用xmodmap命令进行设置,例如把按键n设置成其它按键,没有问题;但是设置功能键区的按键时,依然无效。
我记得在哪里找到了按键keycode的映射列表,设置本来就起作用的按键时没有问题,就是死活设置不了功能键,已经准备放弃了……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-25 18:16:31 | 显示全部楼层
呵,过了快一年重新拾起这个问题,竟然在偶然间解决了。以下简单描述解决过程及办法:

首先在xev中查看按键的消息,发现失效的按键均无定义。记录下失效按键的keycode,使用xmodmap -pke查看keycode,果然无定义。
失效的按键有:Up, Down, Left, Right, Insert, Delete, Home, End, Page_Up, Page_Down, Alt_R, Control_R, KP_Enter, KP_Equal, KP_Divide。(以上名称可以在/usr/include/X11/keysymdef.h中查到)
执行命令:

xmodmap -pke > keys.log

查看keys.log文件,以上按键虽已定义但其keycode和之前得到的不同,于是在正确的keycode后添加映射后保存文件,再次执行:

xmodmap keys.log

测试了一下,问题就解决了。
为防止重启后重复操作,复制一份keys.log文件放在用户目录下:

cp keys.log ~/.Xmodmap

之所以放在这个位置并重命名的原因,是在启动脚本/etc/X11/xinit/xinitrc中有这样的设置,不同的系统(例如Debian)其位置和文件名可能是不同的。这样即使重启也没有问题了。

个人总觉得没有找到根本原因,或其详细过程仍不得知。之后需要继续研究。但该方法可以作为临时解决办法。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表