华硕灵耀14s(U4700E) 在 ArchLinux 下的开启人脸识别 与 NumberPad 配置

本文详细介绍了在ArchLinux上配置华硕灵耀14s的NumberPad数字小键盘以及开启红外人脸识别的步骤。针对NumberPad启动问题,提供了修改Python程序和调整启动延迟的解决方案。对于人脸识别,使用了howdy项目,并指导了如何识别和配置红外摄像头,以及解决KDE环境下的人脸识别问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用NumberPad数字小键盘

华硕没有公开驱动, 有一个项目实现了他: 链接
原理很简单, 当检测到从右上角边缘向内滑动的时候, 使用i2c总线向触控板发光单元所在寄存器发送点亮/关闭指令, 同时检测到手指按下, 根据位置模拟输入数字.
但是在ArchLinux上存在一点问题:

  • 这个项目的shell会将py程序注册成服务使得可以在启动的时候自动执行, 但是Arch的开机策略可能有问题, 导致存在一定概率让服务先启动, 触控板后启动, 这样程序检测不到i2c总线上的触控板设备, 无法开启
  • 正则写的稍微有点问题, 导致无法匹配触控板ID, 解决方案是

偶尔无法正确启动的解决方法(重启服务还是不可以的情况)[老方法]

  1. 正确执行安装shell

  2. 修改Python程序

     vim /usr/share/asus_touchpad_numpad-driver/asus_touchpad.py
    
  3. offCmd=...后面添加一行

    print(onCmd)
    
  4. 反复执行Py程序

    sudo python  /usr/share/asus_touchpad_numpad-driver/asus_touchpad.py <your option like m433ia>
    
  5. 当触控板可以正确点亮的时候记录device_id

    i2ctransfer -f -y 1 w13@0x15 0x05 0x00 0x3d 0x03 0x06 0x00 0x07 0x00 0x0d 0x14 0x03 0x01 0xad
    

    例如这个的ID是1

  6. /proc/bus/input/devices中寻找 i2c-<your device_id>的内容 , 记录下所有符合的行(以 S:开头)

  7. 重启直到触控板不会正确点亮

  8. 重新在 /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

  9. 无法正确使用的时候的设备ID例如i2c-10 就是 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步骤

  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)&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Liukairui

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

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

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

打赏作者

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

抵扣说明:

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

余额充值