본문 바로가기

개발 Note/UI Framework 개발하기

핸드폰에서 key event 처리 - 연속되는 키 입력

반응형


핸드폰을 사용할때 우리는 자주 쓰는 메뉴는 머리속으로 기억하게 되고,
이를 연속으로 입력해서 하고자 하는 어플리케이션 단시간에 띄우게 된다.

예를 들면, 메뉴 -> 5, 5,1 을 누르면 즐겨하는 게임이 뜬다. Bomb link?? ^^;;


S/W 내부에서는 이러한 일이 가능한 이유는 매우 간단한데 key를 받아서 처리해야 하는 대상의 결정이 key가 눌리는 시점에서 판단하는 것이 아니라, key event를 Event Queue에서 꺼내서 가장 top에 있는 녀석에게  처리하라고 던져주기 때문이다.

그 말인 즉, 5,5,1 이 순차적으로 발생하는 것은 특별한 기능이 아니라 단지 process가 느려서 지연에 의해 이렇게 보이는 것 뿐이다는 것이다.

Multi process(task) 환경에서는 좀 다를 수 가 있다.
일단 2개이상의 어플리케이션이 프로세스로 떠있을때, H/W interrupt에 의해 key event가 발생하면,
key event를 어떤 task의 Queue에 넣을지 결정해야 한다.
대부분 현재 top에 떠있는 task의 Queue에 넣게 되는데, 만약 Queue에 넣었으나 application 의 order가 변경되어 다른 어플이 위로 올라오게 되면, 이전에 떠있던 application은 key 처리를 않고 무시하면된다.

대신 이런 환경에서는 아까 예기 했던 5,5,1 같은 빠른 입력이 application 여러개를 거쳐가는 경우에는 불가능 할 수도 있다.



다른 관점에서 살펴보면,,
과연 연속적인 키처리가 과연 유용할까?  하는 부분에서 고민해본다.
application loading이 늦어져서 key 입력이 5,5,1 로 끝나는 것이아니라. end key, 5,4,1, menu 키 .. 이런식으로 복잡하게 눌렸고 이를 다 처리하려 한다면,,  심한 짜증감을 불러이르킬 것이다.

그래서 주로 key event의 개수를 재한한다. 한 3~5개 정도로?  (개인적으로는 2개면 충분하다고 생각하지만.)

이렇게 재한을 했을경우 또다른 문제가 발생할 수가 있는데,, 중간에 key가 사라지고 마지막 키만 남을 수도 있다.
무슨 말이냐 하면 전화를 걸려고 010-5555-2324 를 눌렀다.
근데 아주 빨리 눌러서 010,5,52,24  이렇게 중간 중간에 키가 빠질 수도 있다는 의미이다.


지금까지 전 불편함을 못느낀 기능이지만, 이런 문제들도 가끔 나옵니다.