Layout xkb personalizzato in cui una chiave crea due punti di codice unicode


14

Sto scrivendo un nuovo layout di tastiera personalizzato per Xorg, ma esiste un glifo particolare che non esiste in Unicode. Tuttavia, è facile crearlo utilizzando una lettera standard più un segno diacritico combinato.

Ad esempio, se voglio la lettera vcon un macron in basso, la sequenza U0073+U0331crea il carattere che desidero.

Nella mia definizione di layout xkb, posso specificare un singolo punto Unicode (qui altgr+dè associato a ḏ e altgr+shift+da Ḏ):

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

Ma non riesco a specificare un glifo Unicode 'combinato' per una singola chiave:

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

È possibile creare una definizione xkb a livello di sistema come questa?

Risposte:


11

MODIFICARE:

Ancora provando...

Il test mostra che il keymap prenderà SOLO un singolo tasto in ogni posizione.

MA, se usi un keysym raro / mai usato nella definizione della keymap, allora una Xmodmap globale per fare in modo che il keysym produca i vari caratteri unicode di cui hai bisogno, funzionerà.

Nella mappa dei tasti:

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

In una Xmodmap globale: (forse caricato da /etc/profile.d?)

keysym XF86LaunchA = U0056 U0331
keysym XF86LaunchB = U0076 U0331

Ci sono un paio di palestre inutilizzate / per uso speciale, ho scelto LaunchA / B come esempio.


Grazie per la risposta. Uno svantaggio è che questa sarebbe un'impostazione per uso, giusto? Farlo con xkb lo renderebbe a livello di sistema e significa che può essere distribuito in un singolo file. Certo, quelle condizioni erano nella mia domanda originale!
SigueSigueBen,

2
Ho analizzato il codice sorgente, non sembra esserci alcun supporto per l'inclusione di più battiture nelle definizioni chiave della keymap. Certo, potresti riscriverlo tu stesso per implementare quell'abilità!
Lornix,

Non è la risposta che volevo, ma questa è comunque la risposta. Mi occuperò un po 'del codice sorgente e guarderò le opzioni che hai suggerito. Grazie.
SigueSigueBen,

4

D'altra parte, è possibile associare a una determinata chiave l'unicode che combina il carattere diactitico stesso, quindi è possibile digitarlo dopo qualsiasi altro carattere. In effetti è così che l'unicode che combina i personaggi è supposto per funzionare.

In X11 ci sono chiavi morte, le chiavi morte funzionano nell'altro modo: prima la chiave morta, quindi la lettera di base. C'è un <dead_belowmacron>, puoi collegarlo a qualche chiave.

Quindi è necessario modificare il file Compose per la propria locale (se qualcuno sa come aggiungere definizioni al file Compose da una posizione definita dall'utente che apprezzo) e aggiungere righe come:

# 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̱"

il file di composizione da utilizzare è definito dalla locale nel file /usr/share/X11/locale/compose.dir (il percorso può variare).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.