我希望我的 windows 键(或 super_l)来切换 lubuntu 菜单。从下面的问题中添加键绑定后,我可以使用 windows 键打开它,但到目前为止,我还没有找到通过再次按下同一个键来关闭它的方法。2011 年 11 月,此处所述问题中的评论询问了同样的问题,但在谷歌搜索后我还没有找到解决方案。有谁知道这是否可能?
这个答案只是此处发布的答案的“一半” 。由于该问题已在 上Gnome
,并且同样被标记,我认为在这里发布稍作编辑的版本来覆盖Lubuntu
( lxde
) 或任何其他窗口管理器是合法的。
我在 上测试了它Lubuntu 14.04
,并且(正如预期的那样)完全做到了它应该做的事情。
该解决方案实际上是一个脚本,您可以轻松地将其设置为自动(虚拟)单击屏幕上的任何位置,包括菜单。由于单击菜单一次将打开它,再次单击它将关闭它,因此将命令放在您的键下,就像您所做的那样,将完全按照您的要求进行操作。
#!/usr/bin/env python3
import subprocess
import time
import sys
import os
option = sys.argv[1]
datafile = os.path.join(os.environ["HOME"], ".run_click")
def get_mousepos():
cursordata = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8").split()
return [d.split(":")[1] for d in cursordata[:2]]
if option == "-run":
try:
data = open(datafile).read()
coords = (" ").join([l for l in data.splitlines()])
except FileNotFoundError:
message = "Please run the command: 'run_click -set' first, to set the click position"
subprocess.Popen(["zenity", "--info", "--text", message])
else:
cmd1 = "xdotool mousemove "+coords; cmd2 = "xdotool click 1"; cmd3 = "xdotool mousemove "+(" ").join(get_mousepos())
for cmd in [cmd1, cmd2, cmd3]:
subprocess.Popen(["/bin/bash", "-c", cmd])
time.sleep(0.05)
elif option == "-set":
open(datafile, "wt").write(("\n").join(get_mousepos()))
Run Code Online (Sandbox Code Playgroud)
该脚本需要xdotool
:
sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)将上面的脚本复制到一个空文件中,另存为click_menu.py
现在您需要让脚本记住菜单位置以(虚拟)单击:
该脚本需要使用选项 运行-set
,并将鼠标放置在以下位置:
打开终端窗口,输入命令:
sleep 5 && python3 /path/to/click_menu.py -set
Run Code Online (Sandbox Code Playgroud)立即将鼠标置于菜单上方(不要单击)
测试命令是否一切正常:
python3 /path/to/click_menu.py -run
Run Code Online (Sandbox Code Playgroud)
菜单应该打开,如上图所示。
如果一切正常添加命令:
python3 /path/to/click_menu.py -run
Run Code Online (Sandbox Code Playgroud)
到关键,就像您对问题中提到的其他命令所做的那样。现在按下该键应该会切换菜单。
归档时间: |
|
查看次数: |
1429 次 |
最近记录: |