2

我正在使用 Awesome Window Manager。我想通过按下 mod4 来显示我的顶栏,然后在我释放时隐藏它。我厌倦了将“keyup Mod4”传递给whole.key,但它不起作用。如何告诉它我想在 keyup 上触发事件?

4

4 回答 4

2

我想要同样的东西!经过一番研究,我想出了:

  • echo 'mywibox[1].visible = true' | awesome-client当 mod4 被按下和echo 'mywibox[1].visible = false' | awesome-client释放时,使用外部程序执行。
  • 使用其他键,而不是修饰符,例如菜单(靠近右侧 Ctrl),因为由于某种原因,您无法将按下和释放事件连接到 mod4(或者它只是不起作用)。

这是我的解决方案(需要计时器,因为只要按下按键就会发送事件):

-- Put it somewhere at the beginning
presswait = { started = false }

-- Put it in key bindings section (globalkeys = within awful.table.join)
awful.key({ }, "Menu", function()
    if presswait.started then
            presswait:stop()
    else
        -- One second to tell if key is released
        presswait = timer({ timeout = 1 })
        presswait:connect_signal("timeout", function()
            presswait:stop()

            -- Key is released
            for i = 1, screen.count() do
                mywibox[i].visible = false
            end
        end)

        -- Key is pressed
        for i = 1, screen.count() do
            mywibox[i].visible = true
        end
    end
    presswait:start()
end)
于 2014-02-17T19:06:40.203 回答
2

尝试

`awful.key({ modkey }, "", nil, function () staff here end)`

第三个参数是传递时“释放”事件的处理程序。

于 2013-09-14T22:05:26.813 回答
1

您可以将信号连接到关键对象:

key.connect_signal("press", function(k)
    -- Analyze k and act accordingly
end)

更多关于信号的信息:http: //awesome.naquadah.org/wiki/Signals

于 2013-09-09T04:38:55.797 回答
0

使用来自https://stackoverflow.com/a/21837280/2656413的第一个建议, 我编写了这个 python 脚本:https ://github.com/grandchild/autohidewibox

它所做的是,它xinput在后台运行并解析其输出。你也可以/dev/input/event1直接在python中解析,但我很懒。

然后,每次按下或释放键时,它都会将以下 lua 代码传递给 awesome:

echo 'for i, box in pairs(mywibox) do box.visible = true end' | awesome-client

echo 'for i, box in pairs(mywibox) do box.visible = false end' | awesome-client

分别。

更新:

对于真棒 4+ 使用:

echo "for s in screen do s.mywibox.visible = false end" | awesome-client

true

于 2015-04-23T18:54:28.267 回答