레오폴드 키패드 때문에 해본 Numlock연동에 관한 단상

자게를 읽어보니 레오폴드에서 키패드에 넘락을 연동안되게 하려고 편법을 썼다가 까이고 있군요.

사실 기본적으로는 넘락은 OS 즉 본체에서 관장하기때문에 키보드/키패드와는 전혀 관계가 없습니다.

고로 모든 키보드의 넘락연동은 당연한거고 사실 연동이 아니라 OS의 상태지 키보드의 상태가 아닙니다.

즉 Numlock유무에 따라 키보드가 해주는 일은 LED불켜주고 꺼주는 일만 하는거죠.


한분이 써주신것 처럼 키패드에서는 키에 따른 동일한 스캔코드만 날려줍니다.

물론 리얼포스나 일부 커스텀 같이 다른 스캔코드를 날리는것때문에 넘락 연동이 문제가 되는겁니다.

이걸 왜 넘락이랑 연동했는지 모르겠습니다. 키보드 자체의 기능이면 넘락말고 컴터랑 관계없는 키보드내부의 스테이트로 관리해야지...

아이콘의 FN토글 레이어가 정확하다고 생각합니다. 

잘못은 이런 키보드에 있지 키패드는 전혀 잘못이 없습니다. ㅎㅎㅎ


사실 나이스하게 해결할 방법이 있긴합니다.


1. 키패드에서는 OS에서 Numlock상태인지 아닌지 정보를 알고 있습니다. (OS가 날려줍니다.)

2. 키패드에서는 이 Nnmlock상태는 정확히 트레킹하면서 기본적으로 항상 Numlock스캔코드를 보내서 OS의 Numlock을 off 상태로 유지합니다. 즉 Numlock이건 아니건 OS의 상태를 항상 Numlock/off로 유지합니다.

3. 키패드가 눌렸을때 만일 Numlock상태였다면 스캔코드를 "Numlock", "3" "Numlock"을 연속으로 보내버립니다. 그럼 OS의 상태가 3입력을 받는 순간만 Numlock/On상태가 되었다 다시 Off 상태가 됩니다.

  반대의 경우에는 "3"만 보내면 됩니다.

4. 결론적으로 키패드에서 Numlock 상태를 관리하고 OS는 항상 Numlock off상태인겁니다.


5. 아이콘 리올포스외 다른 키보들과 연동사용시에도 문제가 없습니다.

6. 다만 OS에서 3lock스테이트를 보여주는 프로그램 (로지텍 setpoint나 놋북의 UI)에서는 Numlock 스테이트가 항상 Off로 유지된다는 문제가 있긴합니다.


음... 할일이 하나 더 생겼군요.. ㅋ

이전 댓글 8
Limmy 2013-03-31 10:49
필코 넘패드가 비슷한 방식으로 동작합니다. ^^
리쿠/안사염 2013-03-31 10:59
한가지 수정하자면 항상 Off로 유지하는게 아니라 넘락의 스테이트를 키패드 자체가 가지고 있게 하고 OS의 상태에 따라서 넘락을 같이/빼고 보내주는 방법을 써야 겠네요. 
Limmy 2013-03-31 11:43
자연주의님의 지워진 댓글에 댓글을 남깁니다. 한참 답글을 작성하고 있었는데 지워져버렸네요. Filco는 자사의 넘패드가 OS의 Numlock 상태와 독립적으로 동작한다고 광고하고 있습니다. 정작 사용해보지 않으시고(어떻게 동작하는지 잘 알지 못하시고) "넘락키의 작동에 관련하여 해당 사항은 전혀 없다"고 하셨는데 그렇게 말씀하실 근거는 부족한 것 같네요. 독립된 Numlock을 가지고 있다고 광고한 필코 키패드의 구현 방식은 리쿠님이 묘사하신 방법과 비슷합니다. 저도 한참 사용하다가 팔아먹어서 정확하게 묘사하기는 어렵지만, 예를 들어 7(Home)을 누르면 1. 키패드의 Numlock LED가 들어오지 않았을 때는 7(Home)의 스캔코드가 찍히고 2. 키패드의 LED에 불이 들어왔을때는 Numlock > 7(Home) > Numlock 이렇게 찍힙니다. OS의 Numlock 상태에 따라서 동작 방식이 다른지는 따로 테스트해본 기억이 없어서 뭐라 말씀드리기는 어렵겠네요. 아마도 제대로 구현했다면 리쿠님이 묘사한대로 구현하지 않았을까 추측합니다. 한 가지 특이한 점은 "="키가 있는데 이게 Alt+숫자 조합으로 입력이 되었던 것으로 기억하네요. 그리고 Esc,Tab 등이 있었던 행이 원래 넘패드부분과 붙어있어서 살짝 불편했었습니다. 00키는 뭐 그다지 불편하지 않던데요. ^^
미친엘프 2013-03-31 12:01
오오 역시 리쿠 형님 쫭입니다. ㅎㅎ 추천을 누르려다가 추천이 없어 신고를 누를 뻔... (?!)
리쿠/안사염 2013-03-31 13:27
자연주의님 말씀듣고 구현해볼까해서 찾아봤는데데표준 스캔코드에 00 이나 000 은 못찾았습니다.  "0"을 복수번 전송하는게 유일한방법이지 않을까 싶은데 혹시 "000"스캔 코드 알고 계신분 제보 부탁드립니다. 
리쿠/안사염 2013-03-31 13:31
필코가 그렇게 동작하고 있었군요 ㅎㅎ 역시 사람 생각은 다 거기서 거긴가요 ㅎㅎ
삼만리 2013-03-31 13:40
숫자열을 텐키패드로 만들어놓고 넘락비연동이라고 광고를 하다니..   너무 실망스럽습니다...
NINDAJ 2013-03-31 22:14
이건 특허가 있다는군요 텐키패드의 코드를 비연동으로 쓰면 불법이되는거죠
← 자유게시판 목록으로