编译内核让之支持PS并口改装手
PS并口改装手柄是接在打印机口上的手柄,相比传统的接在声卡MIDI多功能口的模拟手柄,它是纯数字的,因此有定位正确(不用像模拟手柄需要调校才能正确定位),而且,支持的按键可以达到十多个(比模拟手柄多很多),完全可以满足任何游戏的需要;由于是数字式的手柄,因此手柄的电路非常简单,价格低廉,在广州这里,一对PS改装手柄才16块,通街都有得卖,效果却非常好!(相信很多朋友也是用它吧!)PS手柄的WIN版驱动非常多,但在linux下,对它的支持的资料却一直非常缺乏,在网络上也没见过有人提起过;由于我经常在linux下玩各种各样的模拟器,对此无法支持手柄这事一直耿耿于怀.近来无意之中竟然发现内核之中,其实早就已经提供了支持,一番试验+翻阅内核自带文档,终于试验成功!下面介绍一下方法:
系统:红旗3.0desktop,内核2.4.18(更早一点的可能也支持,不过我还没试验过)
1.由于PS并口手柄用到并口,而且是手柄设备,因此,请先检查你有没有/dev/parport*,/dev/js*,/dev/input/js*这些设备,如果有,可以忽略这步;如果没有,请先建立,方法是:
cd /dev
rm js*
mkdir input
mknod input/js0 c 13 0
mknod input/js1 c 13 1
mknod input/js2 c 13 2
mknod input/js3 c 13 3
ln -s input/js0 js0
ln -s input/js1 js1
ln -s input/js2 js2
ln -s input/js3 js3
2.进你的内核源码文件所在目录(譬如我的是/usr/src/2.4.1,执行make xconfig命令配置内核(图一所标为配置过程中改动的大选项)
先配置并口相关的:如图二,所标地方最好标配置成Y,选M应该也可以,但不推荐;这样就将并口支持功能内建于内核中,内核启动时会自动检测并口并让/dev/parport*起作用
3.配置input core support,如图三,将所标地方选M,这样将手柄功能配置成模块,当加载时,让/dev/js0这些起作用;虽然input core support的帮助文档中说是配置USB设备的,但实际上,这些是手柄设备通用的,不配置这个,则无法配置下一步(当初我就是没配置这个,结果搞了半天joystice的选项都是灰色的,无法配置)----这步配置编译后将生成input.o和joydev.o这两个模块
4.配置joystick:点击character device里的joystick选项(图十二)进入手柄配置窗口(图四,图五),将所标地方选M,一个是配置声卡上的MIDI口(这个应该可以省略,据内核文档说明,是对模拟手柄提供支持的,对数字手柄没用,但我还没试验过),一个是PSX手柄的支持----这步配置编译后将生成gameport.o和gamecon.o这两个模块
5.保存配置退出,重新编译内核和模块并安装,这里就不罗嗦了,关于编译内核的资料本站的"技术论坛"就有不少
6.进入"/lib/modules/your kernel/kernel/drivers/"(譬如我的是/lib/modules/2.4.18/kernel/drivers)目录下,应该见到input目录下有input.o和joydev.o两个模块;char/joystick目录下应该有gamecon.o和gameport.o模块;见图六
7.编辑/etc/modules.conf文件,加入如下两行语句:
alias pspad gamecon
options gamecon gc=0,7,7,7,7,7
第一行的意思是给gamecon.o这个模块起个别名pspad,那以后就可以用modprobe pspad这个命令加载;第二行的意思是给gamecon这个模块加上gc这个参数,其中"0,7,7,7,7,7"的"0"表示手柄是接在第一个打印机口(/dev/parport0),如果你的手柄是接在第二个,则用1,类推;后面的第一个"7"代表第一手柄,类型是PS手柄改装的,第二个"7"代表第二个手柄,类型也是PS手柄,由于并口可以同时接5个手柄,所以有5个7,如果你只有一个接上,只写一个"7"就可以了(1是代表超任改装手柄,2是代表红白机改装手柄,6是代表N64改装手柄,7代表PS改装手柄);这两行很重要,特别是第二行,不加这个参数的话加载gamecon模块会报错说参数错误!(图七)
8.重起,使用新内核,启动过程中,你会发现有并口检测信息出现,这是因为并口支持功能已经在内核中起作用;进入系统后,开一个终端窗口,依次执行下面命令:
modprobe input
modprobe joydev
modprobe pspad
没任何出错信息的话,再lsmod一下,应该可以看到类似图八的输出,确认其中有input,joydev和gamecon这三个模块,其中的gameport一般随声卡驱动自动加载
9.运行jstest /dev/js0(如果你的系统没有这个命令,请上www.rpmfind.net搜索joystick关键字,安装一个叫joystickxxx.rpm的包就有了),应该可以见到图九的输出,这时你按一下手柄的按键,如果屏幕输出有相应的改变,那么,恭喜你,手柄驱动完全成功了!
10.你现在可以运行一下一个模拟器,或其他游戏,用游戏中的手柄功能设置一下,就可以立即可以使用了;譬如epsxe这个模拟器,你可以用ammo joydevice pad driver这个插件(图十),配置一下(图十一)就可以用了,其中/dev/js0代表第一个手柄,/dev/js1代表第二个手柄,类推!经本人试验,凡是可以应用手柄的出程序都可以正常实现手柄的功能,效果一流!以后你可以将第8步中的modprobe那三行加载模块命令加入到rc.local中让它随启动自加载,则一进系统后就可以使用手柄了!或将它写成一个脚本,需要是再执行也可以!
以上很多信息都是来自内核自带的说明文档,大家如果有什么不明白,请先阅读内核源码所在目录下Documentation/input目录下的joystick.txt和joystick-parport.txt这些文档,当然可以回贴!