Att*_* O. 9 touchpad ubuntu-netbook kubuntu
Kubuntu 11.10(上网本版)
我妻子的上网本有以下问题:当盖子合上时,它会时不时地激活触摸板 - 它会进行小动作和轻敲。笔记本电脑设置为在插入 AC 适配器时不进入睡眠状态,因此每当盖子合上时,它都会继续自行处理。
在暂停电影和睡觉时尤其烦人,因为一段时间后它会点击播放器窗口并继续播放电影,吓坏周围的每个人。
我没有找到在盖子关闭时禁用触摸板的任何选项,但也许有某种事件我可以手动连接并禁用/重新启用它?
Att*_* O. 10
由于没有人能告诉我如何做我想做的事,这是我想出的解决方案:
$ xinput --list
? Virtual core pointer id=2 [master pointer (3)]
? ? Virtual core XTEST pointer id=4 [slave pointer (2)]
? ? FSPPS/2 Sentelic FingerSensingPad id=12 [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)]
? Sleep Button id=8 [slave keyboard (3)]
? Power Button id=9 [slave keyboard (3)]
? USB2.0 UVC PC Camera id=10 [slave keyboard (3)]
? AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
? MSI Laptop hotkeys id=13 [slave keyboard (3)]
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的,我的触摸板是带有id=12. 要禁用它,我需要运行:
$ xinput set-int-prop 12 "Device Enabled" 8 0
Run Code Online (Sandbox Code Playgroud)
并再次启用它:
$ xinput set-int-prop 12 "Device Enabled" 8 1
Run Code Online (Sandbox Code Playgroud)
首先,我可以从这个文件中获取系统上盖子的状态:
$ cat /proc/acpi/button/lid/LID0/state
state: open
Run Code Online (Sandbox Code Playgroud)
当我合上盖子时,状态变为closed。
现在要将状态作为变量,我可以检查一个漂亮grep命令的退出状态:
$ grep -q closed /proc/acpi/button/lid/*/state
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
因此,要根据盖子状态启用或禁用触摸板,我需要做的就是:
$ grep -q closed /proc/acpi/button/lid/*/state
$ xinput set-int-prop 12 "Device Enabled" 8 $?
Run Code Online (Sandbox Code Playgroud)
为了在每次盖子关闭或打开时执行上述命令,我创建了/etc/acpi/local/lid.sh.post包含以下内容的文件:
export XAUTHORITY=`ls -1 /home/*/.Xauthority | head -n 1`
export DISPLAY=":`ls -1 /tmp/.X11-unix/ | sed -e s/^X//g | head -n 1`"
grep -q closed /proc/acpi/button/lid/*/state
xinput set-int-prop 12 "Device Enabled" 8 $?
Run Code Online (Sandbox Code Playgroud)
XAUHTORITY并且DISPLAY需要设置以允许root(谁运行该acpid进程)访问用户的 X 会话。
| 归档时间: |
|
| 查看次数: |
3224 次 |
| 最近记录: |