Linux下采用软链接来固定触摸屏的event编号

问题的提出:

Linux设备上电的时候,如果触摸屏和鼠标均为插入状态,鼠标为event2,触摸屏为event3.如果只有触摸屏,没有鼠标,则触摸屏为event2。
但TSLIB的环境变量只能使用指定的event才能正常运行。因此需要Linux启动的时候自动判断触摸屏并为其指定event编号。

实现方法:

1,Linux需要支持mdev
2,查看/etc/mdev.conf
#cat /etc/mdev.conf

sd[a-z][0-9]   	0:0 666    	@/etc/mdev/mount.sh
sd[a-z]      	0:0 666    	$/etc/mdev/mount.sh
mmcblk0p[0-9]   0:0 666  	@/etc/mdev/mount.sh
mmcblk1p[0-9]   0:0 666  	@/etc/mdev/mount.sh
mmcblk0   	0:0 666  	$/etc/mdev/mount.sh
mmcblk1   	0:0 666  	$/etc/mdev/mount.sh
input.*		0:0 666		@/etc/mdev/keyboard.sh

3,可以看见mdev已经有一个键盘处理的input子系统脚本keyboard.sh,修改keyboard.sh为如下内容
#cat /etc/mdev/keyboard.sh

#!/bin/sh
if [ "$ACTION" == "add" ];then
	#判断触摸屏的key和name,匹配到了则ln -s 为event21
	devtype=${MDEV:6:5}
	if [ "$devtype" == "event" ];then
		if [ -e /sys/class/$MDEV/device/name ];then
			if [ -e /sys/class/$MDEV/device/capabilities/key ];then
				name=$(cat /sys/class/$MDEV/device/name | awk '{print}')
				key=$(cat /sys/class/$MDEV/device/capabilities/key | awk '{print $1}')
				if [ "$key" == "400" -a "$name" == "ILITEK Multi-Touch-V3000" ]; then
					echo "Find XXXXX TouchPanel:" $devtype $name $key > /dev/console
					if [ -L /dev/input/event21 ];then
						rm /dev/input/event21
					fi
					ln -s /dev/$MDEV /dev/input/event21
				fi
			fi
		fi
	fi
	#触摸屏处理完毕
##if [ "$ACTION" == "add" ];then
	if [ -e /sys/class/$MDEV/device/capabilities/key ];then
		key=$(cat /sys/class/$MDEV/device/capabilities/key | awk '{print $(NF)}')
		key="0x""$key"
		echo $((num=$key)) > /dev/null
		if [ $(($num & 0x00ff0000)) == $((0x00ff0000)) ];then		
			echo "found keyboard" > /dev/console
			if [ -L /dev/input/keyboard ];then
				rm /dev/input/keyboard
			fi
			ln -s /dev/$MDEV /dev/input/keyboard
		fi
	fi
fi

4,至此,则可以将TSLIB的环境变量设置为固定的event21了

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tanghuihuayyc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值