我希望我的 Windows 键(或 super_l)能够切换 lubuntu 菜单。在添加下面问题中的键绑定后,我能够使用 Windows 键打开它,但到目前为止,我还没有找到通过再次按下相同键来关闭它的方法。上述问题中的一条评论在 2011 年 11 月问过同样的问题,但在谷歌搜索后我还没有找到解决方案。有人知道这是否可能吗?
答案1
切换菜单的另一种方法
这个答案只是发布答案的“一半”这里。由于该问题出现在 上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()))
关于脚本;如何设置
该脚本需要
xdotool
:sudo apt-get install xdotool
将上述脚本复制到一个空文件中,另存为
click_menu.py
现在您需要让脚本记住要(虚拟地)点击的菜单位置:
该脚本需要使用选项运行
-set
,并将鼠标放在以下位置:打开终端窗口,输入命令:
sleep 5 && python3 /path/to/click_menu.py -set
立即将鼠标置于菜单上方(不要单击)
- 5 秒钟后,菜单位置将被“记住”。该位置将写入不可见文件,因此您只需执行一次此操作。
使用以下命令测试一切是否正常:
python3 /path/to/click_menu.py -run
菜单应该打开,如上图所示。
如果一切正常,添加命令:
python3 /path/to/click_menu.py -run
到 键,就像您在问题中提到的其他命令一样。现在按下 键应该可以切换菜单。