Source code for pykeymapper.modifiers.custom_modifier
from pykeymapper.events import VALUE
from pykeymapper.modifiers.base import Modifier
from pykeymapper.utils import push_key, write_event, make_key_event
[docs]class CustomModifier(Modifier):
"""
Create a modifier from a normal key.
"""
macros = {}
[docs] def handle_mod_key_input(self, input_event):
if input_event.value == VALUE.KEY_DOWN:
self.release_keys()
self.is_key_down = True
self.should_tap = True
if input_event.value == VALUE.KEY_UP:
self.is_key_down = False
if self.should_tap:
push_key(self.get_release_code())
[docs] def handle_other_input(self, input_event):
if not self.is_key_down:
write_event(input_event)
if input_event.value == VALUE.KEY_DOWN:
self.unreleased_keys.add(input_event.code)
if input_event.value == VALUE.KEY_UP:
try:
self.unreleased_keys.remove(input_event.code)
except KeyError:
pass
elif input_event.value in [VALUE.KEY_DOWN, VALUE.KEY_REPEAT]:
self.should_tap = False
try:
callback_function = self.macros[input_event.code]
except KeyError:
callback_function = lambda input_event_code: push_key(input_event_code)
callback_function(input_event.code)