Когда языковая раскладка изменяется на язык справа налево; в некоторых стандартных местах редактирования (например, в адресной строке Google Chrome) такие символы, как <
, {
и [
, автоматически становятся >
, }
и ]
просто путем изменения языковой раскладки.
Есть ли способ предотвратить это и сделать этих персонажей стабильными?
Такое поведение является стандартом из Двунаправленного алгоритма Unicode . Таким образом, доминирующее направление BiDi взято из первого сильного символа в абзаце.
Так что я думаю, что это происходит в этом случае:
Первое направление с пустым текстовым полем взято из конфигурации локали / языка. Как вы сказали, арабский язык - это язык RTL. Итак, курсор справа.
Вход <
, но он показан как >
. Это нейтральный символ, поэтому не влияет на направление. Почему это перевернуто? Краткий ответ: стандарт Unicode, :) все равно прими Ну, его зовут Знак «меньше» , так что ... В RTL / арабском языке формула начинается с правой стороны, ее следует перевернуть. Как вы думаете ... нет? !!!
Введите латинский символ g
. Это сильный L (слева) символ, поэтому этот абзац определяется как LTR.
Забой для удаления g
. Но обратите внимание, где курсор.
Теперь, например, [
, его неверно назвали Левая квадратная скобка . Это должно быть что-то вроде Открытая квадратная скобка (Биди нейтральна и перевернута в RTL)
Все разработчики стараются следовать стандартам. Так что в настоящее время они заставят текстовое поле быть RTL или LTR, Auto является лучшим для большинства пользователей.
Поэтому для вас лучшее, что я могу предложить, - это использовать Unicode BiDi Control Char.
U+200F right-to-left mark (RLM)
В пустой адресной строке Ctrl kbd> + Shift kbd> + u kbd>, подчеркнуты маленьким подчеркиванием u
, показано вверх, введите 200f
, затем Enter kbd>
См. <
не перевернулся как LTR.
Ctrl kbd> + Shift kbd> + u kbd> - GTK / Гном специфичен. В KDE отсутствует такая опция, и, похоже, она не исправлена, поскольку в этом отчете об ошибке упоминается конфликт между KDE / Qt / Xorg Нужен способ вставки произвольных символов Юникода в Kubuntu .
Так как это всего лишь несколько символов, вы можете переназначить ненужные ключи или отобразить неиспользуемые ключи. Например, я использую американский английский (международные мертвые клавиши AltGr)
Откройте его файл макета xkb
для редактирования:
sudo nano /usr/share/X11/xkb/symbols/us
Найдите определение группы с тем же именем:
xkb_symbols "altgr-intl" {
name[Group1]= "English (international AltGr dead keys)";
Давайте рассмотрим пример для r
(легко запомнить) :: AltGr kbd> + r kbd> & rarr; RLM, Shift kbd> + AltGr kbd> + r kbd> & rarr; LRM. Вместо ë
& amp; Ë
. Заменить:
key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
на:
key <AD04> { [ r, R, U200F, U200E ] };
Обновить xkb
sudo dpkg-reconfigure xkb-data
Перейти к другому макету, а затем назад, он будет активен немедленно.
Примечания:
Используйте тот же метод, чтобы добавить их в арабскую раскладку, если вы хотите иметь возможность использовать это из обоих макетов.
Вы можете использовать U+061C arabic letter mark (ALM)
вместо RLM, поскольку вы являетесь арабским пользователем.
xkb
поддерживает другой формат ввода кода Unicode, 0x100200f
экв. U200F
(то есть 0x100
в качестве префикса)
Чтобы избежать перезаписи модифицированной карты ключей обновлениями xkb-data
, лучше всего создать новую пользовательскую карту XKB. См. Как добавить новую раскладку клавиатуры (определение пользовательской раскладки клавиатуры) или Какие шаги необходимы для создания новой раскладки клавиатуры в Ubuntu?
Можно добавить все остальные управляющие символы Юникода. Некоторые приложения уже имеют опцию во всплывающем меню многострочного текстового поля ввода. Пример Poedit:
Приятно читать для дальнейшего понимания:
Ссылки :
Как ввести любой Unicode, недоступный на клавиатуре, см. Невозможно ввести «ć» на венгерской раскладке
0x100
)
0x100200F
вместо этого, я don' t знают, совпадает ли это сU200F
. – Mauricio Gracia Gutierrez 17.05.2020, 13:01