使用NumberPad数字小键盘
华硕没有公开驱动, 有一个项目实现了他: 链接
原理很简单, 当检测到从右上角边缘向内滑动的时候, 使用i2c总线向触控板发光单元所在寄存器发送点亮/关闭指令, 同时检测到手指按下, 根据位置模拟输入数字.
但是在ArchLinux上存在一点问题:
- 这个项目的shell会将py程序注册成服务使得可以在启动的时候自动执行, 但是Arch的开机策略可能有问题, 导致存在一定概率让服务先启动, 触控板后启动, 这样程序检测不到i2c总线上的触控板设备, 无法开启
- 正则写的稍微有点问题, 导致无法匹配触控板ID, 解决方案是
偶尔无法正确启动的解决方法(重启服务还是不可以的情况)[老方法]
-
正确执行安装shell
-
修改Python程序
vim /usr/share/asus_touchpad_numpad-driver/asus_touchpad.py
-
在
offCmd=...
后面添加一行print(onCmd)
-
反复执行Py程序
sudo python /usr/share/asus_touchpad_numpad-driver/asus_touchpad.py <your option like m433ia>
-
当触控板可以正确点亮的时候记录
device_id
i2ctransfer -f -y 1 w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad
例如这个的ID是1
-
在
/proc/bus/input/devices
中寻找i2c-<your device_id>
的内容 , 记录下所有符合的行(以S:
开头) -
重启直到触控板不会正确点亮
-
重新在
/proc/bus/input/devices
, 寻找刚刚记录的行, 例如我刚刚记录的是S: Sysfs=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-1/i2c-ASUE140A:00/0018:04F3:3134.0001/input/input11
可以通过MAC快速找到
i2c-ASUE140A:00/0018:04F3:3134.0001
-
无法正确使用的时候的设备ID例如
i2c-10
就是 10 -
尝试运行
i2ctransfer -f -y <the device_id you find in step 9> w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad
如果成功那么执行11步骤
-
修改PY程序
onCmd = "i2ctransfer -f -y " + device_id + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad" offCmd = "i2ctransfer -f -y " + device_id + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x00 0xad" + onCmd2 = "i2ctransfer -f -y " + "1" + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad" + offCmd2 = "i2ctransfer -f -y " + "1" + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x00 0xad" - print(onCmd2) + + onCmd3 = "i2ctransfer -f -y " + "10" + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad" + offCmd3 = "i2ctransfer -f -y " + "10" + " w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x00 0xad" + + if subprocess.call(onCmd, shell=True)&#