¶ [Py4SA]智能关闭触摸板

2010-07-14 10:22

1. 问题

嗯嗯嗯,俺一直使用 WACOM 的数字绘图板替代鼠标的 ;-)

  • 去年生日,老婆升级了俺的 FAVO CTE-430BAMBOO CTH-461
  • 随着 Ubuntu 10.04系统,一同升级了驱动,非常好用:
    1. 小横板 248.2 x 176.1,和屏幕 1:1 对应,不用拖动,有空间感觉了直接就可以移动到对应区域!
    2. 无线压感笔,直接点击就是左击鼠标
    3. 笔有侧键,配置默认就是原先最舒服的:
      • 上键是右击
      • 下键是中击
  • 触摸板的手指点击就不必要了
    • 如何令系统不启动触摸板的 Touch 响应?

2. 尝试

  • Command Line Configuration Interface (xsetwacom)
    • 官方是有命令行级别的配置工具的
    • 但是!真TMD难以看明白哈
    • 广泛的搜索后,大致明白,xsetwacom 提供两种配置输出:
      1. 命令行用的执行字串
      2. 配置文件中使用的配置文本
    • 整个使用流程是:
      1. 使用其它系统监察命令,确认 WACOM 设备USB接入后的设备号
      2. 使用 xsetwacom 进行模拟配置,选择输出合适的配置命令
      3. 然后将输出的配置内容,部署到合适的系统启动脚本或是配置文件中

  • 俺习惯使用命令行配置,这样可以直接测试是否靠谱,但是发现:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ~> xinput --list
    ⎡ Virtual core pointer                      id=2    [master pointer  (3)]
    ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    ⎜   ↳ Wacom Bamboo Craft Pen eraser             id=11   [slave  pointer  (2)]
    ⎜   ↳ Wacom Bamboo Craft Pen                    id=12   [slave  pointer  (2)]
    ⎜   ↳ Wacom Bamboo Craft Finger pad             id=13   [slave  pointer  (2)]
    ⎜   ↳ Wacom Bamboo Craft Finger                 id=14   [slave  pointer  (2)]
    ⎜   ↳ TPPS/2 IBM TrackPoint                     id=16   [slave  pointer  (2)]
    ⎜   ↳ Macintosh mouse button emulation          id=18   [slave  pointer  (2)]
    ⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
        ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ...
    • 使用 xinput 探察出来的 Wacom Bamboo Craft Finger 触摸板设备号,每次重启系统时不一定一样!
    • FT! 那就得编程让系统重启时,自个儿探察一下设备号,然后使用固定的配置命令关闭 BAMBOO 对应设备
如何在Shell 中获取另外系统命令的输出并截获对应数码组合成新的命令?:
嗯嗯嗯,,, 嗯嗯嗯,,,,直接囧掉! 俺没有这种功力!

3. Py之

  • 直接使用模板记录要执行的命令,预留可能变动的设备号:
    1
    2
    3
    #!/bin/sh
    ### xinput4bamboo.tpl
    sleep 3 && xsetwacom set %s Touch "off"

  • 配合xinput4bamboo.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import sys,os
    if __name__ == '__main__':      # this way the module can be
        """usage:
        $ xinput --list | grep "Wacom Bamboo Craft Finger" | python ./xinput4bamboo.py
        """
        if sys.stdin:
            for l in sys.stdin.readlines():
                if "pad" not in l:
                    bambooid= l.split()[6].split("=")[1]
                    open("xinput4bamboo.sh","w").write(open("xinput4bamboo.tpl").read()%bambooid)
                    os.chmod("xinput4bamboo.sh",0755)

  • 组合成启动脚本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/sh
    VER="main-rcloc.sh v10.7.14"
    DATE=`date "+%y%m%d"`
    MYRC="/home/zoomq/.zoomq/rc.local"
    #=========================================================== path defines
    LOGF="/var/log/0day/$DATE-myrcloc.log"
    #=========================================================== action defines
    cd $MYRC
    xinput --list | grep "Wacom Bamboo Craft Finger" | python ./xinput4bamboo.py  >> $LOGF 2>&1
    ./xinput4bamboo.sh  >> $LOGF 2>&1

  • 部属成启动应用:
    • 齐活! 没有疑惑,随手写成! 5分钟!
Python在Unix和Linux系统管理中的应用(影印版):
  • 绝对好书! 值得慢慢看,E文非常简洁,Py清明的代码,直接看/尝试就可以体会到本意了...

动力源自::txt2tags


§ 写于: Wed, 14 Jul 2010 | 永久链接;源文: rdf ,rss ,raw | 分类: /utility/py4sys §
[MailMe] [Print] Creative Commons License

作品Zoom.Quiet创作,采用知识共享署名-相同方式共享 2.5 中国大陆许可协议进行许可。 基于zoomquiet.org上的作品创作。