From aca2149ecfe0a8f48a626b79f0ada39422ef819b Mon Sep 17 00:00:00 2001 From: some1ataplace <99353321+some1ataplace@users.noreply.github.com> Date: Sat, 7 Mar 2026 06:05:29 +0000 Subject: [PATCH] Update filtering.py with blacklist --- src/filtering.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/filtering.py b/src/filtering.py index 8fc185d..96ac1c4 100644 --- a/src/filtering.py +++ b/src/filtering.py @@ -25,8 +25,16 @@ def _from_keystroke(event: libevdev.InputEvent, threshold: int) -> bool: if event.matches(libevdev.EV_SYN) or event.matches(libevdev.EV_MSC): return False + # filtering keys that are held down for combinations disable said combination from working (i.e. shift+d for D) + blacklist = event.matches(libevdev.EV_KEY.KEY_RIGHTALT) or\ + event.matches(libevdev.EV_KEY.KEY_LEFTALT) or\ + event.matches(libevdev.EV_KEY.KEY_RIGHTSHIFT) or\ + event.matches(libevdev.EV_KEY.KEY_LEFTSHIFT) or\ + event.matches(libevdev.EV_KEY.KEY_RIGHTCTRL) or\ + event.matches(libevdev.EV_KEY.KEY_LEFTCTRL) + # some events we don't want to filter, like EV_LED for toggling NumLock and the like, and also key hold events - if not event.matches(libevdev.EV_KEY) or event.value > 1: + if blacklist or not event.matches(libevdev.EV_KEY) or event.value > 1: logging.debug(f'FORWARDING {event.code}') return True @@ -55,4 +63,4 @@ def _from_keystroke(event: libevdev.InputEvent, threshold: int) -> bool: _last_key_up: Dict[libevdev.EventCode, int] = {} -_key_pressed: DefaultDict[libevdev.EventCode, bool] = defaultdict(bool) \ No newline at end of file +_key_pressed: DefaultDict[libevdev.EventCode, bool] = defaultdict(bool)