当前位置: 首页 > 后端技术 > Python

Linux下通过命令行和脚本切换笔记本触摸板等输入外设

时间:2023-03-26 16:30:47 Python

使用xinput命令查看和更改当前系统输入设备状态。xinput-list可以查看当前系统中存在的输入设备及其id$xinput-list?虚拟核心指针id=2[masterpointer(3)]??VirtualcoreXTESTpointerid=4[slavepointer(2)]??LogitechM720Triathlonid=12[从指针(2)]??LogiOps虚拟输入id=16[从指针(2)]??SynPS/2SynapticsTouchPadid=15[从指针(2)]?虚拟核心键盘id=3[主键盘(2)]?虚拟核心XTEST键盘id=5[从键盘(3)]?电源按钮id=6[从键盘(3)]?视频总线id=7[从键盘(3)]?VideoBusid=8[slavekeyboard(3)]?电源按钮id=9[从键盘(3)]?睡眠按钮id=10[从键盘(3)]?HID046a:0011id=11[从键盘(3)]?ChiconyUSB2.0相机:Chiconyid=13[从键盘(3)]?AT翻译集2键盘id=14[从键盘(3)]?LogitechM720Triathlonid=17[从键盘(3)]?LogiOps虚拟输入id=18[从键盘(3)]通过设备的id,可以禁用或启用设备。比如我们改变上面名为SynPS/2SynapticsTouchPad的设备,也就是触摸板的状态,就可以通过它的id15来进行操作#Enablexinputenable15#Disablexinputdisable15如果要勾选设备状态,可以使用xinputlist-props。比如上面可以查询触摸板的状态。$xinputlist-props15Device'SynPS/2SynapticsTouchPad':DeviceEnabled(214):0...其实会输出很多状态信息,但是最有用的是第一行的DeviceEnabled,如果是0,则表示该设备已禁用,如果为1,则表示该设备已启用。知道了以上信息,就可以编写脚本来切换指定名称的设备的状态了。这里我使用python通过检测xinput的输出,找到指定名称的设备id。通过id查询其状态,禁用则启用,启用则禁用。#-*-coding:utf-8-*-importsubprocessimportredev_name='devicename'dev_id=Nonedev_status=Noneoutput=subprocess.run('xinput-list',shell=True,stdout=subprocess.PIPE).stdout.decode().split('\n')dev_list=dev_list中dev的输出:ifdev_nameindev:dev_id=re.findall(r'id=(\d.*?)\s',dev)[0]#print(dev_id,type(dev_id))breakoutput=subprocess.run('xinputlist-props15|grep"DeviceEnabled"',shell=True,stdout=subprocess.PIPE).stdout.decode()dev_status=int(re.findall(':.*(\d)',output)[0])#print(dev_status,type(dev_status))ifdev_status==0:#print("Enable")subprocess.run('xinputenable'+dev_id,shell=True)elifdev_status==1:#print("Close")subprocess.run('xinputdisable'+dev_id,shell=True)将pythonscript.py命令添加到linux桌面上的自定义快捷方式键,可以快速切换指定名称的输入外设。