2

私はAwesome Window Managerを使用しています。mod4 を押してトップバーを表示し、離すと非表示にします。「keyup Mod4」をawed.keyに渡すのにうんざりしましたが、うまくいきません。キーアップでイベントをトリガーしたいことをどのように伝えることができますか?

4

4 に答える 4

2

同じものが欲しかった!いくつかの調査の後、私は思いつきました:

  • echo 'mywibox[1].visible = true' | awesome-clientmod4が押されたときと離されたときに実行する外部プログラムを使用しecho 'mywibox[1].visible = false' | awesome-clientます。
  • なんらかの理由で、プレス アンド リリース イベントを mod4 に接続できない (または機能しない) ため、Menu (右の Ctrl の近く) など、モディファイアではなく他のキーを使用します。

これが私の解決策です(押されたキーは押されている限りイベントを送信するため、タイマーが必要です):

-- 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)`

3番目のパラメーターは、渡されたときの「リリース」イベントのハンドラーです。

于 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され、その出力を解析します。Python で直接解析することもできますが/dev/input/event1、私は怠惰でした。

次に、キーが押されたり離されたりするたびに、次の 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 に答える