Mercurial > hg > xemacs-beta
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; |