Спеціальний макет xkb, в якому одна клавіша створює дві точки коду unicode


14

Я пишу нову власну розкладку клавіатури для 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, як це?

Відповіді:


11

Редагувати:

Ще намагаюся ...

Тестування показує, що карта клавіатури ВИНАГО буде приймати по одній клавіші в кожній позиції.

АЛЕ, якщо ви використовуєте рідкісний / ніколи не використовуваний keyym у визначенні клавішної карти, то глобальна Xmodmap, щоб зробити ЦІ keyym виведення різних символів unicode, які вам потрібні, це буде працювати.

У ключовій карті:

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

У глобальній Xmodmap: (можливо завантажується з /etc/profile.d?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

Існує досить багато невикористаних / спеціальних ключів, я вибрав LaunchA / B як приклад.


Дякую за відповідь. Один недолік полягає в тому, що це буде налаштування на використання, правда? Якщо це зробити з xkb, це зробить його загальносистемним і означає, що він може бути розповсюджений в одному файлі. Звичайно, ці умови були в моєму первісному питанні!
SigueSigueBen

2
Я переглянув вихідний код, схоже, не існує підтримки для включення декількох натискань клавіш у ключові визначення ключової карти. Звичайно, ви можете переписати його самостійно, щоб реалізувати цю здатність!
lornix

Не відповідь, яку я хотів, але все-таки відповідь. Я трохи подумаю навколо вихідного коду і перегляну запропоновані вами варіанти. Спасибі.
SigueSigueBen

4

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

У 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 (шлях може змінюватися).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.