2018-12-29 02:47:06 +01:00
|
|
|
-- --DOC_GEN_OUTPUT --DOC_HIDE
|
|
|
|
-- local awful = { keygrabber = require("awful.keygrabber") } --DOC_HIDE
|
|
|
|
--
|
|
|
|
-- local keybinding_works = {} --DOC_HIDE
|
|
|
|
--
|
|
|
|
-- local g = --DOC_HIDE
|
|
|
|
-- awful.keygrabber {
|
|
|
|
-- mask_modkeys = true,
|
|
|
|
-- root_keybindings = {
|
|
|
|
-- {{"Mod4"}, "i", function(self)
|
|
|
|
-- print("Is now active!", self)
|
|
|
|
-- keybinding_works[1] = true --DOC_HIDE
|
|
|
|
-- end},
|
|
|
|
-- },
|
|
|
|
-- keybindings = {
|
|
|
|
-- {{"Mod4", "Shift"}, "i", function(self)
|
|
|
|
-- print("Called again!")
|
|
|
|
-- keybinding_works[3] = true --DOC_HIDE
|
|
|
|
-- self:stop()
|
|
|
|
-- end},
|
|
|
|
-- },
|
|
|
|
-- keypressed_callback = function(_, modifiers, key)
|
|
|
|
-- print("A key was pressed:", key, "with", #modifiers, "modifier!")
|
|
|
|
-- keybinding_works[2] = keybinding_works[2] and keybinding_works[2] + 1 or 1 --DOC_HIDE
|
|
|
|
-- end,
|
|
|
|
-- }
|
|
|
|
-- --DOC_NEWLINE
|
|
|
|
-- -- The following will **NOT** trigger the keygrabbing because it isn't exported
|
|
|
|
-- -- to the root (global) keys. Adding `export_keybindings` would solve that
|
|
|
|
-- require("gears.timer").run_delayed_calls_now() --DOC_HIDE `root_keybindings` is async
|
|
|
|
-- root._execute_keybinding({"Mod4", "Shift"}, "i")
|
|
|
|
-- assert(#keybinding_works == 0)
|
|
|
|
--
|
|
|
|
-- --DOC_NEWLINE
|
|
|
|
-- -- But this will start the keygrabber because it is part of the root_keybindings
|
|
|
|
-- root._execute_keybinding({"Mod4"}, "i")
|
|
|
|
-- assert(keybinding_works[1]) --DOC_HIDE
|
|
|
|
-- assert(not keybinding_works[2]) --DOC_HIDE
|
|
|
|
--
|
|
|
|
-- --DOC_NEWLINE
|
|
|
|
-- -- Note that that keygrabber is running, all callbacks should work:
|
|
|
|
-- root.fake_input("key_press" , "a")
|
|
|
|
-- root.fake_input("key_release" , "a")
|
|
|
|
-- assert(keybinding_works[2] == 1) --DOC_HIDE
|
|
|
|
--
|
|
|
|
-- --DOC_NEWLINE
|
|
|
|
-- -- Calling the root keybindings now wont work because they are not part of
|
|
|
|
-- -- the keygrabber internal (own) keybindings, so `keypressed_callback` will
|
|
|
|
-- -- be called.
|
|
|
|
-- root._execute_keybinding({"Mod4"}, "i")
|
|
|
|
-- assert(keybinding_works[2] == 2) --DOC_HIDE because mask_modkeys is set
|
|
|
|
-- assert(g == awful.keygrabber.current_instance) --DOC_HIDE
|
|
|
|
-- assert(not keybinding_works[3])--DOC_HIDE
|
|
|
|
--
|
|
|
|
--
|
|
|
|
-- --DOC_NEWLINE
|
|
|
|
-- -- Now the keygrabber own keybindings will work
|
|
|
|
-- root._execute_keybinding({"Mod4", "Shift"}, "i")
|
|
|
|
-- assert(keybinding_works[3])--DOC_HIDE
|
|
|
|
-- keybinding_works[2] = 0--DOC_HIDE
|
|
|
|
-- assert(not awful.keygrabber.current_instance) --DOC_HIDE
|
|
|
|
-- root.fake_input("key_press" , "a") --DOC_HIDE
|
|
|
|
-- root.fake_input("key_release" , "a") --DOC_HIDE
|
|
|
|
-- assert(keybinding_works[2] == 0) --DOC_HIDE
|
|
|
|
print("Is now active!", "nil")
|
|
|
|
print("A key was pressed:", "a", "with", "0", "modifier!")
|
|
|
|
print("A key was pressed:", "i", "with", "1", "modifier!")
|
|
|
|
print("Called again!")
|