comparison src/keymap.c @ 5858:36934833b4f3

#'event-matches-key-specifier-p, check keysyms and modifiers too on TTY src/ChangeLog addition: 2015-03-14 Aidan Kehoe <kehoea@parhasard.net> * keymap.c (event_matches_key_specifier_p): If on a TTY, check the keysym and modifiers too, before converting both events to characters and comparing them. We may well have seen a function key (by means of function-key-map) and it is actively unhelpful for (event-matches-key-specifier-p (character-to-event 'f1) 'f1) to given nil when the current device is a TTY.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 14 Mar 2015 00:07:50 +0000
parents 236e4afc565d
children
comparison
equal deleted inserted replaced
5857:6ec4964c1687 5858:36934833b4f3
1580 event2 = Fcopy_event (key_specifier, Qnil); 1580 event2 = Fcopy_event (key_specifier, Qnil);
1581 else 1581 else
1582 event2 = Fcharacter_to_event (key_specifier, Qnil, Qnil, Qnil); 1582 event2 = Fcharacter_to_event (key_specifier, Qnil, Qnil, Qnil);
1583 if (XEVENT (event2)->event_type != key_press_event) 1583 if (XEVENT (event2)->event_type != key_press_event)
1584 retval = 0; 1584 retval = 0;
1585 else if (EQ (XEVENT_KEY_KEYSYM (event), XEVENT_KEY_KEYSYM (event2)) &&
1586 XEVENT_KEY_MODIFIERS (event) == XEVENT_KEY_MODIFIERS (event2))
1587 retval = 1;
1585 else if (CONSOLE_TTY_P (XCONSOLE (XEVENT_CHANNEL (event)))) 1588 else if (CONSOLE_TTY_P (XCONSOLE (XEVENT_CHANNEL (event))))
1586 { 1589 {
1587 int ch1, ch2; 1590 int ch1, ch2;
1588 1591
1589 ch1 = event_to_character (event, 0, 0); 1592 ch1 = event_to_character (event, 0, 0);
1590 ch2 = event_to_character (event2, 0, 0); 1593 ch2 = event_to_character (event2, 0, 0);
1591 retval = (ch1 >= 0 && ch2 >= 0 && ch1 == ch2); 1594 retval = (ch1 >= 0 && ch2 >= 0 && ch1 == ch2);
1592 } 1595 }
1593 else if (EQ (XEVENT_KEY_KEYSYM (event), XEVENT_KEY_KEYSYM (event2)) &&
1594 XEVENT_KEY_MODIFIERS (event) == XEVENT_KEY_MODIFIERS (event2))
1595 retval = 1;
1596 else 1596 else
1597 retval = 0; 1597 retval = 0;
1598 Fdeallocate_event (event2); 1598 Fdeallocate_event (event2);
1599 UNGCPRO; 1599 UNGCPRO;
1600 return retval; 1600 return retval;