Intermec 073292-001 User Manual

Page of 113
Chapter 4 — Theory of Operation 
While the keypad is idle, software drives all eight-column lines low and 
waits for an interrupt indicating a key press or release. Software then 
checks KEY_RET7:0 to identify the row in which a key changed state and 
debounces the key change for approximately 8 ms. If the key state is stable, 
software polls the keys by driving column lines KEY_DRV7:0 low one at a 
time until the key column is identified. The driver then drives all the 
column lines low again, re-enables the interrupt, looks up the key scan 
codes and sends it to the operating system. 
During Suspend, the eight-column drivelines are normally set to their Hi-
Z state. See “Wakeup Keys” on the next page for exceptions. 
No diodes are included in the keypad matrix for key chording support or 
multiple key rollover detection, so keypad usage is limited to the “sticky 
key” model, where modifier keys are pressed and released before pressing 
the modified key. This method does not preclude sensing two keys down 
simultaneously, but the driver software does currently not support this. 
 
Typical Keypad Scanning 
Wakeup Keys 
Since the keypad matrix rows are read through the FPGA, the keypad is 
not functional at boot or resume time until the FPGA is downloaded, 
initialized, and running. However, by routing one keypad row line 
(KEY_RET0) straight to PXA255 GPIO1 (as well as to the FPGA), the 
CK30 enables a small number of keys to serve as system wakeup keys.  
68 
CK30 Handheld Computer Service Manual