Как ввести символ в текстовом редакторе без клавиатуры

Обновлено: 07.07.2024

Для пользователей классического редактора WordPress, которым часто приходилось вставлять специальные символы в свои записи, жизнь когда-то была простой. Нажмите кнопку «Ω» в редакторе, чтобы открыть модальное окно со списком символов, которых нет на стандартной клавиатуре. Затем пользователю нужно было только щелкнуть символ, который он хотел вставить, и приступить к написанию своего сообщения.

Для пользователей, которые перешли на редактор блоков и привыкли вставлять специальные символы одним нажатием кнопки, жизнь усложнилась. Ответ на их беды состоял в том, чтобы сначала вставить классический блок и использовать его специальный инструмент для вставки символов, что противоречит цели использования нового и блестящего редактора блоков. Другим вариантом было использование приложения/программы со специальными символами, поставляемой вместе с их компьютером, что предполагает, что все пользователи знают его сочетание клавиш или знают, как запускать программу.

Многие считают, что это стандартная функция для любого текстового редактора. Когда WordPress находится на стадии попытки продать новый редактор, он должен быть готов включить функции, которые пользователи старого редактора считают стандартными. Отсутствие средства вставки специальных символов можно было бы списать на недосмотр, если бы люди не просили об этом.

Люди просили об этом.

К счастью, запросы привлекли внимание команды 10up. В сентябре этого года они выпустили первую версию своего плагина Insert Special Characters. С тех пор он претерпел несколько обновлений и хорошо работает во всех браузерах.

Плагин прост и выполняет свою работу намного лучше, чем предыдущий вставщик в классическом редакторе. Вместо того, чтобы просто разобраться с основами, команда сделала все возможное, чтобы запустить плагин.

Подключаемый модуль добавляет новый элемент подменю на текстовую панель инструментов под названием «Специальные символы Ω».

Снимок экрана элемент меню расширенного текста специальных символов.

Пункт меню «Специальные символы» форматированного текста.

После нажатия на ссылку для вставки специального символа на экране появляется модальное окно. Коробка предоставляет сотни специальных символов на выбор. Он сортирует их по категориям «Разное», «Математика», «Латиница» и «Стрелка», а также предоставляет поисковый фильтр для сужения списка. В поле также можно попасть, набрав ctrl/cmd+o на клавиатуре.

Снимок экрана модальное окно ввода специальных символов.

Модальное окно для ввода специальных символов.

Как и многие модальные окна, поле время от времени появляется в странном положении, в зависимости от того, где на экране находится точка вставки. Помимо этого, я не обнаружил серьезных проблем с подключаемым модулем.

Плагин также предоставляет другим разработчикам возможность манипулировать вкладками и доступными символами в модальном окне.

В связи с этим возникает вопрос, следует ли теперь реализовать эту функцию в основном редакторе блоков. Если основная команда добавит его на этом этапе, можно надеяться, что они сделают его конкурентоспособным с плагином. Все, что меньше, было бы разочарованием.

Редактор метода ввода (IME) – это программный компонент, который позволяет пользователю вводить текст на языке, который невозможно представить на стандартной клавиатуре QWERTY. Обычно это связано с количеством символов в письменном языке пользователя, например в различных восточноазиатских языках.

Вместо того, чтобы каждый отдельный символ отображался на одной клавише клавиатуры, пользователь вводит комбинации клавиш, которые интерпретируются IME. IME генерирует либо символ, соответствующий набору нажатий клавиш, либо список символов-кандидатов на выбор. Затем выбранный символ вставляется в поле редактирования, с которым взаимодействует пользователь.

IME могут поддерживать как аппаратные клавиатуры, так и экранные или сенсорные клавиатуры.

Вашему приложению не нужно напрямую взаимодействовать с IME. IME встроен в систему, как и сенсорная клавиатура. Если ваше приложение поддерживает ввод текста и вы намерены поддерживать ввод текста на языках, для которых требуется IME, вам следует протестировать сквозное взаимодействие с пользователем для ввода текста. Это позволяет исправить любые проблемы, например настроить пользовательский интерфейс таким образом, чтобы он не закрывался сенсорной клавиатурой или окном-кандидатом IME.

Создание IME

Чтобы обеспечить удобство ввода для всех пользователей, Microsoft выпускает IME, которые поставляются в комплекте для различных языков.

Помимо встроенных IME, вы можете создавать собственные IME, которые пользователи могут устанавливать и использовать так же, как встроенные IME.

Все IME запускаются в системе Windows, которая защищена от вредоносных IME и повышает безопасность и удобство использования всех IME.

Пользовательские IME могут быть связаны с сенсорной клавиатурой по умолчанию и использовать ее макет, чтобы конечные пользователи могли использовать свои IME с сенсорной клавиатурой. Однако вы не можете предоставить собственную независимую сенсорную клавиатуру, а некоторые функции встроенных IME для сенсорных клавиатур недоступны для пользовательских IME.

Требования к IME

Сторонний IME должен соответствовать следующим требованиям:

  • Должна быть цифровая подпись
  • Должен поддерживаться Text Services Framework (TSF) с правильно установленными соответствующими флагами IME
  • Необходимо следовать рекомендациям, описанным в требованиях к редактору метода ввода (IME) и разработке и написании кода приложений для Windows.

Сторонний IME, не отвечающий этим требованиям, не может быть запущен.

Устаревшие пользовательские IME могут работать в настольных приложениях, но заблокированы в приложениях для Windows.

Кроме того, Защитник Windows удаляет вредоносные IME из системы. По этой причине важно ознакомиться с требованиями кодирования IME. Дополнительные сведения см. в разделе Требования к редактору метода ввода (IME).

Рекомендации по дизайну IME

Ознакомьтесь с требованиями к редактору методов ввода (IME), чтобы получить дополнительные сведения о передовых методах и рекомендациях по проектированию IME. Как правило, все пользовательские интерфейсы IME должны:

Настройте текстовый редактор для правильного отображения всех символов

Для EditPad или любого другого редактора для правильного отображения текста необходимо использовать правильную кодировку, чтобы знать, какие символы отображать, и использовать шрифт, который действительно может отображать эти символы. Если EditPad отображает ваш файл с неправильными символами, вам нужно изменить кодировку. Например, файл ASCII, неверно истолкованный как UTF-16, покажет китайскую тарабарщину. Чтобы это исправить, выберите в меню Convert|Text Encoding, выберите опцию «reinterpret», а затем выберите кодировку, которая заставляет EditPad отображать правильные символы. EditPad поддерживает все кодировки Unicode и все устаревшие кодовые страницы, которые все еще актуальны.

Если выбрана правильная кодировка, некоторые символы могут отображаться в виде пустых прямоугольников или вопросительных знаков внутри прямоугольника. Эти прямоугольники являются символами-заполнителями, которые указывают, что шрифт не может отображать эти символы. Если в вашем файле смешаны разные скрипты, то некоторые скрипты могут быть прекрасно читаемы, а другие могут выглядеть странно или быть слишком трудными для чтения. Некоторые шрифты, такие как тайский, которым требуется больше места по вертикали, могут выглядеть крошечными рядом с английскими символами. Это часто происходит, когда ваш шрифт не поддерживает один из скриптов, а автоматическая замена шрифта выбирает неподходящий шрифт.

Большинство шрифтов поддерживают только определенные сценарии. Это позволяет оптимизировать шрифт для этих скриптов. Стили, которые делают шрифт красивым или практичным, обычно хорошо работают только для определенных шрифтов. Например, моноширинные шрифты, которые нравятся программистам, поддерживают только те алфавиты, которые можно красиво отображать моноширинным способом. Универсальные шрифты, такие как Arial Unicode MS или Lucida Unicode, имеют тенденцию быть скучными.

Если в вашем файле используется только один шрифт (в дополнение к базовой латинице) или если вас устраивает универсальный шрифт, вы можете просто выбрать «Параметры|Шрифт» в меню EditPad и выбрать шрифт, который вам подходит. Тайский шрифт, такой как Leelawadee, например, идеально отобразит тайский документ с тайскими и латинскими (английскими) символами соответствующего размера.

Windows 7 и более поздние версии поставляются с широким набором шрифтов, предназначенных для определенных сценариев. Возможно, вы не сможете выбрать некоторые шрифты для более непонятных сценариев в диалоговом окне «Параметры | Шрифт» EditPad, потому что Windows их скрывает. Чтобы сделать шрифт видимым (или невидимым) в диалоговом окне шрифтов, используйте Проводник Windows, чтобы перейти в папку C:\Windows\Fonts. Щелкните шрифт правой кнопкой мыши и выберите «Показать» (или «Скрыть»), чтобы переключить его видимость. Скрытые шрифты по-прежнему доступны приложениям, которые специально их запрашивают. Скрытие ненужных шрифтов облегчает выбор шрифтов, с которыми вы работаете.

Если в вашем файле используется несколько скриптов или много специальных символов, может потребоваться несколько шрифтов для правильного и удобочитаемого отображения всех символов. Приложение может добиться этого двумя способами.

Один из способов — полагаться на автоматический резервный шрифт, выполняемый Windows. Вы выбираете один шрифт, который хорошо подходит для большей части вашего файла. Ваше приложение просит Windows отобразить весь текст с этим файлом, позволяя Windows заменять символы, которые выбранный вами шрифт не поддерживает, другими шрифтами. К сожалению, это часто не работает или вообще не работает. Некоторые символы могут оставаться пустыми прямоугольниками. Заменяемые шрифты могут использовать другой размер или интервал. Символы, поддерживаемые как исходным шрифтом, так и шрифтом-заменителем, такие как основные пробелы и знаки препинания, могут иногда отображаться одним шрифтом, а иногда другим, в зависимости от шрифта, используемого для окружающих символов.

Другой способ заключается в том, чтобы приложение выбирало правильные шрифты для всех символов, которые оно должно отображать. Текстовые процессоры работают таким образом, поскольку позволяют форматировать документ с использованием любого количества различных шрифтов.

В EditPad Pro конфигурация макета текста определяет, будет ли Windows или EditPad обрабатывать откат шрифта. Вы можете настроить это для активного файла через меню «Параметры» или по умолчанию через конфигурацию типа файла. Если вы выберете конфигурацию макета текста только слева направо, EditPad позволит вам выбрать один шрифт и позволит Windows выполнить автоматический возврат шрифта.

Если вы выберете сложный макет текста скрипта, EditPad позволит вам выбрать основной шрифт и любое количество резервных шрифтов. EditPad отображает все символы, поддерживаемые основным шрифтом, используя этот шрифт. Другие символы отображаются самым верхним шрифтом в вашем списке резервных шрифтов, который их поддерживает. Поэтому выберите шрифт для основного сценария вашего файла в качестве основного шрифта. Добавьте шрифты, характерные для других скриптов, выше в списке резервных шрифтов. Добавьте универсальные шрифты ниже в списке. Если ваш файл содержит символ, не поддерживаемый каким-либо шрифтом, то EditPad использует основной шрифт для его отображения, что приведет к появлению пустого прямоугольника или вопросительного знака в прямоугольнике. Чтобы избежать этого, вы можете добавить шрифт последней инстанции в качестве самого нижнего резервного шрифта. Этот шрифт содержит общие глифы для всех символов, включая недопустимые символы. Глифы обозначают имена блоков и скриптов Unicode, что упрощает определение того, какой скрипт отсутствует в списке резервных шрифтов.

Резервный шрифт EditPad работает на уровне блоков Unicode. EditPad предполагает, что если шрифт поддерживает некоторые символы в данном блоке Unicode, то он должен поддерживать все символы в этом блоке. Это предположение в целом верно. Это повышает производительность и позволяет избежать смешивания слишком большого количества разных шрифтов. Если у вас есть шрифт, который поддерживает только некоторые символы из определенного блока Unicode, вам нужно поместить его ниже другого шрифта, который полностью поддерживает этот блок в списке резервных шрифтов, чтобы избежать пустых прямоугольников.

При вводе "@" в редакторе отображается диалоговое окно "вставка". Это работает, как и ожидалось, при использовании раскладки клавиатуры для США. Однако невозможно ввести «@» при использовании испанской раскладки клавиатуры. С испанской раскладкой клавиатуры я нажимаю комбинацию клавиш alt+2, которая должна ввести символ @, но символ не добавляется на поверхность редактирования (и меню вставки не отображается).

Проблема не ограничивается начальной позицией абзаца. Попытка ввести @ в середине абзаца также игнорируется.

Я использовал версию 0.16.2 для Mac.

Этапы воспроизведения

  1. Измените настройки клавиатуры на Mac, чтобы использовать "Испанский -ISO"
  2. Откройте редактор Mark Text и нажмите клавиши ALT + 2.
  3. Обратите внимание, что в документ ничего не добавляется.
  4. Проверьте комбинацию alt + 2, чтобы убедиться, что символ @ добавлен в другие программы, такие как веб-браузер или системные текстовые редакторы.

Ожидаемое поведение:
В документ необходимо добавить символ @. Кроме того, диалоговое окно вставки должно отображаться, когда символ добавляется в начале пустого абзаца..

Реальное поведение:

Знак @ не добавляется. Вы не можете ввести знак @ в своем содержимом или получить доступ к меню вставки без предварительного переключения параметров раскладки клавиатуры.

Версии

  • Отметить текстовую версию: 0.16.2
  • Операционная система: Mac OS 10.14.6

Текст был успешно обновлен, но возникли следующие ошибки:

brainchild0 прокомментировал 25 июня 2020 г.

Невозможно воспроизвести на Mint Cinnamon. При использовании испанской ( es ) раскладки клавиатуры AltR-2 создает символ @ в буфере редактирования.

brainchild0 прокомментировал 25 июня 2020 г.

Правильно ли работают другие символы для того же шаблона, но с цифровой клавишей, отличной от 2?

прокомментировал pauginer 26 июня 2020 г.

Правильно ли работают другие символы для того же шаблона, но с цифровой клавишей, отличной от 2?
Я пробовал разные комбинации:

прокомментировал pauginer 26 июня 2020 г.

brainchild0 прокомментировал 27 июня 2020 г. •

Похоже, что у Electron есть проблемы с раскладкой клавиатуры, отличной от американской, что влияет на другие популярные приложения, такие как Atom и VSCode.

Проект VSCode составил список обходных путей для различных проблем. Некоторые решения требуют создания файла keybindings.json, который поддерживается в Mark Text. Если какие-либо решения работают, поделитесь результатами.

@Jocs @fxha: Возможно ли вернуться к предыдущей версии Electron? Кроме того, в Mark Text 16.0 представлена ​​проверка орфографии, которая зависит от раскладки клавиатуры пакета узла. Может ли эта зависимость вызывать проблемы в Mark Text?Основываясь на отчетах для этого и других приложений Electron, эта проблема, вероятно, очень сильно влияет на пользователей Mark Text.

Расмис прокомментировал 11 января 2021 г.

brainchild0 прокомментировал 11 января 2021 г. •

@Rasmis Если это решение является надежным и переносимым, то, возможно, его следует интегрировать в дистрибутив приложения, пока не будет доступно более надежное решение, например решение из нижестоящего источника.

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

Jaaaarne прокомментировал 23 мая 2021 г.

Есть ли подобное решение для Windows?

brainchild0 прокомментировал 23 мая 2021 г.

@Jaaaarne: Вы можете попробовать некоторые советы по устранению неполадок из предыдущих ссылок, а затем сообщить об этом. Кажется, никто еще не сообщил о прямом решении в этом обсуждении для Windows.

fxha прокомментировал 16 декабря 2021 г.

Описание проблемы: пользователи не могут использовать определенные символы, поскольку мы заставляем ярлыки карты, такие как Alt+1, переключаться на первую вкладку. Комбинация клавиш недоступна для Chromium после принудительного сопоставления.

Решение: я думаю, что лучшим решением будет сопоставление переключения вкладок с помощью Ctrl+, а изменение заголовка выполняется с помощью Ctrl+Shift+ . Это приведет к согласованному решению на всех платформах.

Если у кого-то возникла эта проблема, запустите marktext --dump-keyboard-layout и загрузите результат. В настоящее время я не уверен, почему Alt+ используется для символов. Обычно для этого следует использовать Ctrl+Alt ( AltGr )?

brainchild0 прокомментировал 2 января 2022 г.

Меня смущают некоторые недавние действия.

Понятие, которое я решил, заключалось в том, что проблема возникла из-за проблем в Chromium и Electron, которые появляются при некоторых неамериканских сопоставлениях клавиш, особенно при вводе символов, образованных последовательным набором нажатий клавиш. Такое использование комбинаций клавиш отличается от одновременных комбинаций с клавишами управления, используемыми для быстрого доступа. Я никогда не сталкивался с конфликтом в приложениях между последовательной композицией для ввода символов, предоставляемой картой клавиш, и одновременным использованием клавиш управления, предоставляемых приложением в качестве ярлыков.

fxha прокомментировал 2 января 2022 г.

У нас было несколько проблем с сочетаниями клавиш в меню приложений на клавиатурах, отличных от США, которые были устранены путем исправления ярлыков во время выполнения. Это делается путем считывания информации о клавиатуре из системы и внутреннего сопоставления известных клавиш на основе языка клавиатуры. После этого мы регистрируем пропатченные ярлыки через Electron/Chromium и предотвращаем событие клавиши по умолчанию, потому что ярлык срабатывал дважды при некоторых обстоятельствах. Например. на клавиатуре США ярлык был вызван нашим обработчиком, а второй раз - меню приложения. Самым простым решением было установить ярлык как обработанный, потому что мы уже использовали его, зачем кому-то другому обрабатывать это событие впоследствии? Мы почерпнули эту идею из другого приложения Electron с той же проблемой.

Наконец, здесь у нас есть проблема, что некоторые клавиши, точнее комбинации клавиш, перестали работать после обновления MarkText (например, Alt+2 ). Обычно Alt+2 не должен выводить никаких символов, но вы можете настроить систему таким образом. Для вывода символа по умолчанию используется Ctrl+Alt или AltRight, но если вы зарегистрируете AltLeft ( =Alt ) в своей системе как черту для альтернативных символов, мы столкнемся с большой проблемой, поскольку мы предотвращаем поведение зарегистрированных сочетаний клавиш по умолчанию. Alt+2 используется как ярлык для переключения вкладок и предотвращает обработку события Electron/Chromium. Вместо создания персонажа вкладка переключается. Ваша ОС может обработать этот случай для вас, например. моя система отправит соответствующий символ в Electron, а не Alt+2, если я использую AltLeft в качестве штриха для альтернативных символов. Другой может отправить Alt+2, и Chromium должен будет создать персонажа, но у него никогда не будет шанса, потому что мы это предотвращаем. Это зависит от обработчика клавиатуры вашей ОС или драйвера, я не эксперт в этой области.

Различные пользователи предложили идею вернуть Alt+ для переключения вкладок, чтобы восстановить старое поведение (как до версии 0.16). Затем Chromium может получить и преобразовать ключевое событие в символ, если это необходимо. Если этот подход не сработает, нам нужно реорганизовать обработку ярлыков. На данный момент я надеюсь, что это решит проблему, потому что я не хочу больше тратить время на ярлыки 😄 .

brainchild0 прокомментировал 2 января 2022 г.

В целом, конечно, приложения и системы поддерживают как составные последовательности клавиш для ввода символов, так и одновременные комбинации для быстрых клавиш. Если есть проблема с поддержкой обоих, то причина, по которой можно заподозрить, заключается в недостатке платформы или системы.

Является ли то, что вы объясняете, результатом побочного эффекта более раннего решения в MarkText, в котором определенные события будут обрабатываться непосредственно приложением, прежде чем они достигнут обработчика по умолчанию, предоставленного системой?

brainchild0 прокомментировал 3 января 2022 г.

Проблема, отслеживаемая для Electron, о которой я упоминал ранее, с тех пор решена. Было бы полезно протестировать снимок Electron до разрешения, или вы думаете, что эти изменения не связаны с текущей проблемой в MarkText?

fxha прокомментировал 4 января 2022 г.

@brainchild0 Спасибо за ваше предложение, но, к сожалению, проблема все еще существует и помечена как не исправимая командой Electron. Alt + other должен работать в нашем следующем выпуске, и я скоро исправлю его.

Читайте также: