from . import config from .kinds import request_kind_map def remove_prefix(input_string, prefix): if prefix and input_string.startswith(prefix): return input_string[len(prefix) :] return input_string def remove_suffix(input_string, suffix): if suffix and input_string.endswith(suffix): return input_string[: -len(suffix)] return input_string def _make_gestures(kind_id): kind = request_kind_map(kind_id) defaults = { 'kb:NVDA+alt+s': 'strip_mode', 'kb:NVDA+alt+b': 'bus_mode', 'kb:NVDA+alt+g': 'gain_mode', 'kb:NVDA+alt+c': 'comp_mode', 'kb:NVDA+alt+t': 'gate_mode', 'kb:NVDA+alt+d': 'denoiser_mode', 'kb:NVDA+alt+a': 'audibility_mode', 'kb:NVDA+shift+q': 'announce_controller', 'kb:NVDA+shift+v': 'announce_voicemeeter_version', 'kb:NVDA+shift+o': 'toggle_mono', 'kb:NVDA+shift+s': 'toggle_solo', 'kb:NVDA+shift+m': 'toggle_mute', 'kb:NVDA+shift+c': 'toggle_mc', 'kb:NVDA+shift+k': 'karaoke', 'kb:NVDA+shift+upArrow': 'slider_increase_by_point_one', 'kb:NVDA+shift+downArrow': 'slider_decrease_by_point_one', 'kb:NVDA+shift+alt+upArrow': 'slider_increase_by_one', 'kb:NVDA+shift+alt+downArrow': 'slider_decrease_by_one', 'kb:NVDA+shift+control+upArrow': 'slider_increase_by_three', 'kb:NVDA+shift+control+downArrow': 'slider_decrease_by_three', } for i in range(1, kind.num_strip + 1): defaults[f'kb:NVDA+alt+{i}'] = 'index' for i in range(1, kind.phys_out + kind.virt_out + 1): defaults[f'kb:NVDA+shift+{i}'] = 'bus_assignment' abc = config.get('keybinds') if abc: overrides = {f'kb:{remove_prefix(k, "kb:")}': v for k, v in abc.items()} matching_values = set(defaults.values()).intersection(set(overrides.values())) defaults = {k: v for k, v in defaults.items() if v not in matching_values} return {**defaults, **overrides} return defaults