Обновление на 2020 год

Обновление на 2020 год

Я пишу новую пользовательскую раскладку клавиатуры для Xorg, но есть один конкретный глиф, которого нет в Unicode. Однако его легко создать, используя стандартную букву и объединяющий диакритический знак.

Например, если мне нужна буква vс макроном внизу, последовательность U0073+U0331создаст нужный мне символ.

В моем определении макета xkb я могу указать одну точку Unicode (здесь altgr+dона привязана к ḏ и altgr+shift+dк Ḏ):

key <AC03>  { [         d,          D,        U1E0F,        U1E0E ] }; // d with macron below

Но, похоже, я не могу указать «комбинированный» глиф Unicode для одной клавиши:

key <AB04>  { [         v,          V,  U0076+U0331,  U0056+U0331 ] }; // v with macron below

Возможно ли создать такое общесистемное определение xkb?

решение1

РЕДАКТИРОВАТЬ:

Все еще пытаюсь...

Тестирование показывает, что раскладка клавиатуры принимает ТОЛЬКО одну клавишу в каждой позиции.

НО, если вы используете редкую/никогда не используемую клавишу в определении раскладки клавиатуры, а затем глобальную Xmodmap, чтобы заставить ЭТУ клавишу выводить различные необходимые вам символы Unicode, это будет работать.

В раскладке:

key <AB04>  { [ v, V, XF86LaunchA, XF86LaunchB ] };

В глобальном Xmodmap: (возможно, загруженном из /etc/profile.d ?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

Существует довольно много неиспользуемых/специальных клавишных символов, в качестве примера я выбрал LaunchA/B.

решение2

С другой стороны, вы можете прикрепить к данной клавише сам символ unicode combined diactityics, а затем вы можете ввести его после любого другого символа. Действительно, именно так должны работать символы unicode combined.

В X11 есть мертвые клавиши, мертвые клавиши работают наоборот: сначала мертвая клавиша, потом базовая буква. Есть <dead_belowmacron>, можно прикрепить к какой-нибудь клавише.

Затем вам нужно отредактировать файл Compose для вашей локали (буду признателен, если кто-то знает, как добавлять определения в файл Compose из указанного пользователем расположения) и добавить строки вроде:

# when the output is a single unicode char, you put also the corresponding
# X11 symbol name
# <symbol> <symbol> : "one-char-string" <symbol>
<dead_belowmacron> <d> : "ḏ" U1E0F
<dead_tilde> <n> : "ñ" <ntilde>
# when the output is a multicharacter string, you put just the string
# <symbol> <symbol> : "string"
<dead_belowmacron> <v> : "v̱"

Используемый файл Compose определяется локалью в файле /usr/share/X11/locale/compose.dir (путь может отличаться).

решение3

Обновление на 2020 год

Этот вопрос был задан в 2012 году, а последний ответ (до этого) был дан в 2013 году. Долгое время лучшим ответом было просто перейти с ximнаuim. Это более или менее простая замена, созданная для полной поддержки Unicode и многоязычного ввода. Среди многих других функций uim позволяет выводить символы с несколькими кодовыми точками, например, U0073+U0331в результате нажатия клавиши или неиспользуемой комбинации клавиш.

Связанный контент