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

48次阅读

共计 1880 个字符,预计需要花费 5 分钟才能阅读完成。

应用 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 桌面的自定义快捷键上,就能够疾速开关指定名称的输出外设。

正文完
 0