Mercurial > hg > xemacs-beta
comparison src/keymap.c @ 4780:2fd201d73a92
Call character_to_event on characters received from XIM, event-Xt.c
src/ChangeLog addition:
2009-12-17 Aidan Kehoe <kehoea@parhasard.net>
* events.h (character_to_event_meta_behavior): New enumeration,
describing what character_to_event should do with characters in
the range ?\x80-?\xFF, and passed as the third argument to
character_to_event instead of the binary use_console_meta_flag.
* events.c (character_to_event, Fcharacter_to_event):
* event-unixoid.c (read_event_from_tty_or_stream_desc):
* event-stream.c (maybe_kbd_translate, maybe_kbd_translate):
* event-msw.c (mswindows_need_event):
Use the new enumeration.
* event-Xt.c (x_to_emacs_keysym):
Call character_to_event when we receive XLookupChars events,
passing latin_1_maps_to_itself as the meta_behavior flag,
addressing the problem FKtPp sees in 87bpi9mwpu.fsf@yahoo.com.cn
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Thu, 17 Dec 2009 17:51:38 +0000 |
parents | a2af1ff1761f |
children | a98ca4640147 e0db3c197671 |
comparison
equal
deleted
inserted
replaced
4779:fd98353950a4 | 4780:2fd201d73a92 |
---|---|
1101 { | 1101 { |
1102 Lisp_Object event = Fmake_event (Qnil, Qnil); | 1102 Lisp_Object event = Fmake_event (Qnil, Qnil); |
1103 struct gcpro gcpro1; | 1103 struct gcpro gcpro1; |
1104 GCPRO1 (event); | 1104 GCPRO1 (event); |
1105 character_to_event (XCHAR (idx), XEVENT (event), | 1105 character_to_event (XCHAR (idx), XEVENT (event), |
1106 XCONSOLE (Vselected_console), 0, 0); | 1106 XCONSOLE (Vselected_console), |
1107 high_bit_is_meta, 0); | |
1107 indirection.keysym = XEVENT_KEY_KEYSYM (event); | 1108 indirection.keysym = XEVENT_KEY_KEYSYM (event); |
1108 indirection.modifiers = XEVENT_KEY_MODIFIERS (event); | 1109 indirection.modifiers = XEVENT_KEY_MODIFIERS (event); |
1109 UNGCPRO; | 1110 UNGCPRO; |
1110 } | 1111 } |
1111 else if (CONSP (idx)) | 1112 else if (CONSP (idx)) |
1527 { | 1528 { |
1528 Lisp_Object event = Fmake_event (Qnil, Qnil); | 1529 Lisp_Object event = Fmake_event (Qnil, Qnil); |
1529 struct gcpro gcpro1; | 1530 struct gcpro gcpro1; |
1530 GCPRO1 (event); | 1531 GCPRO1 (event); |
1531 character_to_event (XCHAR_OR_CHAR_INT (spec), XEVENT (event), | 1532 character_to_event (XCHAR_OR_CHAR_INT (spec), XEVENT (event), |
1532 XCONSOLE (Vselected_console), 0, 0); | 1533 XCONSOLE (Vselected_console), high_bit_is_meta, 0); |
1533 SET_KEY_DATA_KEYSYM (returned_value, XEVENT_KEY_KEYSYM (event)); | 1534 SET_KEY_DATA_KEYSYM (returned_value, XEVENT_KEY_KEYSYM (event)); |
1534 SET_KEY_DATA_MODIFIERS (returned_value, | 1535 SET_KEY_DATA_MODIFIERS (returned_value, |
1535 XEVENT_KEY_MODIFIERS (event)); | 1536 XEVENT_KEY_MODIFIERS (event)); |
1536 UNGCPRO; | 1537 UNGCPRO; |
1537 } | 1538 } |
3524 if (!EVENTP (key)) | 3525 if (!EVENTP (key)) |
3525 { | 3526 { |
3526 Lisp_Object event = Fmake_event (Qnil, Qnil); | 3527 Lisp_Object event = Fmake_event (Qnil, Qnil); |
3527 CHECK_CHAR_COERCE_INT (key); | 3528 CHECK_CHAR_COERCE_INT (key); |
3528 character_to_event (XCHAR (key), XEVENT (event), | 3529 character_to_event (XCHAR (key), XEVENT (event), |
3529 XCONSOLE (Vselected_console), 0, 1); | 3530 XCONSOLE (Vselected_console), |
3531 high_bit_is_meta, 1); | |
3530 format_event_object (buf, event, 1); | 3532 format_event_object (buf, event, 1); |
3531 Fdeallocate_event (event); | 3533 Fdeallocate_event (event); |
3532 } | 3534 } |
3533 else | 3535 else |
3534 format_event_object (buf, key, 1); | 3536 format_event_object (buf, key, 1); |