При использовании китайской раскладки ввода (IME) для ввода английских символов возникает ошибка (например, при вводе слов без отключения IME). Обычно нажатие клавиши Enter означает «не выбирать ни одного кандидата и напрямую ввести содержимое буфера». Однако в чат-интерфейсе это интерпретируется как «отправить сообщение», что приводит к данной ошибке.
Ожидаемое поведение:
- Пользователь вводит английские буквы с помощью китайской IME (например, вводит «hello»)
- IME отображает список кандидатов
- Пользователь нажимает Enter, ожидая подтвердить исходные введённые буквы без выбора кандидатов
Фактическое поведение:
- Клавиша Enter перехватывается чат-интерфейсом и напрямую вызывает функцию «отправить сообщение»
- Это приводит к отправке содержимого буфера IME некорректно или отправке неполного сообщения
Корневая причина:
Это конфликт сочетаний клавиш между двумя уровнями:
- Уровень IME: Enter = подтвердить текущий ввод (композицию)
- Уровень приложения: Enter = отправить сообщение
Чат-приложение некорректно обрабатывает «состояние композиции» IME, из-за чего перехватывает событие нажатия клавиши Enter, пока IME ещё обрабатывает ввод.
Это видео с демонстрацией/воспроизведением ошибки:
Каждый раз при нажатии клавиши Enter отправляется новое сообщение.
