Linux 下通过命令行和脚本开关笔记本触控板和其他输入外设

Posted yizdu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 下通过命令行和脚本开关笔记本触控板和其他输入外设相关的知识,希望对你有一定的参考价值。

使用xinput命令,可以查看和更改当前系统的输入设备状态。
xinput -list可以查看当前系统存在的输入设备和其id

$ xinput -list                                                                                                                                             
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ Logitech M720 Triathlon                     id=12    [slave  pointer  (2)]
⎜   ↳ LogiOps Virtual Input                       id=16    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                  id=15    [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)]
    ↳ Power Button                                id=9    [slave  keyboard (3)]
    ↳ Sleep Button                                id=10    [slave  keyboard (3)]
    ↳ HID 046a:0011                               id=11    [slave  keyboard (3)]
    ↳ Chicony USB2.0 Camera: Chicony              id=13    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard                id=14    [slave  keyboard (3)]
    ↳ Logitech M720 Triathlon                     id=17    [slave  keyboard (3)]
    ↳ LogiOps Virtual Input                       id=18    [slave  keyboard (3)]

通过设备的id,可以禁用或启用设备。例如我们更改上面名为SynPS/2 Synaptics TouchPad的设备,也就是触控板的状态,可以通过其id 15来操控。

#启用
xinput enable 15
#禁用
xinput disable 15

想要查看一个设备的状态,可通过xinput list-props <id>。比如查询上面的触控板的状态就可以这样。

$ xinput list-props 15                                                                                                                                     
Device \'SynPS/2 Synaptics TouchPad\':
    Device Enabled (214):    0
    ...

实际上会输出很多状态信息,但最有用的是第一行的Device Enabled,若是为0,则代表设备被禁用,若是为1,表示设备被启用。

知道上面那些信息,就可以写一个脚本开关指定名字设备的状态。这里我用的是python,通过检测xinput的输出,找到指定名字的设备id。通过id查询其状态,若是禁用则启用,若是启用则禁用。

# -*-coding:utf-8-*-
import subprocess
import re

dev_name=\'设备名称\'
dev_id=None
dev_status=None

output=subprocess.run(\'xinput -list\',shell=True,stdout=subprocess.PIPE).stdout.decode().split(\'\\n\')
dev_list=output

for dev in dev_list:
    if dev_name in dev:
        dev_id=re.findall(r\'id=(\\d.*?)\\s\',dev)[0]
        #print(dev_id,type(dev_id))
        break
output=subprocess.run(\'xinput list-props 15 |grep "Device Enabled" \',shell=True,stdout=subprocess.PIPE).stdout.decode()
dev_status=int(re.findall(\':.*(\\d)\',output)[0])
#print(dev_status,type(dev_status))


if dev_status==0:
    #print("开启")
    subprocess.run(\'xinput enable \'+dev_id,shell=True)
elif dev_status==1:
    #print("关闭")
    subprocess.run(\'xinput disable \'+dev_id,shell=True)

python 脚本.py命令添加到你的linux桌面的自定义快捷键上,就可以快速开关指定名称的输入外设。

以上是关于Linux 下通过命令行和脚本开关笔记本触控板和其他输入外设的主要内容,如果未能解决你的问题,请参考以下文章

如何锁住联想笔记本L460的触摸板

使用兼容电源造成苹果mac触摸板呆滞的原因?

centos系统下禁用笔记本触控板

笔记本电脑的触摸板失灵?

笔记本Win10触控板无法双击弹出快捷菜单怎样解决

macbookpro触摸板面板两侧不一样高有影响吗