I'm working on something similar to a custom keyboard layout. I want to have working combinations of shift + key, alt gr + key and shift + alt gr + key. However as alt gr + key works pretty good, after shift + key program takes shift as released even though it's still pushed.
That's the code I'm talking about:
import keyboard
altgr_pressed = False
shift_pressed = False
def switch_altgr(_):
global altgr_pressed
if altgr_pressed and keyboard.is_pressed("alt gr"): return
altgr_pressed = not altgr_pressed
print(f"alt gr pressed: {altgr_pressed}")
keyboard.on_press_key("alt gr", switch_altgr)
keyboard.on_release_key("alt gr", switch_altgr)
def switch_shift(_):
global shift_pressed
if shift_pressed and keyboard.is_pressed("shift"): return
shift_pressed = not shift_pressed
print(f"shift pressed: {shift_pressed}")
keyboard.on_press_key("shift", switch_shift)
keyboard.on_release_key("shift", switch_shift)
def write():
print(altgr_pressed)
if altgr_pressed:
if shift_pressed:
keyboard.write("Ż")
else:
keyboard.write("ż")
else:
if shift_pressed:
keyboard.write("Z")
else:
keyboard.write("z")
keyboard.add_hotkey("a", lambda: write(), suppress=True)
keyboard.add_hotkey("shift + a", lambda: write(), suppress=True)
keyboard.add_hotkey("alt gr + a", lambda: write(), suppress=True)
keyboard.add_hotkey("shift + alt gr + a", lambda: write(), suppress=True)
keyboard.wait()
Can someone explain me why alt gr works good and shift doesn't and how to fix it?