Commit 7970610d authored by Alan Third's avatar Alan Third

Fix error with fn key in NS port (bug#44533)

* src/nsterm.m ([EmacsView keyDown:]): Move the correction for fn key
handling to before the modifiers are calculated.
parent 297f89f7
Pipeline #7764 passed with stage
in 49 minutes and 29 seconds
......@@ -6531,6 +6531,14 @@ flag set (this is probably a bug in the OS). */
code = 0xFF08; /* backspace */
else
code = fnKeysym;
/* Function keys (such as the F-keys, arrow keys, etc.) set
modifiers as though the fn key has been pressed when it
hasn't. Also some combinations of fn and a function key
return a different key than was pressed (e.g. fn-<left>
gives <home>). We need to unset the fn key flag in these
cases. */
flags &= ~NS_FUNCTION_KEY_MASK;
}
/* The ⌘ and ⌥ modifiers can be either shift-like (for alternate
......@@ -6552,17 +6560,6 @@ In that case we use UCKeyTranslate (ns_get_shifted_character)
Lisp_Object kind = fnKeysym ? QCfunction : QCordinary;
emacs_event->modifiers = EV_MODIFIERS2 (flags, kind);
/* Function keys (such as the F-keys, arrow keys, etc.) set
modifiers as though the fn key has been pressed when it
hasn't. Also some combinations of fn and a function key
return a different key than was pressed (e.g. fn-<left> gives
<home>). We need to unset the fn modifier in these cases.
FIXME: Can we avoid setting it in the first place? */
if (fnKeysym && (flags & NS_FUNCTION_KEY_MASK))
emacs_event->modifiers
^= parse_solitary_modifier (mod_of_kind (ns_function_modifier,
QCfunction));
if (NS_KEYLOG)
fprintf (stderr, "keyDown: code =%x\tfnKey =%x\tflags = %x\tmods = %x\n",
code, fnKeysym, flags, emacs_event->modifiers);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment