如何设置键盘快捷键来打开/关闭例如触控板?

In7*_*n78 6 shortcut-keys trackpad system-settings

我正在使用 ubuntu 14.04。我目前已通过在“系统设置 -> 鼠标和触摸板”中将其关闭来禁用笔记本电脑的触控板。我可以像系统设置中的选项一样设置键盘快捷键来打开和关闭触控板吗?

Jac*_*ijm 3

您可以在快捷键下放置一个小脚本来检查当前状态,并使其随后切换到其他状态。

这在很多情况下都有效,例如切换触控板、切换(许多)指示器图标的可见性等(请参阅帖子中的编辑)

下面的脚本执行此操作:

#!/usr/bin/env python3
import subprocess

key = "org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled"

cmd1 = "/bin/bash", "-c", "gsettings get "+key
new_state = "false" if subprocess.check_output(cmd1).decode("utf-8").strip()  == "true" else "true"
cmd2 = "gsettings set "+key+" "+new_state
subprocess.Popen(["/bin/bash", "-c", cmd2])
Run Code Online (Sandbox Code Playgroud)

如何使用

  1. 将脚本复制到一个空文件中,另存为toggle_touchpad.py
  2. 通过运行(在终端中)命令来测试运行它:

    python3 /path/to/toggle_touchpad.py
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果一切正常,请将其添加到快捷键组合中:选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加命令:

    python3 /path/to/toggle_touchpad.py
    
    Run Code Online (Sandbox Code Playgroud)

现在快捷键应该打开/关闭触摸板

解释

通过按键启用/禁用触摸板:

org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled
Run Code Online (Sandbox Code Playgroud)

要获取当前状态:

gsettings get org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled
Run Code Online (Sandbox Code Playgroud)

要设置为enabled

gsettings set org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled true
Run Code Online (Sandbox Code Playgroud)

要设置为disabled

gsettings set org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled false
Run Code Online (Sandbox Code Playgroud)

笔记

1. 在自定义键盘快捷键中使用绝对路径

与文件中一样.desktop,相对路径~不能在自定义键盘快捷键中使用。另外,就像在终端命令中一样,空格需要转义:

代替:

python3 ~/Keyboard\ shortcuts/toggle_touchpad.py
Run Code Online (Sandbox Code Playgroud)

使用:

python3 /home/yourname/"Keyboard shortcuts"/toggle_touchpad.py
Run Code Online (Sandbox Code Playgroud)

2. 使用15.04中的命令

由于一个错误(看起来),命令:

gsettings set org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled true 
Run Code Online (Sandbox Code Playgroud)

工作正常,但是命令:

gsettings set org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled false
Run Code Online (Sandbox Code Playgroud)

需要运行两次(!!)才能禁用 触摸板...

3.Bash版本的脚本

对于那些bash出于某种原因更喜欢某个版本的人:

python3 /path/to/toggle_touchpad.py
Run Code Online (Sandbox Code Playgroud)

另存为toggle_touchpad.sh,使用命令运行

/bin/bash /path/to/toggle_touchpad.sh
Run Code Online (Sandbox Code Playgroud)

编辑

上面的脚本可用于切换由命令完成的类型(假/真)的任何设置。只需更改该行:gsettingsboolean

key = "org.gnome.settings-daemon.peripherals.touchpad touchpad-enabled"
Run Code Online (Sandbox Code Playgroud)

按相应的键。

一个例子:

如果我将该行更改为:

key = "com.canonical.indicator.sound visible"
Run Code Online (Sandbox Code Playgroud)

它切换声音指示器图标的可见性。