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 |
268 |
return MOUSE_FLAG_BUTTON3; |
return MOUSE_FLAG_BUTTON3; |
269 |
case Button3: /* right */ |
case Button3: /* right */ |
270 |
return MOUSE_FLAG_BUTTON2; |
return MOUSE_FLAG_BUTTON2; |
271 |
|
case Button4: /* wheel up */ |
272 |
|
return MOUSE_FLAG_BUTTON4; |
273 |
|
case Button5: /* wheel down */ |
274 |
|
return MOUSE_FLAG_BUTTON5; |
275 |
} |
} |
276 |
|
|
277 |
return 0; |
return 0; |