마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

한글 keycode 질문입니다.

0 추천
안드로이드 keyevent (keycode)에 관련되어 질문드립니다.
uiautomator test중 uiobject의 settext가 한글 string을 입력하지 못한다는 것을 알게됬습니다. 소스를 파고 들어보니

KeyCharacterMap kcm;
kcm = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD);

KeyEvent[] events = kcm.getEvents("세종대왕빡침".toCharArray());
if(events != null) {
int len$ = events.length;

for(int i$ = 0; i$ < len$; ++i$) {
KeyEvent event2 = events[i$];
//do some work with event2.getKeyCode()
//i.e. mDevice.pressKeyCode(event2.getKeyCode);
}
}

events 자체가 null입니다. 한마디로 KeyCharaterMap에서 가져올수없는거같은데

그래서 찾아보니 hangul jamo 에 보면 ㄱ이 1100 인데 막상 그것도 안먹히고...(mDevice.pressKeyCode()에서 안먹힘..)

일단 전 안드로이드가 왜 unicode를 안따라가고 자기들만의 키코드를 새로 구현했는지가 의문이네요. 단지 배열을 바꾸기 위해서라면 (키코드 65는 Gmail이 열리던데 이런식으로 자주쓰는인텐트대용의 키코드를 앞쪽에배치하려는 것이라면) 정말 화가날거같습니다. 참을수가 없군요....

글이 장황했네요. 요약드리겠습니다.
1. uiautomator의 UiDevice.pressKeyCode()를 통해 한글을 입력하는 방법은 무엇인가요?.
일반 영어는 됨. 하지만 한글은 안됨.
2. 구글은 왜 키코드배열을 unicode를 사용하지 않는건가요?
mmccio12 (120 포인트) 님이 2016년 1월 21일 질문

1개의 답변

0 추천
제대로 알아보시고 화를 내시기 바랍니다.

키보드에서 보내주는 코드는 KeyEvent 클래스에 정의되어 있습니다.

http://developer.android.com/reference/android/view/KeyEvent.html

한글키코드가 없는 것은, 그럴 필요가 없기 때문입니다.

왜 필요가 없는지 궁금하면 android softkeyboard 구조에 대해 공부하시기 바랍니다.
익명사용자 님이 2016년 1월 21일 답변
아닙니다. 제 요약을 다시 한번 정독하시기 바랍니다.
알아본결과 KeyCharacterMap에서 영문자와 기본문자를 제외한 문자는 정의되어있지않습니다. 제가 궁금한건 왜 한글이 없느냐가 아니라 왜 65가 A인 범용적인 ASCII 크게 unicode를 따르지 않았느냐 입니다.
화가 나는건 2번의 경우입니다. 1번의 경우에 대한 답으로는 주신 링크는 적절하지 않습니다. keycode로 한글 문자열을 입력하시는 방법을 아시나요? 모르시면 답변 안주셔도 괜찮습니다. 저는 화를 내지말라는 말을 들으려고 질문한 것이 아닙니다.
111111111111111111111111111111
저는 1번 항목에만 답을 했습니다.

2번은 대답할 필요를 못느껴서 안했는데, 왜 unicode를 그대로 사용하지 않았는지는 구글만 알겠지요.
대략 추정해보면 KEYCODE_HOME이나 KEYCODE_BACK 등은 unicode로 나타낼 수 없으므로 따로 정의한 것으로 보입니다.
...