드라이버는 시작시에 자동으로 Xwindow 의 키정의를 읽어온다. 사용중에 키정의를 다시 읽어들이려면 Function-apostrophe 조합을 누르면 된다. 타이밍 설정파일은 /etc/pktrc 이다. 드라이버는 이 파일이 제위치에 없는 경우 자체 설정대로 동작한다. 또한 아무 옵션없이 pktxwin 을 실행할 경우 irda 포트를 /dev/ttyS1 으로 가정하고 동작을 개시한다. 만일 다른 포트, 다른 설정파일로 지정하려면 pktxwin -d /dev/ttyS2 -c /etc/pktrc 와 같은 식으로 적어준다.
일정시간 아무 입력이 없으면 자동으로 드라이버를 종료하는 auto off 기능을 가지고 있다. pktrc 의 설정파일에서 이 시간을 조정할 수 있다. 무선키보드상에서 Function-BkSp 조합을 누르면 즉시 드라이버를 종료하게 된다.
포켓탑 키보드상의 어떤 키를 누른 채 키보드를 치워버리는 경우 시스템쪽은 키를 뗐다는 신호를 받지 못하게 되므로 키눌림이 계속 유지되고 있다고 판단하고는 그 키를 반복출력 하게된다. 이런 낭패스러운 사태를 방지하기 위해 드라이버는 이 경우 254 회만 반복출력후 자동종료된다.
IrDA 프로토콜은 쌍방향 프로토콜로서 서로 상대방 기기를 상호확인하는 절차를 마친 후에 비로소 전하고자 하는 내용을 전송한다. PKT 가 비록 IrDA 하드웨어 규격을 만족하는 기기로서 IrDA 프레임을 전송하기는 하나, 수신능력이 없기 때문에 쌍방향 프로토콜에 기반한 IrDA 상위 프로토콜, 가령 irtty 나 ircomm 같은 것들은 사용할 수 없다. 따라서 키보드 드라이버는 프로토콜 스택을 통하기 전의 Raw IrDA 신호를 그대로 잡아 해석해야 한다. /dev/ttySX 디바이스를 열어 입력을 읽으면 된다. 이때 커널에 irtty 나 irda 모듈등이 떠있으면 이들이 먼저 입력신호를 읽어가버리므로 필히 드라이버 실행전에 제거하도록 한다.
하드웨어에 대해 제조사에서 내놓은 공식적인 자료는 아직 없다. 다음은 필자가 직접 알아낸 포켓탑 무선키보드의 키코드로서, 키가 눌릴 때(make) 한 바이트 값이 방출된다. 키가 떼어질 때(break) 발생하는 값은 눌릴 때 값의 최상위 비트(msb)를 1 로 한 값이다. 키가 떼어질 때는 break 값이 한번 반복전송된다.
Key | Key Code | Key | Key Code | Key | Key Code |
Tab | 0x69 | G | 0x27 | Up | 0x53 |
Q | 0x01 | H | 0x2f | Shift-R | 0x7d |
W | 0x09 | J | 0x32 | Ctrl-L | 0x6d |
E | 0x11 | K | 0x3a | Punct | 0x76 |
R | 0x19 | L | 0x42 | Cmd | 0x75 |
T | 0x21 | semicln | 0x4a | NumLk | 0x6e |
Y | 0x29 | apostrophe | 0x52 | Alt | 0x66 |
U | 0x31 | Enter | 0x5a | Space-L | 0x2b |
I | 0x39 | Shift-L | 0x65 | Space-R | 0x34 |
O | 0x41 | Z | 0x03 | Function | 0x3c |
P | 0x49 | X | 0x0b | Left | 0x44 |
minus | 0x51 | C | 0x13 | Down | 0x4c |
BkSp | 0x59 | V | 0x1b | Right | 0x54 |
CapLk | 0x77 | B | 0x23 | Del | 0x5b |
S | 0x0f | N | 0x33 | Date | 0x40 |
D | 0x17 | M | 0x3b | Address | 0x48 |
A | 0x07 | comma | 0x43 | ToDo | 0x50 |
F | 0x1f | period | 0x4b | Memo | 0x58 |