特定のファンクションキー(FN)をAwesomeWMにバインドすると、バインディングが解放されるまで中断されます。

特定のファンクションキー(FN)をAwesomeWMにバインドすると、バインディングが解放されるまで中断されます。

使うデル・インスピロン15 7580。良い点はバージョン4.3です。

私は私のキーの名前を解決するために使用しますxev。ボリュームキーを押すと、一般的な結果が返されます。

KeyPress event, serial 36, synthetic NO, window 0x1200001,
    root 0x169, subw 0x1200002, time 13968342, (38,56), root:(841,97),
    state 0x0, keycode 122 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x1200001,
    root 0x169, subw 0x1200002, time 13968484, (38,56), root:(841,97),
    state 0x0, keycode 122 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

だからキーをAwesomeWMにバインドします...

awful.key({ }, "XF86AudioLowerVolume", 
    awful.spawn("amixer set Master 5%-"), {})

しかし、Awesomeを更新すると、バインディングは機能せず、xev他の結果が返されます。

FocusOut event, serial 36, synthetic NO, window 0x1800001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 36, synthetic NO, window 0x1800001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 36, synthetic NO, window 0x0,
    keys:  105 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

バインディングを解除した後、ファンクションキーを再利用できます。しかし、なぜこれが起こるのですか?一度バインドすると、私のボリュームキーでもありません。

ベストアンサー1

私はそれについて考えた。何らかの理由でawful.spawn匿名関数内で使用する必要がありました。awful.spawn関数なのであえてこうする必要はないと思いました。しかし、残念ながらあなたはそうです。

awful.key({ }, "XF86AudioLowerVolume", function() 
    awful.spawn("amixer set Master 5%-") 
end, 
{description = "lower audio", group = "audio"}),

編集する説明しなければならないと思いました。

したがって、press(に対するメタテーブル)のパラメータには仮パラメータとして必要です。key.new__callawful.keyfunctionawful.spawn はいtypefunctionが返される内容いいえ機能。したがって、この場合、関数をパラメータとして渡すことができ、関数を呼び出すことはできません。

良い例

-- Notice I passed awful.spawn without calling it
awful.key({ }, "t", awful.spawn, {})

悪い例

-- awful.spawn is called here, so whats returned by it is passed as an argument
awful.key({ }, "t", awful.spawn(), {})

を呼び出すと、いつでもLuaでタイプを確認できることに注意してくださいtype

type(awful.spawn)
function

おすすめ記事