Pynput kütüphanesi ile aynı anda basılan tuşları fark etme

Arkadaşlar merhaba;

Ben pynput kütüphanesi ile bir proje yapacağım ama bir yerde takıldım.

import pynput.keyboard as Keyboard
 
def on_press(key):
    try:
        print(f'Key {key.char} pressed!')
    except AttributeError:
        print(f'Special Key {key} pressed!')
 
def on_release(key):
    print(f'Key {key} released')
    if key == Keyboard.Key.esc:
        return False
 
with Keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

Şimdilik yazdığım kod böyle. Benim istediğim sol shift ve tab tuşuna aynı anda basıldığında programın kapanması bunu nasıl yapabilirim?

Teşekkürler!

sol shift basıldıktan sonra tab için bekleyebilir

Peki bunu nasıl yapabilirim? :sweat_smile:

eğer sol shift basıldıysa
ve eğer tab basıldıysa
kapat
değilse
devam et

if(listener == 'shift'): #aslına bakarsanız shifte basıldığında shift stringini döndürüyor mu bilmiyorum 
    exit()
else:
    pass

kodlarda mutlaka hata vardır ama basit olur düzeltirsin ayrıca burada sadece shift tuşuna basıldığında oluyor bunu nasıl geliştiririm bilmiyorum

tab nerede…

orada da yazdım aynı anda iki tuşa basıldığında nasıl algılamasını sağlayacağımı bilmiyorum

Sorun şu ki aynı anda shift ve tab a bastığımız da ikisini de farklı komut satırında yazıyor.

Örnek olarak;

=> ‘shift’ pressed
=> ‘tab’ pressed

Bunu gibi yazıyor

Eğer kodu çalıştırırsanız ne demek istediğimi daha rahat anlarsınız

Biz böyle mi yardım ediyoruz insanlara? Algoritmayı değil, kodları sormuş.

algoritmayla kodu yazabilir

algoritmayı @LURIDss de biliyor o pynputun hangi fonksiyonlarını kullanarak veya ne yaparak algoritmayı uygulayabileceğini soruyor. bu arada @LURIDss konu dışı olacak ama program bir kere a tuşuna bastığında bir değil iki şey yazıyor şunlar
a tuşuna bastığımda
key a pressed
key a released
onun yerine sadece key a pressed yazsa daha güzel olmaz mı

import pynput.keyboard as Keyboard

previous_key = None
current_Key = None

def on_press(key):
    global previous_key, current_Key
    previous_key = current_Key

    try:
        print(f'Key {key.char} pressed!')
    except AttributeError:
        print(f'Special Key {key} pressed!')

    current_Key = str(key)

    if previous_key == "Key.shift" and current_Key == "Key.tab":
        exit()


def on_release(key):
    global current_Key
    print(f'Key {key} released')
    current_Key = None
    if key == Keyboard.Key.esc:
        return False


with Keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

Buyrun efenim, iyi çalışmalar.