summaryrefslogtreecommitdiff
path: root/src/macterm.c
diff options
context:
space:
mode:
authorSteven Tamm <steventamm@mac.com>2002-12-22 21:09:20 +0000
committerSteven Tamm <steventamm@mac.com>2002-12-22 21:09:20 +0000
commit402e4f8bd4bd37ba1eb1f3c30b44c0e5e95dcd9d (patch)
treec5a89d3280f29c418f9a4ccd4230dbf782c54073 /src/macterm.c
parent58e104693b67370abe79eb940e7450575dd386dc (diff)
downloademacs-402e4f8bd4bd37ba1eb1f3c30b44c0e5e95dcd9d.tar.gz
* 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.
Diffstat (limited to 'src/macterm.c')
-rw-r--r--src/macterm.c21
1 files changed, 7 insertions, 14 deletions
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);