2017-09-18 3 views
0

파이썬 코드에서 키 스트로크를 감지하고 싶습니다. 나는 이미 다른 라이브러리를 가지고 많은 메소드를 시도하지만 UTF 키보드 입력을 감지하지 못하고 오직 Ascii 만 탐지합니다. 예를 들어, 사용자가이 키를 입력하면 ("د") 또는 "ۼ"와 같은 유니 코드 문자를 감지하려고합니다. 즉, Alt + Shift를 누르면 유니 코드 문자를 사용하는 다른 언어로 입력이 변경되고이를 검색하려고합니다.파이썬에서 유니 코드 문자로 키보드 입력

중요 : Windows 버전이 필요합니다.

터미널에 집중하지 않아도 키 입력을 감지해야합니다.

이 간단한 예를 가정 :

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() 

답변

0

다음은 유니 코드의 수를 반환하는 코드입니다. 현재 언어를 감지 할 수 없으며 항상 이전 창을 표시하지만 cmd 창 자체에서만 표시되며 다른 창에 초점을 맞추면 현재 유니 코드 번호가 완벽하게 표시됩니다.

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

많은 운영 체제 및 키보드 입력 방법에 따라 다르지만이 내 우분투 시스템에서 작동; 나는 몇몇 스페인어 문자로 테스트를했다.

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)) 

여기에 스페인어 대 영어로 같은 키 스트로크 (keystroke)의 :

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

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

getch 함수는 ActiveState에서입니다.

+0

감사하지만 Windows 코드가 필요합니다. 'tty'와'termios'는 작동하지 않습니다. –

관련 문제