450 |
return ksname; |
return ksname; |
451 |
} |
} |
452 |
|
|
453 |
|
static BOOL |
454 |
|
is_modifier(uint8 scancode) |
455 |
|
{ |
456 |
|
switch (scancode) |
457 |
|
{ |
458 |
|
case SCANCODE_CHAR_LSHIFT: |
459 |
|
case SCANCODE_CHAR_RSHIFT: |
460 |
|
case SCANCODE_CHAR_LCTRL: |
461 |
|
case SCANCODE_CHAR_RCTRL: |
462 |
|
case SCANCODE_CHAR_LALT: |
463 |
|
case SCANCODE_CHAR_RALT: |
464 |
|
case SCANCODE_CHAR_LWIN: |
465 |
|
case SCANCODE_CHAR_RWIN: |
466 |
|
case SCANCODE_CHAR_NUMLOCK: |
467 |
|
return True; |
468 |
|
default: |
469 |
|
break; |
470 |
|
} |
471 |
|
return False; |
472 |
|
} |
473 |
|
|
474 |
void |
void |
475 |
save_remote_modifiers() |
save_remote_modifiers(uint8 scancode) |
476 |
{ |
{ |
477 |
|
if (is_modifier(scancode)) |
478 |
|
return; |
479 |
|
|
480 |
saved_remote_modifier_state = remote_modifier_state; |
saved_remote_modifier_state = remote_modifier_state; |
481 |
} |
} |
482 |
|
|
483 |
void |
void |
484 |
restore_remote_modifiers(uint32 ev_time) |
restore_remote_modifiers(uint32 ev_time, uint8 scancode) |
485 |
{ |
{ |
486 |
key_translation dummy; |
key_translation dummy; |
487 |
|
|
488 |
|
if (is_modifier(scancode)) |
489 |
|
return; |
490 |
|
|
491 |
dummy.scancode = 0; |
dummy.scancode = 0; |
492 |
dummy.modifiers = saved_remote_modifier_state; |
dummy.modifiers = saved_remote_modifier_state; |
493 |
ensure_remote_modifiers(ev_time, dummy); |
ensure_remote_modifiers(ev_time, dummy); |
497 |
ensure_remote_modifiers(uint32 ev_time, key_translation tr) |
ensure_remote_modifiers(uint32 ev_time, key_translation tr) |
498 |
{ |
{ |
499 |
/* If this key is a modifier, do nothing */ |
/* If this key is a modifier, do nothing */ |
500 |
switch (tr.scancode) |
if (is_modifier(tr.scancode)) |
501 |
{ |
return; |
|
case SCANCODE_CHAR_LSHIFT: |
|
|
case SCANCODE_CHAR_RSHIFT: |
|
|
case SCANCODE_CHAR_LCTRL: |
|
|
case SCANCODE_CHAR_RCTRL: |
|
|
case SCANCODE_CHAR_LALT: |
|
|
case SCANCODE_CHAR_RALT: |
|
|
case SCANCODE_CHAR_LWIN: |
|
|
case SCANCODE_CHAR_RWIN: |
|
|
case SCANCODE_CHAR_NUMLOCK: |
|
|
return; |
|
|
default: |
|
|
break; |
|
|
} |
|
502 |
|
|
503 |
/* NumLock */ |
/* NumLock */ |
504 |
if (MASK_HAS_BITS(tr.modifiers, MapNumLockMask) |
if (MASK_HAS_BITS(tr.modifiers, MapNumLockMask) |