From: Steven Tamm Date: Sun, 22 Dec 2002 21:09:20 +0000 (+0000) Subject: * macterm.c (XTread_socket): Call KeyTranslate for control and X-Git-Tag: ttn-vms-21-2-B4~11943 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=402e4f8bd4bd37ba1eb1f3c30b44c0e5e95dcd9d;p=emacs.git * macterm.c (XTread_socket): Call KeyTranslate for control and meta to deal correctly shifted non-alpha characters, like C-S-5 being treated like C-%. Does not look for shift key to deal with masking off control-key with mac-reverse-ctrl-meta. --- diff --git a/src/ChangeLog b/src/ChangeLog index 6de8602e6f6..54772be0304 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2002-12-22 Steven Tamm + + * macterm.c (XTread_socket): Call KeyTranslate for control and + meta to deal correctly shifted non-alpha characters, like C-S-5 + being treated like C-%. Does not look for shift key to deal + with masking off control-key with mac-reverse-ctrl-meta. + 2002-12-21 Richard M. Stallman * xmenu.c (popup_get_selection): Now static. New arg DO_TIMERS. diff --git a/src/macterm.c b/src/macterm.c index d2299524362..0e97e6bbb30 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -12931,26 +12931,19 @@ XTread_socket (int sd, struct input_event *bufp, int numchars, int expected) bufp->code = 0xff00 | xkeysym; bufp->kind = NON_ASCII_KEYSTROKE_EVENT; } - else if (!NILP (Vmac_reverse_ctrl_meta) && (er.modifiers & controlKey)) - { - /* This is a special case to deal with converting from - a control character to non-control character */ - int new_modifiers = er.modifiers & ~controlKey; - int new_keycode = keycode | new_modifiers; - Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache); - unsigned long some_state = 0; - bufp->code = KeyTranslate (kchr_ptr, new_keycode, &some_state) & 0xff; - bufp->kind = ASCII_KEYSTROKE_EVENT; - } else { - if (er.modifiers & macMetaKey) + if (er.modifiers & (controlKey | + (NILP (Vmac_command_key_is_meta) ? optionKey + : cmdKey))) { /* This code comes from Keyboard Resource, Appendix C of IM - Text. This is necessary since shift is ignored in KCHR table translation when option or - command is pressed. */ - int new_modifiers = er.modifiers & 0xf600; + command is pressed. It also does not translate + correctly control-shift chars like C-% so mask off + shift here also */ + int new_modifiers = er.modifiers & 0xe600; /* mask off option and command */ int new_keycode = keycode | new_modifiers; Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache);