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 下通过命令行和脚本开关笔记本触控板和其他输入外设的主要内容,如果未能解决你的问题,请参考以下文章