163 |
MASK_ADD_BITS(modifiers, MapNumLockMask); |
MASK_ADD_BITS(modifiers, MapNumLockMask); |
164 |
} |
} |
165 |
|
|
166 |
|
if (strstr(line_rest, "localstate")) |
167 |
|
{ |
168 |
|
MASK_ADD_BITS(modifiers, MapLocalStateMask); |
169 |
|
} |
170 |
|
|
171 |
add_to_keymap(keyname, scancode, modifiers, mapname); |
add_to_keymap(keyname, scancode, modifiers, mapname); |
172 |
|
|
173 |
if (strstr(line_rest, "addupper")) |
if (strstr(line_rest, "addupper")) |
216 |
|
|
217 |
|
|
218 |
key_translation |
key_translation |
219 |
xkeymap_translate_key(KeySym keysym, unsigned int keycode) |
xkeymap_translate_key(KeySym keysym, unsigned int keycode, unsigned int state) |
220 |
{ |
{ |
221 |
key_translation tr = { 0, 0 }; |
key_translation tr = { 0, 0 }; |
222 |
|
|
223 |
tr = keymap[keysym & KEYMAP_MASK]; |
tr = keymap[keysym & KEYMAP_MASK]; |
224 |
|
|
225 |
|
if (tr.modifiers & MapLocalStateMask) |
226 |
|
{ |
227 |
|
/* The modifiers to send for this key should be obtained |
228 |
|
from the local state. Currently, only shift is implemented. */ |
229 |
|
if (state & ShiftMask) |
230 |
|
{ |
231 |
|
tr.modifiers = MapLeftShiftMask; |
232 |
|
} |
233 |
|
} |
234 |
|
|
235 |
if (tr.scancode != 0) |
if (tr.scancode != 0) |
236 |
{ |
{ |
237 |
DEBUG_KBD |
DEBUG_KBD |