한글로 listener 질문

파이썬 초보자입니다.

타이핑을 하면 한글이 써지는 프로그램을 만들고 있습니다.

예를 들어 'ㅇ아안'이며 리스트에서 0과 1 요소를 제거해서 '안'의 결과만 뿌리게 하려고 합니다.

list assignment index out of range 에러가 뜹니다.

그리고 space바로 쓰지 않고 입력하는 방법이 있을까요?

고수분들의 조언을 기다립니다.

import sys 
import os 
sys.path.append(os.path.abspath("SO_site-packages")) 
from pynput import keyboard 
from hangul_utils import join_jamos 
# 자음-초성/종성 
cons = {'r':'ㄱ', 'R':'ㄲ', 's':'ㄴ', 'e':'ㄷ', 'E':'ㄸ', 'f':'ㄹ', 'a':'ㅁ', 'q':'ㅂ', 'Q':'ㅃ', 't':'ㅅ', 'T':'ㅆ', 
         'd':'ㅇ', 'w':'ㅈ', 'W':'ㅉ', 'c':'ㅊ', 'z':'ㅋ', 'x':'ㅌ', 'v':'ㅍ', 'g':'ㅎ'} 
# 모음-중성 
vowels = {'k':'ㅏ', 'o':'ㅐ', 'i':'ㅑ', 'O':'ㅒ', 'j':'ㅓ', 'p':'ㅔ', 'u':'ㅕ', 'P':'ㅖ', 'h':'ㅗ', 'hk':'ㅘ', 'ho':'ㅙ', 'hl':'ㅚ', 
         'y':'ㅛ', 'n':'ㅜ', 'nj':'ㅝ', 'np':'ㅞ', 'nl':'ㅟ', 'b':'ㅠ',  'm':'ㅡ', 'ml':'ㅢ', 'l':'ㅣ'} 
# 자음-종성 
cons_double = {'rt':'ㄳ', 'sw':'ㄵ', 'sg':'ㄶ', 'fr':'ㄺ', 'fa':'ㄻ', 'fq':'ㄼ', 'ft':'ㄽ', 'fx':'ㄾ', 'fv':'ㄿ', 'fg':'ㅀ', 'qt':'ㅄ'} 
def engkor(text): 
  result = ''   # 영 > 한 변환 결과 
  # 1. 해당 글자가 자음인지 모음인지 확인 
  vc = '' 
  for t in text: 
      if t in cons : 
          vc+='c' 
      elif t in vowels: 
          vc+='v' 
      else: 
          vc+='!' 

  # cvv → fVV / cv → fv / cc → dd 
  vc = vc.replace('cvv', 'fVV').replace('cv', 'fv').replace('cc', 'dd') 

  # 2. 자음 / 모음 / 두글자 자음 에서 검색 
  i = 0 
  while i < len(text): 
      v = vc[i] 
      t = text[i] 
      j = 1 
      # 한글일 경우 
      try: 
          if v == 'f' or v == 'c':   # 초성(f) & 자음(c) = 자음 
              result+=cons[t] 
          elif v == 'V':   # 더블 모음 
              result+=vowels[text[i:i+2]] 
              j+=1 
          elif v == 'v':   # 모음 
              result+=vowels[t] 
          elif v == 'd':   # 더블 자음 
              result+=cons_double[text[i:i+2]] 
              j+=1 
          else: 
              result+=t 
      # 한글이 아닐 경우 
      except: 
          if v in cons: 
              result+=cons[t] 
          elif v in vowels: 
              result+=vowels[t] 
          else: 
              result+=t 
      i += j 
  return join_jamos(result) 
a = [] 
def on_press(key): 
  try: 
      a.append(key.char) 
      b = len(''.join(a)) 
      print(engkor(''.join(a)), end='') 
  except AttributeError: 
      for i in range(0, b-1): 
          del a[i] 
listener = keyboard.Listener(on_press=on_press) 
listener.start() # 리스너 시작 
listener.join() 

mono 367

M 2021년 10월 22일 6:22 오후

해결 되셨나요? 저도 이문제 때문에 골치가 아프네용 - ohinsu134님, 2022년 6월 2일 12:17 오전 추천 , 대댓글
목록으로