g13gui: Prep for the great g13d removal

Our key binds will now use actual key codes from evdev instead of using made up
key symbol names from G13D. This results in a *major* change, of which this is
just the start. Effectively, we're going to move away from using the old and
crufty g13d for everything, and just write our own g13 manager instead.
This commit is contained in:
June Tate-Gans 2021-05-02 12:47:54 -05:00
parent dd21f7fb96
commit f9264c390e
2 changed files with 35 additions and 196 deletions

View File

@ -31,8 +31,6 @@ class BindingProfile(Subject):
return self._stickRegions return self._stickRegions
def keyBinding(self, gkey): def keyBinding(self, gkey):
gkey = gkey.upper()
if gkey in self._stickRegions.keys(): if gkey in self._stickRegions.keys():
if gkey in self._stickRegionBindings.keys(): if gkey in self._stickRegionBindings.keys():
return self._stickRegionBindings[gkey] return self._stickRegionBindings[gkey]

View File

@ -1,179 +1,39 @@
#!/usr/bin/python3 #!/usr/bin/python3
from evdev import ecodes as e
from g13gui.g13.common import G13Keys
""" """
Defines a whole bunch of constants relating to mapping G13D key names to GDK key Defines a whole bunch of constants relating to mapping G13D key names to GDK
names, as well as the symbols that g13d natively supports. key names, as well as the symbols that g13d natively supports.
""" """
G13D_TO_GDK_KEYBINDS = {
'0': '0',
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'A': 'A',
'B': 'B',
'C': 'C',
'D': 'D',
'E': 'E',
'F': 'F',
'G': 'G',
'H': 'H',
'I': 'I',
'J': 'J',
'K': 'K',
'L': 'L',
'M': 'M',
'N': 'N',
'O': 'O',
'P': 'P',
'Q': 'Q',
'R': 'R',
'S': 'S',
'T': 'T',
'U': 'U',
'V': 'V',
'W': 'W',
'X': 'X',
'Y': 'Y',
'Z': 'Z',
'LEFT': 'Left',
'RIGHT': 'Right',
'UP': 'Up',
'DOWN': 'Down',
'APOSTROPHE': 'apostrophe',
'BACKSLASH': 'backslash',
'BACKSPACE': 'backspace',
'CAPSLOCK': 'capslock',
'COMMA': 'comma',
'DOT': 'period',
'ENTER': 'enter',
'EQUAL': 'equals',
'ESC': 'Escape',
'F1': 'F1',
'F2': 'F2',
'F3': 'F3',
'F4': 'F4',
'F5': 'F5',
'F6': 'F6',
'F7': 'F7',
'F8': 'F8',
'F9': 'F9',
'F10': 'F10',
'F11': 'F11',
'F12': 'F12',
'GRAVE': 'grave',
'INSERT': 'insert',
'HOME': 'home',
'PAGEUP': 'pageup',
'DELETE': 'delete',
'END': 'end',
'PAGEDOWN': 'pagedown',
'NUMLOCK': 'numlock',
'KPASTERISK': 'kpasterisk',
'KPMINUS': '0',
'KP7': '0',
'KP8': '0',
'KP9': '0',
'KPPLUS': '0',
'KP4': '0',
'KP5': '0',
'KP6': '0',
'KP1': '0',
'KP2': '0',
'KP3': '0',
'KP0': '0',
'KPDOT': '0',
'LEFTBRACE': 'braceleft',
'RIGHTBRACE': 'braceright',
'MINUS': 'minus',
'SEMICOLON': 'semicolon',
'SLASH': 'slash',
'SPACE': 'space',
'TAB': 'Tab',
'LEFTALT': 'Alt_L',
'LEFTCTRL': 'Control_L',
'LEFTSHIFT': 'Shift_L',
'RIGHTALT': 'Alt_R',
'RIGHTCTRL': 'Control_R',
'RIGHTSHIFT': 'Shift_R',
'SCROLLLOCK': 'ScrollLock',
}
GDK_TO_G13D_KEYBINDS = {}
for g13d_key, gdk_key in G13D_TO_GDK_KEYBINDS.items():
GDK_TO_G13D_KEYBINDS[gdk_key] = g13d_key
GDK_TO_G13D_KEYBINDS['asciitilde'] = 'GRAVE'
GDK_TO_G13D_KEYBINDS['braceleft'] = 'LEFTBRACE'
GDK_TO_G13D_KEYBINDS['braceright'] = 'RIGHTBRACE'
GDK_TO_G13D_KEYBINDS['bracketleft'] = 'LEFTBRACE'
GDK_TO_G13D_KEYBINDS['bracketright'] = 'RIGHTBRACE'
GDK_TO_G13D_KEYBINDS['quotedbl'] = 'APOSTROPHE'
GDK_TO_G13D_KEYBINDS['less'] = 'COMMA'
GDK_TO_G13D_KEYBINDS['greater'] = 'DOT'
GDK_TO_G13D_KEYBINDS['bar'] = 'BACKSLASH'
GDK_TO_G13D_KEYBINDS['question'] = 'SLASH'
GDK_TO_G13D_KEYBINDS['colon'] = 'SEMICOLON'
GDK_TO_G13D_KEYBINDS['plus'] = 'EQUALS'
GDK_TO_G13D_KEYBINDS['exclam'] = '1'
GDK_TO_G13D_KEYBINDS['at'] = '2'
GDK_TO_G13D_KEYBINDS['numbersign'] = '3'
GDK_TO_G13D_KEYBINDS['dollar'] = '4'
GDK_TO_G13D_KEYBINDS['percent'] = '5'
GDK_TO_G13D_KEYBINDS['asciicircum'] = '6'
GDK_TO_G13D_KEYBINDS['ampersand'] = '7'
GDK_TO_G13D_KEYBINDS['asterisk'] = '8'
GDK_TO_G13D_KEYBINDS['parenleft'] = '9'
GDK_TO_G13D_KEYBINDS['parenright'] = '0'
GDK_TO_G13D_KEYBINDS['ISO_Left_Tab'] = 'TAB'
G13_KEYS = [
'BD', 'L1', 'L2', 'L3', 'L4', 'LIGHT',
'M1', 'M2', 'M3', 'MR',
'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7',
'G8', 'G9', 'G10', 'G11', 'G12', 'G13', 'G14',
'G15', 'G16', 'G17', 'G18', 'G19',
'G20', 'G21', 'G22',
'LEFT', 'DOWN', 'TOP',
]
DEFAULT_KEY_BINDINGS = { DEFAULT_KEY_BINDINGS = {
'G1': ['GRAVE'], G13Keys.G1.name: [e.KEY_GRAVE],
'G2': ['1'], G13Keys.G2.name: [e.KEY_1],
'G3': ['2'], G13Keys.G3.name: [e.KEY_2],
'G4': ['3'], G13Keys.G4.name: [e.KEY_3],
'G5': ['4'], G13Keys.G5.name: [e.KEY_4],
'G6': ['5'], G13Keys.G6.name: [e.KEY_5],
'G7': ['6'], G13Keys.G7.name: [e.KEY_6],
'G8': ['TAB'], G13Keys.G8.name: [e.KEY_TAB],
'G9': ['Q'], G13Keys.G9.name: [e.KEY_Q],
'G10': ['W'], G13Keys.G10.name: [e.KEY_W],
'G11': ['E'], G13Keys.G11.name: [e.KEY_E],
'G12': ['R'], G13Keys.G12.name: [e.KEY_R],
'G13': ['T'], G13Keys.G13.name: [e.KEY_T],
'G14': ['Y'], G13Keys.G14.name: [e.KEY_Y],
'G15': ['A'], G13Keys.G15.name: [e.KEY_A],
'G16': ['S'], G13Keys.G16.name: [e.KEY_S],
'G17': ['D'], G13Keys.G17.name: [e.KEY_D],
'G18': ['F'], G13Keys.G18.name: [e.KEY_F],
'G19': ['G'], G13Keys.G19.name: [e.KEY_G],
'G20': ['X'], G13Keys.G20.name: [e.KEY_X],
'G21': ['C'], G13Keys.G21.name: [e.KEY_C],
'G22': ['V'], G13Keys.G22.name: [e.KEY_V],
'LEFT': ['B'], G13Keys.THUMB_LEFT.name: [e.KEY_B],
'DOWN': ['N'], G13Keys.THUMB_DOWN.name: [e.KEY_N],
} }
@ -198,14 +58,14 @@ DEFAULT_STICK_REGIONS = {
} }
DEFAULT_STICK_REGION_BINDINGS = { DEFAULT_STICK_REGION_BINDINGS = {
StickRegion.UP: ['W'], StickRegion.UP: [e.KEY_W],
StickRegion.DOWN: ['S'], StickRegion.DOWN: [e.KEY_S],
StickRegion.LEFT: ['A'], StickRegion.LEFT: [e.KEY_A],
StickRegion.RIGHT: ['D'] StickRegion.RIGHT: [e.KEY_D]
} }
class StickMode(): class StickMode(object):
ABSOLUTE = 'ABSOLUTE' ABSOLUTE = 'ABSOLUTE'
RELATIVE = 'RELATIVE' RELATIVE = 'RELATIVE'
KEYS = 'KEYS' KEYS = 'KEYS'
@ -216,23 +76,4 @@ ALL_STICK_MODES = frozenset({
}) })
def G13DKeyIsModifier(key):
key = key.upper()
return (key == 'LEFTSHIFT' or key == 'RIGHTSHIFT' or
key == 'LEFTALT' or key == 'RIGHTALT' or
key == 'LEFTCTRL' or key == 'RIGHTCTRL')
def G13ToGDK(keybinds):
if type(keybinds) == list:
return [G13D_TO_GDK_KEYBINDS[binding] for binding in keybinds]
return G13D_TO_GDK_KEYBINDS[keybinds]
def GDKToG13(keybinds):
if type(keybinds) == list:
return [GDK_TO_G13D_KEYBINDS[binding] for binding in keybinds]
return GDK_TO_G13D_KEYBINDS[keybinds]
DEFAULT_LCD_COLOR = (1.0, 0.0, 0.0) DEFAULT_LCD_COLOR = (1.0, 0.0, 0.0)