사용하다델 인스피론 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
__call
awful.key
function
awful.spawn
예type function
하지만 반환되는 내용아니요기능. 따라서 이 경우 함수를 매개변수로 전달할 수만 있고 함수를 호출할 수는 없습니다.
좋은 예
-- 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(), {})
를 호출하면 언제든지 루아에서 유형을 확인할 수 있다는 점을 기억하세요 type
.
type(awful.spawn)
function