3

使用shell切换触摸板的方法

 3 years ago
source link: https://www.lujun9972.win/blog/2020/01/28/%E4%BD%BF%E7%94%A8shell%E5%88%87%E6%8D%A2%E8%A7%A6%E6%91%B8%E6%9D%BF%E7%9A%84%E6%96%B9%E6%B3%95/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用shell切换触摸板的方法

我们可以使用 xinput 来管理输入设备。

首先我们使用 xinput list 来获取输入设备的id号:

xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ YSPRINGTECH USB OPTICAL MOUSE             id=10   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=13   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C           id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=15   [slave  keyboard (3)]

触摸板的关键字是 TouchPad,因此我们可以通过下面命令来获取触摸板的id号:

xinput list | grep -iEo 'touchpad.*id=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'

下一步我们通过这个id号查看对应设备的状态:

xinput list-props 13
Device 'SynPS/2 Synaptics TouchPad':
        Device Enabled (162):   1
        Coordinate Transformation Matrix (164): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Tapping Enabled (315): 0
        libinput Tapping Enabled Default (316): 0
        libinput Tapping Drag Enabled (317):    1
        libinput Tapping Drag Enabled Default (318):    1
        libinput Tapping Drag Lock Enabled (319):       0
        libinput Tapping Drag Lock Enabled Default (320):       0
        libinput Tapping Button Mapping Enabled (321):  1, 0
        libinput Tapping Button Mapping Default (322):  1, 0
        libinput Natural Scrolling Enabled (297):       0
        libinput Natural Scrolling Enabled Default (298):       0
        libinput Disable While Typing Enabled (323):    1
        libinput Disable While Typing Enabled Default (324):    1
        libinput Scroll Methods Available (299):        1, 1, 0
        libinput Scroll Method Enabled (300):   1, 0, 0
        libinput Scroll Method Enabled Default (301):   1, 0, 0
        libinput Accel Speed (306):     0.000000
        libinput Accel Speed Default (307):     0.000000
        libinput Left Handed Enabled (311):     0
        libinput Left Handed Enabled Default (312):     0
        libinput Send Events Modes Available (282):     1, 1
        libinput Send Events Mode Enabled (283):        0, 0
        libinput Send Events Mode Enabled Default (284):        0, 0
        Device Node (285):      "/dev/input/event10"
        Device Product ID (286):        2, 7
        libinput Drag Lock Buttons (313):       <no items>
        libinput Horizontal Scroll Enabled (314):       1

这里 Device Enabled (162): 1 中的 1 就是状态. 所以我们可以通过下面命令来获取状态

xinput list-props 13|grep 'Device Enabled'|awk '{print $4}'

这里的 1 表示设备被启用, 0 表示设备被禁用。

获取了设备状态后,我们就可以通过 xinput disable $IDxinput enable $ID 来禁用或启用设备。

最终得到的接本如下:

#!/bin/bash

declare -i ID
ID=$(xinput list | grep -iEo 'Touchpad.*id=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}')
declare -i STATE
STATE=$(xinput list-props $ID|grep 'Device Enabled'|awk '{print $4}')
if [ $STATE -eq 1 ]
then
    xinput disable $ID
    echo "Touchpad disabled."
    # notify-send -a 'Touchpad' 'Disabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad*.png
else
    xinput enable $ID
    echo "Touchpad enabled."
    # notify-send -a 'Touchpad' 'Enabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad*.png
fi

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK