Eli Zaretskii schrieb am So., 24. Dez. 2017 um 20:35 Uhr: > > Date: Sun, 24 Dec 2017 19:28:07 +0000 > > From: Alan Third > > Cc: 29837@debbugs.gnu.org > > > > If I try to select utf-16 I get this > > > > set-keyboard-coding-system: Unsuitable coding system for keyboard: > utf-16 > > > > and I used tab completion to find which other coding systems were > > available but all the ones beginning utf-16 that I tried return the > > same message. > > Oh, I now recollect that Handa-san said at some point that keyboard > input doesn't support UTF-16... > > How do other macOS programs read UTF-16 keyboard input? Maybe you > could use the same way to read the sequences, and then decode them > internally as UTF-16 using coding.c facilities, and feed them into the > Emacs event queue? Just a thought. > > IIUC Emacs receives the input as a single UTF-16 string (in insertText), then iterates over the UTF-16 code units, converting each into an Emacs event. That's wrong, no matter whether the input comes from the character palette or from the keyboard; normal keyboard layouts just happen to not contain non-BMP characters. The loop needs to account for surrogates. As a small optimization (which is warranted because the function is probably called on every keystroke), this should use [NSString getCharacters:range:] to copy all the UTF-16 code units to a buffer first, to avoid repeated calls to characterAtIndex.