Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if state & xproto.ModMask.Shift:
ret.append('Shift')
if state & xproto.ModMask.Lock:
ret.append('Lock')
if state & xproto.ModMask.Control:
ret.append('Control')
if state & xproto.ModMask._1:
ret.append('Mod1')
if state & xproto.ModMask._2:
ret.append('Mod2')
if state & xproto.ModMask._3:
ret.append('Mod3')
if state & xproto.ModMask._4:
ret.append('Mod4')
if state & xproto.ModMask._5:
ret.append('Mod5')
if state & xproto.KeyButMask.Button1:
ret.append('Button1')
if state & xproto.KeyButMask.Button2:
ret.append('Button2')
if state & xproto.KeyButMask.Button3:
ret.append('Button3')
if state & xproto.KeyButMask.Button4:
ret.append('Button4')
if state & xproto.KeyButMask.Button5:
ret.append('Button5')
return ret
::
keymods = get_keys_to_mods()
for kc in sorted(keymods, key=lambda kc: keymods[kc]):
print keymods[kc], hex(kc), get_keysym_string(get_keysym(kc))
Which will very closely replicate ``xmodmap``. I'm not getting precise
results quite yet, but I do believe I'm getting at least most of what
matters. (i.e., ``xmodmap`` returns valid keysym strings for some that
I cannot.)
:return: A dict mapping from keycode to modifier mask.
:rtype: dict
"""
mm = xproto.ModMask
modmasks = [mm.Shift, mm.Lock, mm.Control,
mm._1, mm._2, mm._3, mm._4, mm._5] # order matters
mods = conn.core.GetModifierMapping().reply()
res = {}
keyspermod = mods.keycodes_per_modifier
for mmi in range(0, len(modmasks)):
row = mmi * keyspermod
for kc in mods.keycodes[row:row + keyspermod]:
res[kc] = modmasks[mmi]
return res
from collections import defaultdict
from xcffib import xproto
from .keysymdef import keysyms, keysym_strings
__kbmap = None
__keysmods = None
__keybinds = defaultdict(list)
__keygrabs = defaultdict(int) # Key grab key -> number of grabs
GM = xproto.GrabMode
TRIVIAL_MODS = [
0,
xproto.ModMask.Lock,
xproto.ModMask._2,
xproto.ModMask.Lock | xproto.ModMask._2
]
def bind_global_key(conn, event_type, key_string, cb):
"""
An alias for ``bind_key(event_type, ROOT_WINDOW, key_string, cb)``.
:param event_type: Either 'KeyPress' or 'KeyRelease'.
:type event_type: str
:param key_string: A string of the form 'Mod1-Control-a'.
Namely, a list of zero or more modifiers separated by
'-', followed by a single non-modifier key.
:type key_string: str
:param cb: A first class function with no parameters.
:type cb: function
:return: True if the binding was successful, False otherwise.
:rtype: bool
def ungrab_button(self, button, modifiers):
"""Passing None means any key, or any modifier"""
if button is None:
button = xcffib.xproto.Atom.Any
if modifiers is None:
modifiers = xcffib.xproto.ModMask.Any
self.conn.conn.core.UngrabButton(button, self.wid, modifiers)
from collections import defaultdict
from xcffib import xproto
from .keysymdef import keysyms, keysym_strings
__kbmap = None
__keysmods = None
__keybinds = defaultdict(list)
__keygrabs = defaultdict(int) # Key grab key -> number of grabs
GM = xproto.GrabMode
TRIVIAL_MODS = [
0,
xproto.ModMask.Lock,
xproto.ModMask._2,
xproto.ModMask.Lock | xproto.ModMask._2
]
def bind_global_key(conn, event_type, key_string, cb):
"""
An alias for ``bind_key(event_type, ROOT_WINDOW, key_string, cb)``.
:param event_type: Either 'KeyPress' or 'KeyRelease'.
:type event_type: str
:param key_string: A string of the form 'Mod1-Control-a'.
Namely, a list of zero or more modifiers separated by
'-', followed by a single non-modifier key.
:type key_string: str
:param cb: A first class function with no parameters.
:type cb: function
:return: True if the binding was successful, False otherwise.