Coverage for /home/antoine/projects/xpra-git/dist/python3/lib64/python/xpra/keyboard/mask.py : 85%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1#!/usr/bin/env python
2# This file is part of Xpra.
3# Copyright (C) 2008 Nathaniel Smith <njs@pobox.com>
4# Copyright (C) 2011-2013 Antoine Martin <antoine@xpra.org>
5# Xpra is released under the terms of the GNU GPL v2, or, at your option, any
6# later version. See the file COPYING for details.
9MODIFIER_MAP = {
10 "shift": 1 << 0,
11 "lock": 1 << 1,
12 "control": 1 << 2,
13 "mod1": 1 << 3,
14 "mod2": 1 << 4,
15 "mod3": 1 << 5,
16 "mod4": 1 << 6,
17 "mod5": 1 << 7,
18 }
21DEFAULT_MODIFIER_NAMES = ["shift", "control"]
22DEFAULT_MODIFIER_NUISANCE_KEYNAMES = ["Num_Lock", "Caps_Lock", "Scroll_Lock"]
23DEFAULT_MODIFIER_NUISANCE = ["lock"]
24DEFAULT_ALL_MODIFIER_NAMES = DEFAULT_MODIFIER_NAMES+DEFAULT_MODIFIER_NUISANCE+["mod1", "mod2", "mod3", "mod4", "mod5"]
26DEFAULT_MODIFIER_MEANINGS = {
27 "Shift_L" : "shift",
28 "Shift_R" : "shift",
29 "Caps_Lock" : "lock",
30 "Control_L" : "control",
31 "Control_R" : "control",
32 "Alt_L" : "mod1",
33 "Alt_R" : "mod1",
34 "Meta_L" : "mod1",
35 "Meta_R" : "mod1",
36 "Num_Lock" : "mod2",
37 "Super_L" : "mod3",
38 "Super_R" : "mod3",
39 "Hyper_L" : "mod4",
40 "Hyper_R" : "mod4",
41 "ISO_Level3_Shift" : "mod5",
42 "Mode_switch" : "mod5",
43 }
45def mask_to_names(mask, modifier_map):
46 modifiers = []
47 for modifier, modifier_mask in modifier_map.items():
48 if modifier_mask & mask:
49 modifiers.append(modifier)
50 mask &= ~modifier_mask
51 return modifiers