QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1102|回复: 0

使用 Lineak 让你的多媒体键盘跑起来

[复制链接]
发表于 2006-5-23 17:53:19 | 显示全部楼层 |阅读模式
LinEAK是一个用来将程序关联到热键的程序,它主要用来发挥多媒体键盘和笔记本上多媒体播放键等的功能。
如果你的键盘在windows下面可以一键上网,一键收发邮件,有专门调整音量的多媒体键,试试在Linux使用它们,也许可以比windows下更灵活的使用它们!

如果你在试用过程中遇到问题了,比如有些键不能使用,那么你可能需要阅读本文!

译自 : http://lineak.sourceforge.net/index.php?nav=showdoc&docid=LinEAK_support_HOWTO&doctitle=Keyboard%20support%20HOWTO

名词:
LinEAK - Linux support for Easy Access and Internet Keyboards
  Copyright (C) 2001,2002 Mark Smulders
  Sheldon Lee-Wen
(译者:keycode,scancode在本文都指键值或键码,指按下键以后系统收到的数值,而不是按键上面印制的ASCII码)


[ 如何让LinEAK支持你的键盘]

如果你是关于USB键盘的问题,请直接阅读本文最后的部分.

===================================================

本文用于解决LinEAK不能自动支持你的多媒体键盘的问题。

LineEAK不能自动支持,并不代表LinEAK就一定无法支持,下面让我们一步步的尝试让LinEAK工作起来。


[更新: 你可以用你喜欢的名字称呼你的按键 !!
    虽然 lineakd 0.2 不支持 "个性命名", 但是在0.3版中已经支持了.]


[ Step 1: 收集信息 ]

要在程序中完全的支持你的键盘,我们需要一些基本的信息:
-   键盘的品牌或型号 (比如. "Microsoft Internet Keyboard Pro")
-   也可以是一张它的图片(通常厂家的网站上有). 如果你把图片或URL发给我的话,我会非常高兴


[ Step 2: 查找键值 ]

要使用这些特殊的键,先需要知道X-Windows下它的键值,通常有两种方法取得键值 ,我们先试试第一种:
(方法 1)
   -  打开一个终端( Term ),如 xterm ,
   - 运行 xev 命令 (译者:xev 默认跟随 xorg-x11 包安装了,它启动一个小窗口,但是我们需要的信息是在后面的 console 里显示出来的,所以不要用 Alt-F2 来运行它)
   - 好了可以开始了。要查看某个按键的键值,就按下它,这时终端上会显示类似下面的一些信息:
     KeyPress event, serial 23, synthetic NO, window 0x5a00001,
         root 0x36, subw 0x0, time 2407465070, (146,-62), root719,272),
         state 0x0, keycode 234 (keysym 0x0, NoSymbol), same_screen YES,
         XLookupString gives 0 characters:  ""

     你需要的是 "keycode XXX" 这样的信息. 在上面的例子里,键值是 234.

   - 对每个键都试一下, 列出 按键/键值 的对照表
     (如: play 234, stop 223, internet 187, 等等 )


(方法 2)
   如果上面的方法对你的扩展键没有用(我的ASUS LH4000 四个摆在一起播放键,两个能用方法一解决,另外两个键用这两种方法都不行),再试试下面的方法:
  [警告 : 这个方法可能工作,也可能不能工作,因为这个功能目前还在完善中]

   - 从lineak支持的键盘型号中挑一个,比如CIK18g,强制把它作为你的配置文件.
     命令行如下:
                 lineakd -c CIK18g
     
   - 然后,以 verbose 模式运行 lineakd :  lineakd -v

   - 再试一下你的按键, 仔细看看屏幕上的输出,可能有你需要的信息。

   - 如果这种方法可以识别部分按键,但不能识别全部的键,可以回过头来再用第一种方法试试其它的键。



(方法 3) [不是说了,只有两种方法吗?]
如果你看不到任何输出信息,可能是内核不识别这些按键,试试下面的方法::

   - 运行 dmesg 看看有没有一点线索
   - 到控制台下按一下不能识别的键,看看有没有字符输出
   - 如果系统能够识别的你键,可能会有象这样的信息:   
   atkbd.c: Unknown key pressed (translated set 2, code 0x93 on isa0060/serio0).
   atkbd.c: Use 'setkeycodes e013 ' to make it known.
   atkbd.c: Unknown key released (translated set 2, code 0x93 on isa0060/serio0).
   atkbd.c: Use 'setkeycodes e013 ' to make it known.
   
   可以打开 /usr/include/linux/input.h 文件查看关于键值的定义,这个文件非常有必要看一看,然后按照内核显示的键值创建一个脚本 /etc/rc.sysinit (如果已经存在就直接修改).这个脚本会在启动的时候执行一个或多个指令,把按键的键值定义给内核,内容格式如下:
   setkeycodes e013 140  # This is the Calc key

   - 重新再检查一遍还有没有不识别的键,再做一次

   - 回到 方法 1 ,再找找X Windows的键值 .... .... 。


好了,干了这么久,该来瓶行呤阁休息一会了 ...啊... ... ...爽!
(不知道什么是行呤阁?查查google!)
商标:行呤阁        (清爽啤酒)        年产量:370000 吨        价格:1.2 元/瓶元(人民币).
友情鸣谢武汉东西湖啤酒集团股份有限公司出品!当然,如果喝酒不要钱的话更好了!

感觉好点了?? 可以继续了  :-)  ...

[ Step 3: 定义按键 ]

按照上面得到的信息,现在我们可以对键盘进行定义了。
现在,
- 打开一个文本编辑器
- 找一个 lineakkb.def 配置文件,复制一份,文件通常在  /usr/local/etc 目录下面
- 为你的键盘取一个唯一的名字,写到 [TYPE] 里
- 把 "longname" 改成对你键盘的描述
- 修改 "keys = { }" 列表,把你在键盘上找到的键值都包含进去 (注意: 只能用文件里已经有的名字,如果你用了文件里不存在的名字,程序可能不能运行)
- 对每一个键定义一行 "key = keycode".

好了,改完以后把你写的内容追加到 /etc/lineakkb.def 文件的尾上去(需要root权限)



[ Step 4: 大功告成 ]

现在运行下面的命令来检查你改写的配置文件是正确的并已经生效:

    "lineakd -l"

你应该可以看到你定义的键盘类型显示在型号列表里;
执行下面的命令创建一个根据你定义的类型而生成的配置文件:

    "lineakd -c TYPE"

这里TYPE  是你定义的型号名称.
执行下面的命令验证你配置的跟按键都关联上了
    "lineakd -v"
现在 lineakd 运行在 verbose 模式下,按下你的键,屏幕上显示它们的调试信息.
按 Ctrl-C 可以退出.

现在你可以把你的程序关联到这些键上去了,可以运行 lineakconfig来配置,或者直接修改 $HOME/.lineak/lineakd.conf 文件,非常简单。

配置完以后,重新启动 lineak 并把它放到后台去执行,运行:

    lineakd &

注意: 请把你新支持的键盘信息通过邮件列表共享给其它人,将新定义的配置信息发发邮件到 [email protected],谢谢!





[ 关于 USB 键盘的说明 ]

如果你尝试在一个USB键盘上使用lineakd,某些键在xev里没有任何输出信息却在内核的日志文件里有找到未知键的信息,那么你的键盘上的键无法被Linux支持!这好象是Linux的一个BUG!(译者注:参考一下我在LinuxFans里的相关文章,好象不全如作者说的这样!我的ASUS笔记本上的几个键就遇到这个问题了,但是还是有办法解决的!)

你可以通过邮件列表与USB开发团队联系一下,告诉他们你的键盘的型号、不能工作的键的键值。你可以以root身份在控制台运行 showkey -s  ,然后记录你按键时的反馈值,就象这样:
0xe0 0x5f 0xe0 0xdf
如果你看到的是两行输出:
0xe0 0x32
0xe0 0xb2
第一行是键按下的信息,第二行是键被放开的信息. 你需要准确的描述哪个键值是你目前发现有问题的.

另外,据一些用户反映,他们成功的使用setkeycodes 将扫描到的键值绑定到Linux上。你可以试试在 rc.sysinit, 或 rc.local中加入这些信息。但是,即使你这样做了,你仍然需要修改配置文件,来让X Window 识别你的键。


OK,译完了!有什么问题联系我
[email protected]    2006/05/23 17:53杭州


另外参考一下 LinuxFans 上的另外两篇文章:
在Suse Linux 10.0上搞定华硕笔记本热键
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=153659&highlight=

Suse Linux 下让华硕笔记本音量控制显示进度条
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=153414&highlight=

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

GMT+8, 2024-11-16 14:27 , Processed in 0.098175 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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