Revision 582798b5 hw/pxa2xx_keypad.c
b/hw/pxa2xx_keypad.c | ||
---|---|---|
83 | 83 |
qemu_irq irq; |
84 | 84 |
struct keymap *map; |
85 | 85 |
int pressed_cnt; |
86 |
int alt_code; |
|
86 | 87 |
|
87 | 88 |
uint32_t kpc; |
88 | 89 |
uint32_t kpdk; |
... | ... | |
116 | 117 |
int row, col, rel, assert_irq = 0; |
117 | 118 |
uint32_t val; |
118 | 119 |
|
120 |
if (keycode == 0xe0) { |
|
121 |
kp->alt_code = 1; |
|
122 |
return; |
|
123 |
} |
|
124 |
|
|
119 | 125 |
if(!(kp->kpc & KPC_ME)) /* skip if not enabled */ |
120 | 126 |
return; |
121 | 127 |
|
... | ... | |
125 | 131 |
|
126 | 132 |
rel = (keycode & 0x80) ? 1 : 0; /* key release from qemu */ |
127 | 133 |
keycode &= ~(0x80); /* strip qemu key release bit */ |
134 |
if (kp->alt_code) { |
|
135 |
keycode |= 0x80; |
|
136 |
kp->alt_code = 0; |
|
137 |
} |
|
128 | 138 |
|
129 | 139 |
row = kp->map[keycode].row; |
130 | 140 |
col = kp->map[keycode].column; |
Also available in: Unified diff