¿Cómo puedo asignar la tecla de mayúsculas izquierda y derecha individualmente?

10

En primer lugar, disculpe mi ignorancia de X y XKB; He estado tratando de hackear una solución con la esperanza de poder lograr lo que quiero sin requerir una comprensión detallada de la misma.

Estoy tratando de crear un mapa de teclado XKB en Ubuntu 12.04 que me permita estipular cuál de las dos teclas de mayúsculas constituye el modificador de Nivel2. Específicamente, la 4tecla solo debe producir a $cuando se mantiene el desplazamiento a la derecha, no a la izquierda.

Mi lectura hasta ahora:

Intenté definir un tipo personalizado y luego referirme a él explícitamente en un mapa de símbolos:

/usr/share/X11/xkb/types/mbfisher:

default xkb_types "mbfisher" {
  type "RIGHT_SHIFT" {
    modifiers = None+Shift_R;
    map[None] = Level1;
    map[Shift_R] = Level2;
  };
}

/usr/share/X11/xkb/symbols/mbfisher:

default
partial alphanumeric_keys
xkb_symbols "basic" {

  name[Group1]= "mbfisher";

  key <AE04> {
    type= "RIGHT_SHIFT",
    symbols[Group1]= [ 4,  dollar ]
  };

};

Luego selecciono el mapa con la GUI de diseño de teclado de Ubuntu.

Obviamente, esto deshabilita el teclado alfanumérico aparte de la 4tecla, pero el signo de dólar todavía se puede escribir con cualquiera de las teclas de mayúsculas.

Soy consciente de escribir una pregunta masiva con mucha información inútil, así que me detendré aquí; por favor pregunte por cualquier cosa que me haya perdido.

¿Algunas ideas?

mbfisher
fuente

Respuestas:

2

No sé si es la solución que desea, pero una posibilidad para deshabilitar la tecla Mayús izquierda sería usar xmodmap. Crea un archivo ~/.Xmodmapcon contenido

clear shift
add shift = Shift_R

y ejecutar xmodmap ~/.Xmodmap.


Ver comentarios / chat:

Puede tener problemas si hay otras modificaciones realizadas en su xkbmap por algún otro programa, por lo que setxkbmap uspuede ser necesario restablecer un xkbmap predeterminado con algo similar .

Si desea que algunas teclas respondan a una sola tecla de mayúsculas, puede obtener la distribución actual del teclado con xmodmap -pke > .Xmodmapesto le proporciona .Xmodmapuna lista de todas sus teclas en forma de keycode XX = functions. En esta asignación, cada código clave puede tener varias funciones en el lado derecho. Cada uno corresponde a un modificador diferente + esa tecla. Puede insertar el clear + add desde arriba y agregar algo como add mod5 = Shift_L. La tecla shift derecha correspondería a mod2 mientras que la izquierda sería mod5. Puede continuar y mover las funciones mod2 de las teclas que desea llamar con la tecla Mayús izquierda a mod5 simplemente insertando NoSymboly espacios hasta llegar a la columna derecha ( keycode 57 = n N-> keycode 57 = n NoSymbol NoSymbol NoSymbol N).

Trudbert
fuente
Encantado de ayudar. ¿Funcionó?
Trudbert
Lo siento, día ocupado. Todavía tengo ambas teclas shift disponibles después de ejecutar xmodmap, ¿debo hacer algo más para obtener el cambio?
mbfisher
Pruebe xmodmap -e "clear shift" después de eso, no debería tener teclas de mayúsculas disponibles si eso funciona, el resto también debería funcionar
Trudbert
No, todavía tengo las teclas de mayúsculas. # xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
mbfisher
extraño. No hay mensaje de error? clear debería eliminar todo lo relacionado con el modificador, por lo que no debería quedar nada. Obtendré mis manos en el sistema Linux en una hora más o menos y lo investigaré nuevamente.
Trudbert
2

¡Esto es lo que finalmente funcionó! Utilicé xmodmapy un ~/.Xmodmaparchivo en lugar de la configuración xkb.

~/.Xmodmap:

clear Shift

! Key Shift+Key mode_switch+Key mode_switch+Shift+Key AltGr+Key AltGr+Shift+Key
! Key Shift_L+Key Shift_R+Key Shift_R+Shift_L+Key AltGr+Key AltGr+Shift_L+Key

keycode 10 = 1 1 exclam 1
keycode 11 = 2 2 at 2
keycode 12 = 3 3 numbersign 3
keycode 13 = 4 4 dollar 4
keycode 14 = 5 5 percent 5

keysym Shift_R = Mode_switch
add Shift = Shift_L

Las 2 líneas comentadas (mirando con !) muestran los encabezados de las columnas antes y después de mis cambios. Esto me ha permitido especificar col 2 como Shift_L y col 3 como Shift_R, ya que he asignado shift_R como Mode_switch.

Los cambios se realizan ejecutando:

 # setxkbmap us
 # xmodmap ~/.Xmodmap

setxkbmap usestablece el mapa de EE. UU. predeterminado para que trabaje desde una pizarra limpia y le xmodmapagrega los cambios personalizados.

Cuando se implementa el !, @, #, $y %personajes sólo pueden ser escritas con la clave de desplazamiento a la derecha, y ^, &, *, (y )sólo pueden ser escritas con la tecla de mayúsculas izquierda.

Ahora puedo continuar asignando todas las teclas en el lado izquierdo del teclado para que solo se modifiquen con la tecla Mayús derecha (es decir, los caracteres alfabéticos y sus modificaciones en mayúsculas) y viceversa; Esta solución significa que solo necesito reasignar el lado izquierdo.

Otros enlaces útiles encontrados en el camino:

¡Muchas gracias a @Trudbert por ayudarme a encontrar la respuesta!

mbfisher
fuente