--------------------------------------------------------------------------- -- @author Julien Danjou <julien@danjou.info> -- @copyright 2009 Julien Danjou -- @release @AWESOME_VERSION@ --------------------------------------------------------------------------- -- Grab environment we need local setmetatable = setmetatable local ipairs = ipairs local unpack = unpack local capi = { key = key } local util = require("awful.util") --- Key helper for awful module("awful.key") --- Modifiers to ignore ignore_modifiers = { "Lock", "Mod2" } --- Create a new key to use as binding. -- This function is useful to create several keys from one, because it will use -- the ignore_modifier variable to create more key with or without the ignored -- modifiers activated. -- For example if you want to ignore CapsLock in your keybinding (which is -- ignored by default by this function), creatina key binding with this function -- will return 2 key objects: one with CapsLock on, and the other one with -- CapsLock off. -- @see C api key() function for parameters. -- @return A table with one or several key objects. local function new(_, mod, ...) local ret = {} local subsets = util.subsets(ignore_modifiers) for _, set in ipairs(subsets) do ret[#ret + 1] = capi.key(util.table.join(mod, set), unpack(arg)) end return ret end setmetatable(_M, { __call = new }) -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80