"1. Entonces, ¿qué hace el modificador de quinto nivel?
Elige el quinto nivel. El modificador de segundo nivel (solo turno regular) elige el segundo nivel, y el tercer nivel elige el tercer nivel.
La razón por la que el modificador de quinto nivel elige el quinto nivel en lugar del cuarto nivel (justo después del modificador de tercer nivel) es que estos tres modificadores se pueden combinar de diferentes maneras para elegir ocho niveles diferentes (esto incluye no usar ninguno de los modificadores, que solo está presionando una tecla sin ninguno de esos modificadores). Hay ocho combinaciones desde 2 ↑ 3 = 8. Para los dos primeros modificadores hay cuatro combinaciones:
- Sin modificadores (nivel 1)
- Modificador de segundo nivel, también conocido como shift (nivel 2)
- Modificador de tercer nivel (nivel 3)
- 2do + 3er modificador (nivel 4)
Agregar el tercer modificador (5to nivel) agrega cuatro niveles más.
"2. ¿Cómo lo configuro para que pueda obtener 5 o seis caracteres diferentes de una sola tecla (modificado por Shift Alt Gry , Right
Ctrlpor ejemplo)?
En primer lugar, necesita un diseño que use cinco o más caracteres por tecla. Puede elegir un diseño existente, pero si simplemente desea agregar más niveles al diseño que está utilizando actualmente, puede que no sea óptimo. Por ejemplo, está la distribución del teclado Neo († 1), pero está "optimizada para el idioma alemán", por lo que no es tan bueno para la mayoría de los hablantes de inglés.
Aún así, podría ser instructivo echar un vistazo a las teclas que Neo ha elegido para el modificador de nivel 5.
Neo aparentemente llama al modificador de nivel 5 para "Mod4". Como puede ver, usa la tecla a la derecha de la tecla Mayús izquierda ( LSGT
) y la tecla / AltGr
tecla Alt derecha . Esto está en un teclado europeo (105 teclas) que en comparación con el teclado de EE. UU. (104 teclas) tiene un desplazamiento a la izquierda estrecho y una tecla de retorno alta y delgada. Para una distribución de teclado que se basa en el teclado de EE. UU., Es posible que deba elegir, o prefiera, otras teclas.
Elegir una tecla modificadora de nivel 5
En la respuesta sup, elige usar Xmodmap. Hoy en día, se recomiendan herramientas como Setxkbmap sobre Xmodmap. Xkb viene con muchas opciones predefinidas para cosas como elegir el modificador de nivel 5. Si consulta
man xkeyboard-config y busca lv5
, encontrará estas opciones:
┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option │ Description │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│ │ lock when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
└──────────────────────┴───────────────────────────────────────────────────┘
Entonces, las opciones que se documentan son la LSGT
tecla, la tecla alt derecha, la tecla derecha de Windows y la tecla izquierda de Windows. Como hemos visto, Neo usa las dos primeras opciones.
Digamos que quiere usar la lv5:ralt_switch_lock
opción con algún diseño. Este comando configura el us
diseño con esta tecla modificadora de nivel 5:
setxkbmap -option "lv5:ralt_switch_lock" us
Entonces, para cualquiera de las opciones que están documentadas man xkeyboard-config
, -option
úsela como argumento para usar Setxkbmap.
En caso de que estas opciones no sean suficientes y desee definir otra clave para que sea el modificador de nivel 5, es instructivo mirar las declaraciones de estas opciones. Parecen estar adentro
/usr/share/X11/xkb/symbols/level5
. La declaración para se
lv5:ralt_switch_lock
ve así:
partial modifier_keys
xkb_symbols "ralt_switch_lock" {
include "level5(lock)"
key <RALT> {
type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
};
};
El lado derecho de symbols[Group1]
declara qué clave o carácter debe producir cada nivel de la clave. Esto usa los ocho niveles posibles ya que se supone que bloquea el modificador de nivel 5 cuando se presiona junto con otra tecla de cambio de nivel 5. Por lo tanto, se emiten los niveles 5–8,
ISO_Level5_Lock
ya que se accede a todos estos niveles manteniendo presionado el cambio de nivel 5 y alguna combinación de las otras teclas de cambio (ninguna para todos). Si solo desea el comportamiento de cambio y no también el comportamiento de bloqueo si se presionan dos, puede hacer una declaración más simple (desde el mismo archivo):
// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
include "level5(modifier_mapping)"
};
Agregar niveles adicionales a un diseño
Los diseños Xkb son bastante modulares. Puede incluir diseños existentes y modificarlos. Por lo tanto, podemos elegir un diseño existente con menos de 5 niveles y agregarle algunos niveles.
Puede hacer nuevos diseños copiando el archivo con sus diseños
/usr/share/X11/xkb/symbols/
, o donde sea que sus herramientas Xkb busquen diseños. Pero esto requiere privilegio sudo, por lo que no es la mejor solución. Alternativamente, puede copiar la estructura de directorios xkb/
y colocar sus diseños en el directorio apropiado xkb/
, a saber
symbols/
. Digamos que has hecho un archivo xkb-tree/symbols/my-layouts
. Para usar los diseños definidos en este archivo, puede usar la -print
opción de setxkbmap
y luego canalizar la salida a xkbcomp
. Este script de envoltura toma los diseños como entrada:
#!/bin/sh
# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
-print |
xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"
En lo que respecta al archivo con el diseño, supongamos que queremos expandir el diseño "internacional de EE. UU.", Que utiliza cuatro niveles. En primer lugar, configuramos las teclas de cambio de nivel 3 y 5 de la misma manera que lo hace Neo:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
};
Ahora queremos agregar algunos caracteres adicionales. Solo usemos las primeras cuatro claves de los diseños de Qwerty como ejemplo. Estas claves son Q
to R
, que corresponden <AD01>
a <AD04>
. Primero necesitamos hacer que las teclas sean capaces de usar hasta ocho niveles:
key.type[Group1] = "EIGHT_LEVEL";
Para los primeros cuatro niveles, para no redefinirlos, los asignamos a NoSymbol
. Luego agregamos dos niveles. En el nivel 5 agregamos las flechas ←↓↑→
(† 2). En el nivel 6 agregamos las teclas de dirección. Nuestro diseño termina luciendo así:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
// Make the following keys capable of using eight levels.
key.type[Group1] = "EIGHT_LEVEL";
key <AD01> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
leftarrow, Left
] };
key <AD02> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
downarrow, Down
] };
key <AD03> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
uparrow, Up
] };
key <AD04> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
rightarrow, Right
] };
};
Para usarlo, podemos usar el script de envoltura que creamos:
./setxkbmap-wrapper "my-layouts(mine)"
† 1: Neo está de(neo)
en Xkb; setxkbmap "de(neo)"
.
† 2: para encontrar los nombres simbólicos que usa Xkb, busque un archivo llamado keysymdef.h
. Debe estar debajo de un directorio llamado X11/
. También puede usar nombres Unicode, por ejemplo U2192
para U + 2192.
Bueno, después de un poco de excavación:
(1) La clave para elegir el 5to nivel hace algunas cosas raras (con respecto a algunos diseños en francés) que no son relevantes para lo que quería hacer. Básicamente establece qué tecla va a actuar como ISO_Level5_Shift. ISO_Level5_Shift se usa en algunos diseños oscuros. Esta respuesta se basa en la cantidad de resultados que da Google al buscar "ISO_Level5_Shift" y en estos enlaces .
(2) No se puede usar para obtener 6 símbolos de una tecla física. Una forma de lograr esto es con el uso del archivo .xmodmap ubicado en el directorio $ HOME.
Primero, comando
da qué símbolos clave actúan como varios modificadores. En mi sistema era como sigue:
Mod3 necesita configurarse para usar 6 símbolos con una tecla. Esto debe colocarse en el archivo .xmodmap:
Entonces xmodmap -pm me dio:
Donde keycode 94 es la clave que elegí para actuar como mod3. Los códigos de teclas de varias teclas físicas se pueden encontrar con la herramienta de línea de comandos xev (solo ejecútelo y presione varias teclas, se mostrarán los códigos de teclas).
Entonces, si coloco en el archivo .xmodmap
o corre
Obtengo seis símbolos diferentes de una tecla con el uso de altgr, shift y keycode 94 (es una tecla inútil al lado del desplazamiento a la izquierda en mi diseño físico).
ACTUALIZACIÓN: si necesita solo cinco símbolos, es útil configurarlo así:
Ocasionalmente me sucede que obtengo 4 en lugar de 3 de lo contrario.
fuente