Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

Gray-Ice

个人博客兼个人网站

本脚本背景交代: 有些时候,想要在桌前看实体书,嫌屏幕开着碍事,用xset关闭屏幕后,书一翻页就有可能触发鼠标移动,导致屏幕自动点亮。为了开开心心的看书而不被鼠标移动自动点亮显示器影响,故此有了该脚本。
这次主要用到了python3和shell。说来惭愧,本来应该全部用shell写的,但是我太菜了,不会用awk,故此改用python3的re模块代替awk来进行解析。

在开始用禁用鼠标脚本前,必须要先使用xinput –list看看自己想要禁用哪个设备:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
> xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SONiX USB DEVICE Keyboard id=13 [slave pointer (2)]
⎜ ↳ HOLTEK USB Gaming Mouse Keyboard id=15 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS GlidePoint id=17 [slave pointer (2)]
⎜ ↳ HOLTEK USB Gaming Mouse 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)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ USB HD WEBCAM: USB HD WEBCAM id=11 [slave keyboard (3)]
↳ SONiX USB DEVICE id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=16 [slave keyboard (3)]
↳ SONiX USB DEVICE Keyboard id=18 [slave keyboard (3)]
↳ HOLTEK USB Gaming Mouse Keyboard id=19 [slave keyboard (3)]


这个id号就是设备的id号,我们后面要通过这个id来确定要对哪个设备进行操作。在这里,我的鼠标的id号是14,即”HOLTEK USB Gaming Mouse”,把它记下来,待会儿写脚本的时候会用到。
关于为什么不记id而是记设备名的原因: 因为把设备换插USB口会导致id号变化(有时候插入新设备也会导致已插入设备的id号变化),所以我们要记设备名字。

那么既然我们已经知道了设备名字,那么接下来要通过名字匹配到对应的id号来禁用设备:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# lock.py
import re
import sys
import os

# 从标准输入读取信息
for line in sys.stdin:
mouse_id = None
# 这里要把正则表达式换成匹配你要禁用的设备的id的正则表达式
rst = re.search("HOLTEK USB Gaming Mouse\s+id=(\d+)", line, re.S)
# 如果匹配到设备的id了,则禁用该设备
if rst:
mouse_id = rst.groups()[0]
# 禁用设备的命令
exec_str = "xinput -set-prop " + mouse_id + ' "Device Enabled" 0'
# 禁用设备
os.system(exec_str)
break

那么接下来我们可以通过sh脚本来把xinput的信息传入到py脚本里:

1
2
3
# lock_mouse.sh
# 路径是python文件的路径
xinput --list | python3 /home/fire/toolSet/mySh/mouseSh/lock.py

然后当我们想禁用鼠标的时候,直接执行这个脚本就好了。
当然,有禁用鼠标的脚本当然还得有解禁用的脚本,不然就麻烦了,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# unlock.py
import re
import sys
import os

# 从标准输入读取信息
for line in sys.stdin:
mouse_id = None
# 这里要把正则表达式换成匹配你要禁用的设备的id的正则表达式
rst = re.search("HOLTEK USB Gaming Mouse\s+id=(\d+)", line, re.S)
# 如果匹配到设备的id了,则禁用该设备
if rst:
mouse_id = rst.groups()[0]
# 禁用设备的命令
exec_str = "xinput -set-prop " + mouse_id + ' "Device Enabled" 1'
# 禁用设备
os.system(exec_str)
break


sh脚本代码如下:

1
2
# unlock_mouse.sh
xinput --list | python3 /home/fire/toolSet/mySh/mouseSh/unlock.py

本篇完。

评论



愿火焰指引你