반응형
파이썬에서
def shell(command):
a = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
print(a)
shell(f"adb shell input text '안녕하세요'")
이렇게 날려보자.
백날 해봐도 한글 전송이 안된다 ............................
진짜 답 없는 비상상황이 발생한거다.
간단한 해결 방법이 있었으니 !
먼저 스마트폰에서 G보드를 설치하자.
설치 후
shell('adb shell ime list -a -s')
이렇게 하면 리스트가 나올텐데,
com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME
와 유사한게 있으면 해당 키보드로 변경해주자.
shell(f'adb shell ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME')
그 후
shell(f"adb shell input text 'gkdldy'")
이제 잘 전송 된다 .....
다만 여기서 문제점은 영타로 보내야만 한글로 전송이 된다는 점.
def reply(text):
reply 함수를 만들어 주자.
eng_table = {
'ㅂ': 'q', 'ㅃ': 'Q', 'ㅈ': 'w', 'ㅉ': 'W', 'ㄷ': 'e', 'ㄸ': 'E', 'ㄱ': 'r', 'ㄲ': 'R', 'ㅅ': 't', 'ㅆ': 'T', 'ㅛ': 'y', 'ㅕ': 'u', 'ㅑ': 'i', 'ㅐ': 'o', 'ㅒ': 'O', 'ㅔ': 'p', 'ㅖ': 'P',
'ㅁ': 'a', 'ㄴ': 's', 'ㅇ': 'd', 'ㄹ': 'f', 'ㅎ': 'g', 'ㅗ': 'h', 'ㅓ': 'j', 'ㅏ': 'k', 'ㅣ': 'l', 'ㅡ': 'z', 'ㅜ': 'x', 'ㅂ': 'c', 'ㅐ': 'v', 'ㅔ': 'b', 'ㅁ': 'n', 'ㄹ': 'm'
}
cho_table = ['r', 'R', 's', 'e', 'E', 'f', 'a', 'q', 'Q', 't', 'T', 'd', 'w', 'W', 'c', 'z', 'x', 'v', 'g']
jung_table = ['k', 'o', 'i', 'O', 'j', 'p', 'u', 'P', 'h', 'hk', 'ho', 'hl', 'y', 'n', 'nj', 'np', 'nl', 'b', 'm', 'ml', 'l']
jong_table = ['', 'r', 'R', 'rt', 's', 'sw', 'sg', 'e', 'f', 'fr', 'fa', 'fq', 'ft', 'fx', 'fv', 'fg', 'a', 'q', 'qt', 't', 'T', 'd', 'w', 'c', 'z', 'x', 'v', 'g']
노가다 그 자체
def decompose_char(c):
if '가' <= c <= '힣':
base_code = ord(c) - ord('가')
cho = base_code // (21 * 28)
jung = (base_code % (21 * 28)) // 28
jong = base_code % 28
return cho_table[cho], jung_table[jung], jong_table[jong]
else:
return c
reply 함수 안에 또 함수를 넣어주고,
result = []
for char in text:
if char == ' ':
result.append(' ')
else:
decomposed = decompose_char(char)
if isinstance(decomposed, tuple):
result.extend(decomposed)
else:
result.append(decomposed)
return ''.join(result)
위 코드로 마무리 해주면
reply('안녕하세요') 의 반환값은 dkssudgktpdy 가 된다.
usertxt = input('한글로 할말쓰세요')
txt = reply(usertxt)
shell(f"adb shell input text '{txt}'")
사용자가 안녕 이라고 입력하면, 자동으로 dkssud 으로 변환 후 adb 명령어를 보내기 때문에
실제로 스마트폰에서 입력되는것도 안녕 이라고 입력된다.
아 참, 네이버 카페도 개설 했고 프로그램 주문 제작도 받고 있다.
반응형
'프로그램 개발일지' 카테고리의 다른 글
[Python] 스마트 스토어 API 활용 네이버 커머스 API 3편 (1) | 2024.07.08 |
---|---|
[Python] 스마트 스토어 API 활용 네이버 커머스 API 2편 (0) | 2024.06.27 |
[Python] 파이썬 블루스택 제어하기 - 1 (2) | 2024.06.15 |
[Python] 스마트 스토어 API 활용 네이버 커머스 API 1편 (2) | 2024.06.15 |
[Python] 셀레니움으로 접속 안 되는 사이트 우회 방법 (1) | 2024.06.14 |