Source code for pykeymapper.modifiers.existing_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 ExistingModifier(Modifier):
"""
Add "tap" functionality to an existing modifier.
"""
[docs] def handle_mod_key_input(self, input_event):
if input_event.value == VALUE.KEY_DOWN:
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())
else:
write_event(input_event)
[docs] def handle_other_input(self, input_event):
if not self.is_key_down:
write_event(input_event)
elif input_event.value == VALUE.KEY_UP:
write_event(input_event)
elif input_event.value in [VALUE.KEY_DOWN, VALUE.KEY_REPEAT]:
if self.should_tap:
self.should_tap = False
write_event(make_key_event(self.code, VALUE.KEY_DOWN))
write_event(input_event)