菜单键作为Awesome WM的粘性Modkey

时间:2019-05-28 07:43:28

标签: awesome-wm

我正在考虑改用Awesome WM(出于多种原因,可入侵性可能是最重要的-我是Emacs的重度用户;-))。

几年前,我曾经使用平铺WM(StumpWM),它具有一个很好的功能,即仅将一个键绑定为“前缀”。我将其设置为(否则对我而言无用)“菜单”键,因此基本上所有WM绑定都为“按菜单,释放它,按其他操作”。

从文档/教程中,我可以看到Awesome将其功能绑定到“ modkey + something”的方法略有不同。

是否可以像以前一样将“菜单”用作“粘性modkey”?或更确切地说,我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以为菜单键创建一个“普通”键绑定,在其中启动一个键盘抓取器,然后使用它来获取随后的“内容”。这意味着您必须自己重新设计轮子,因为AwesomeWM中的代码不会为您管理键绑定,但是应该可行。

对您入门没有多大帮助的简单示例:

diff --git a/awesomerc.lua b/awesomerc.lua
index 5d2bd2c10..7973b210a 100644
--- a/awesomerc.lua
+++ b/awesomerc.lua
@@ -242,6 +243,12 @@ root.buttons(gears.table.join(
 -- {{{ Key bindings
 -- @DOC_GLOBAL_KEYBINDINGS@
 globalkeys = gears.table.join(
+    awful.key({}, "Menu", nil, function()
+        keygrabber.run(function(mods, key, action)
+            print("You did:", gears.debug.dump_return(mods), key, action)
+            keygrabber.stop()
+        end)
+    end),
     awful.key({ modkey,           }, "s",      hotkeys_popup.show_help,
               {description="show help", group="awesome"}),
     awful.key({ modkey,           }, "Left",   awful.tag.viewprev,

此操作是在松开菜单键后打印第一个“键盘事件”。例如是“在释放菜单键之前已释放的键”,但是您可能只关心诸如“'s'被按下”之类的事情。