2017-09-18 2 views
0

Je souhaite détecter les séquences de touches dans le code python. J'essaie déjà beaucoup de méthodes avec différentes bibliothèques mais toutes ne peuvent pas détecter l'entrée du clavier UTF et ne détectent que Ascii. Par exemple, je veux détecter les caractères Unicode comme ("د") ou ("ۼ") si un utilisateur a tapé ces clés. Cela signifie que si j'appuie sur Alt + Shift, je change d'entrée pour une autre langue qui utilise des caractères Unicode et je veux les détecter.Entrée de clavier en tant que caractères Unicode en python

IMPORTANT: J'ai besoin de la version Windows.

Il doit détecter les frappes même sans se concentrer sur le terminal.

Supposons cet exemple simple:

from pynput import keyboard 
def on_press(key): 
    try: 
     print(key.char) 
    except AttributeError: 
     print(key) 

if __name__ == "__main__": 
    with keyboard.Listener(on_press=on_press) as listener: 
      listener.join() 

Répondre

0

Voici le code qui renvoie le nombre de Unicode. Il ne peut pas détecter la langue actuelle et affiche toujours l'ancien mais seulement dans la fenêtre de cmd elle-même et si vous vous concentrez sur n'importe quelle autre fenêtre il montre parfaitement le numéro courant d'Unicode.

from pynput import keyboard 

def on_press(key): 
    if key == keyboard.Key.esc: 
     listener.stop() 
    else: 
     print(ord(getattr(key, 'char', '0'))) 

controller = keyboard.Controller() 
with keyboard.Listener(
     on_press=on_press) as listener: 
    listener.join() 
0

Beaucoup dépend de la méthode du système d'exploitation et à l'entrée du clavier, mais cela fonctionne sur mon système Ubuntu; J'ai testé avec quelques caractères espagnols.

import sys 
import tty 
import termios 

def getch(): 
    fd = sys.stdin.fileno() 
    old_settings = termios.tcgetattr(fd) 
    try: 
     tty.setraw(fd) 
     ch = sys.stdin.read(1) 
    finally: 
     termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) 
    return ch 

x = getch() 
print("You typed: ", x, " which is Unicode ", ord(x)) 

est ici la même combinaison de touches en anglais par rapport espagnol:

$ python3 unicode-keystroke.py 
You typed: : which is Unicode 58 

$ python3 unicode-keystroke.py 
You typed: Ñ which is Unicode 209 

La fonction getch est de ActiveState.

+0

Merci, mais j'ai besoin d'un code windows. Dans les fenêtres 'tty' et' termios' ne fonctionne pas. –