При каких условиях [символы NSEvent] могут быть NSString длиной больше 1?

NSEvent имеет свойство символов, которое является строкой NSString, допустимой для событий нажатия/переключения клавиш. При каких условиях длина строки может быть больше 1?

Единственное условие, которое мне удалось найти до сих пор, это когда NSEvent соответствует вводу из IME (редактор метода ввода).

Редактировать - я знал о случае с суррогатной парой, но как-то вылетел из головы, когда спрашивал об этом. Меня больше интересует случай, когда нет. графем (символов) больше, чем 1.


person ksb    schedule 05.06.2016    source источник


Ответы (3)


Вы также можете получить это с программно публикуемыми событиями. CGEventKeyboardSetUnicodeString() позволяет вызывающей стороне прикрепить любую произвольную строку к ключевому событию.

person Ken Thomases    schedule 05.06.2016

При каких условиях длина строки может быть больше 1?

Если у вас есть метод клавиатуры/ввода, который может вводить любой отдельный символ, для которого требуется суррогатная пара в UTF-16, например. a ???? (линейный слог Unicode B B008 A), то length будет 2. Это связано с тем, что length возвращает количество 16-битных кодовых единиц, а не количество символов.

person CRD    schedule 05.06.2016

Старшие кодовые точки Unicode кодируются последовательностью символов в Mac OS X. Попробуйте ????.

person Amin Negm-Awad    schedule 05.06.2016