Ubuntu 6.06 上驱动 Dell SK-8135 键盘和 Logitech MX500 鼠标
最近看了很多 XGL 的演示录像,心里实在是痒痒。最终在昨天装上了 Ubuntu Dapper Drake 6.06。Ubuntu 以前我就用过,基于 Debian,安装和配置都很容易。
Logitech MX500
装上系统后,问题就来了。首先是鼠标上除了左右键和滚轮外,其他的按键都不管用了。我的鼠标是罗技 MX500,我常用的前进后退键不管用实在是无法忍受呀,于是上网查相关的解决方案,最终在 Ubuntu Forum 上查到一篇文章解决了问题。鉴于中文资料几乎没有,我就在这里写一下具体过程,英文好的朋友可以去看原文:
原理就不讲了,主要是用 evdev,具体做法如下,
首先插入鼠标(USB),然后在终端中输入以下命令:
- cat /proc/bus/input/devices
你会得到类似这样的结果:
- I: Bus=0003 Vendor=046d Product=c025 Version=1800
- N: Name="Logitech USB-PS/2 Optical Mouse"
- P: Phys=usb-0000:00:1d.1-1/input0
- S: Sysfs=/class/input/input1
- H: Handlers=mouse0 event1 ts0
- B: EV=7
- B: KEY=ff0000 0 0 0 0 0 0 0 0
- B: REL=103
当然你的结果不一定和我的完全一样,主要是 Name 那一行,对于我用的 MX500 是 Logitech USB-PS/2 Optical Mouse,如果你用的是 MX700 或 MX1000 那样的无线鼠标的话可能是 Logitech USB Receiver。记下这行,然后在终端中键入下面命令写一条 udev 信息:
- sudo gedit /etc/udev/rules.d/19-local.rules
在文本编辑器中写入以下 udev 规则:
- KERNEL=="event[0-9]*", SYSFS{../name}=="Logitech USB-PS/2 Optical Mouse", NAME="input/event9"
注意,其中的 Logitech USB-PS/2 Optical Mouse 应该改为你刚才记下的 NAME 那行,而 input/event9 应该将 event9 改为一个没有被使用的 event。
修改 Xorg.conf,现做好备份,然后再改:
- sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
- sudo gedit /etc/X11/xorg.conf
找到鼠标配置的那一节,改成如下代码:
- Section "InputDevice"
- Identifier "Configured Mouse"
- Driver "evdev"
- Option "CorePointer"
- Option "Device" "/dev/input/event9" #这里应该填入刚才你所指定的 event
- EndSection
保存,退出 gedit。保存您所有的工作,然后按下 Ctrl+Alt+Backspace 重新启动 X。
如果失败了,无法启动 X 的话,可以通过下面的命令简单恢复:
- sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf-logi
- sudo mv /etc/X11/xorg.conf.bak /etc/X11/xorg.conf
- sudo /etc/init.d/gdm restart
准备工作就算完成了,下面我们要配置按键。我们需要 xvkbd 和 xbindkeys,在终端中输入下面的命令:
- sudo apt-get install xvkbd xbindkeys
为了模拟滚轮,我们还需要 click,这个软件没有在 ubuntu 软件库中,需要我们自己下载源码编译,我这里有一份编译好的,您直接下载即可。下载后:
- sudo cp click /usr/bin
- chmod +x /usr/bin/click
以上都完成后,输入以下命令,写入 xbindkeys 规则:
- gedit ~/.xbindkeysrc
然后贴入如下代码,当然你可以根据你的具体情况改改它,这样可以实现对每一个按键的定义:
- "/usr/bin/xvkbd -xsendevent -text "\[Alt_L]\[Left]""
- m:0x0 + b:6
- "/usr/bin/xvkbd -xsendevent -text "\[Alt_L]\[Right]""
- m:0x0 + b:7
- "~/click/click 4"
- m:0x0 + b:9
- "~/click/click 5"
- m:0x0 + b:10
- "gnome-terminal"
- m:0x0 + b:8
对于 MX500 MX700 鼠标,9 是向上滚动按键,10 是向下滚动按键,8 是快速切换任务的按键,5 是前进 6 是后退。你可以通过 xev 来得到这些信息。
最后,在“系统:首选项:会话:启动程序”中添加 xbindkeys。重新启动 GNOME(注销后重新登录),你的 MX500 上所有按键都可以使用了。
下面这些操作可以让你的 MX500,MX518,MX700 等切换到 800cpi 工作,默认是 400cpi。打开终端输入命令:
- wget http://www.bedroomlan.org/~alexios/files/SOFTWARE/lmctl/lmctl_0.3.2_i386.deb
- sudo dpkg -i lmctl_0.3.2_i386.deb
- sudo gedit /etc/init.d/local
在编辑器中粘贴下面的代码:
- echo "Setting up Logitech mouse..."
- lmctl -8
保存,在终端中输入:
- sudo chmod 755 /etc/init.d/local
- sudo update-rc.d local defaults
重新启动计算机,你的鼠标已经工作在 800cpi 上了。
DELL SK-8135
对于键盘来说,由于 GNOME 已经内置了 XKB 扩展,基本上所有的功能键都可以使用了。对于 DELL SK-8135 来说,唯一不能用的就是那个音量调节旋钮。Google 了半天,最终在一个法语网站上找到了答案,当然作者显然是高手,只给出了一个程序,具体解决方案一字未提,真是苦了我这样的菜鸟了。不过经过摸索,还是勉强解决了这个问题,下面是我的方法:
首先要得到我们需要的程序 sk8135-pcm 和 aumix,前者就是那个法国人写的程序,我已经将它编译好,您可以从这里下载,后者在 ubuntu 软件仓库里面有:
- sudo cp sk8135-pcm /usr/bin
- chmod +x /usr/bin/sk8135-pcm
- sudo apt-get install aumix
然后我们模仿鼠标的方法,给键盘添加一个 event。首先要查找我们书写 udev 规则所需的标识,因为 Dell SK8135 键盘上集成 USB-hub,因此在系统中会有两个 USB 设备,最要命的是他们都叫 Dell USB Keyboard Hub,我们先要用这样的命令找到这两个设备的 event:
- cat /proc/bus/input/devices
返回类似这样的结果:
- I: Bus=0003 Vendor=413c Product=2010 Version=0100
- N: Name="Dell Dell USB Keyboard Hub"
- P: Phys=usb-0000:00:02.0-1.1/input0
- S: Sysfs=/class/input/input1
- H: Handlers=kbd event1
- B: EV=120003
- B: KEY=10000 7 ff87207a c14057ff febeffdf ffefffff ffffffff fffffffe
- B: LED=1f
- I: Bus=0003 Vendor=413c Product=2010 Version=0100
- N: Name="Dell Dell USB Keyboard Hub"
- P: Phys=usb-0000:00:02.0-1.1/input1
- S: Sysfs=/class/input/input2
- H: Handlers=kbd event2
- B: EV=b
- B: KEY=3878 c8015001 20000 0 0 0
- B: ABS=1 0
是 event1 和 event2,我们需要试验一下到底是哪一个。现打开一个音乐播放器,放个音乐,然后在终端中执行:
- sudo sk8135-pcm /dev/input/event1
然后调节音量控制旋钮,如果音量会改变的话就是这个 event 了,如果不能调节的话可以试试另一个 event。找到后暗 Ctrl+C 结束程序,在终端中输入以下命令,假设我们找到的是 event1:
- udevinfo -a -p $(udevinfo -q path -n /dev/input/event1)
记下第一个SYSFS{modalias},比如我这里为:
- BUS=="usb"
- ID=="1-1.1:1.1"
- DRIVER=="usbhid"
- SYSFS{bAlternateSetting}==" 0"
- SYSFS{bInterfaceClass}=="03"
- SYSFS{bInterfaceNumber}=="01"
- SYSFS{bInterfaceProtocol}=="00"
- SYSFS{bInterfaceSubClass}=="00"
- SYSFS{bNumEndpoints}=="01"
- SYSFS{interface}=="Dell USB Keyboard Hub"
- SYSFS{modalias}=="usb:v413Cp2010d0100dc00dsc00dp00ic03isc00ip00"
在终端中键入下面命令写一条 udev 信息:
- sudo gedit /etc/udev/rules.d/19-local.rules
在文本编辑器中写入以下 udev 规则:
- KERNEL=="event[0-9]*", SYSFS{modalias}=="usb:v413Cp2010d0100dc00dsc00dp00ic03isc00ip00", NAME="input/event10"
然后修改 /etc/init.d/local:
- sudo gedit /etc/init.d/local
在编辑器中粘贴下面的代码:
- echo "Setting up Dell SK-8135 Keyboard..."
- sk8135-pcm /dev/input/event10 &
保存,退出。重新启动计算机后,你的音量旋钮就起作用了。
原文链接**:花儿开了 - Ubuntu 6.06 上驱动 Dell SK-8135 键盘和 Logitech MX500 鼠标
** 本博客文章全部原创,原则上不欢迎全文转载,如需转载(包括部分转载,使用文章图片等)请务必标注原文链接!同时,本博文章不欢迎任何形式的派生及篡改,如需引用,请使用引用通告(Trackback) - http://blog.istef.info/2006/07/28/configure-de.../trackback/。商业网站使用请务必先取得作者授权!

800dpi吧
手头暂时没有6.06,在用5.10。声卡有问题,网络配置有问题。sudo pppoeconf出的结果有问题……嘻~~
to 小天: 有一个版本的内核好像声音有问题,我升级后也没声音又换回来了。
pppoeconf 我这里一切顺利,没法帮你了。
侧栏都被代码挤跑了啊……
另外就是感觉 coComment 还是不那么友好,好像只要安装了就必须跟踪,能够选择的只有是否链接到用户id。你这里的 coComment 怎么实现的?
Hey, could you help me ?
I’m mexican and is dificult for me to understand this language
Thank’s a lot
kind regards !
修改完 rule 之后重启 X 还不够,应该是需要重启系统,或者是重启 udev?
不然 /dev/imput/event9这个文件没有建立阿。
有一个问题,xvkbd 怎么模拟 ctrl + alt + right 这样的按键呢?似乎只能模仿两个按钮同时按下阿。。。
请问楼主配置成功了吗?
我用的是 Ubuntu 6.06LTS,鼠标也是Logitech-MX500
但是按照文章所说的方法无法实现,修改xorg.conf以后无法进去X。
to raven: 我写这篇文章时用的是 Ubuntu 5.10,不过在 Ubuntu 6.06 LTS 上同样的方法也可以使用。
好文~~受益匪浅~~
我的MX500在feisty下配置成功 用起来舒服多了
这里是另一个DELL键盘的音量旋钮驱动程序,原理上应该和sk8135-pcm是一样的,但是更简单,不需要修改udev配置就可以用。受它启发,我写了个驱动Creative XMod音量旋钮的小程序,有XMod的朋友可以去我的网站下载源程序,在feisty下调试通过。
这里是另一个DELL键盘的音量旋钮驱动程序,原理上应该和sk8135-pcm是一样的,但是更简单,不需要修改udev配置就可以用。受它启发,我写了个驱动Creative XMod音量旋钮的小程序,有XMod的朋友可以去我的网站下载源程序。
你好!我想做一个prototpye,利用8135上的旋转按钮做些其它控制,不知道您知道如何在c#程序中获得音量旋转按钮的数据不?能麻烦你和我email联系下吗?
我的email地址是:v-yuguo@microsoft.com
谢谢:)