¿Hay una distribución de teclado internacional de Estados Unidos en Linux que imite el comportamiento de Windows?

10

Estoy acostumbrado a usar US International como la distribución de mi teclado. Sin embargo, la implementación parece diferir mucho entre Windows y Linux (Gnome, en mi caso, puede ser un problema de GTK ya que GTK se comporta igual en Windows).

El diseño utiliza claves muertas, por ejemplo, para claves como ' , " , ^ , & amp; c. Permitiendo la entrada fácil de personajes con signos diacríticos. En Windows, al presionar una tecla muerta y luego una tecla que no tiene pares asociados, se obtiene el carácter de la tecla muerta (cuando se combina con el espacio) y el carácter de la segunda tecla. Ejemplo: presionando " , una produce "ä", sin embargo, presionando ' , s produce "'s", ya que no hay emparejamiento para ' y s .

Ahora, hay un lenguaje llamado inglés que hace un uso frecuente de esos dos caracteres exactamente y, como funciona en Windows, simplemente escribiéndolos como de costumbre, ahora tengo memoria muscular. Lo que me lleva a mi problema:

En Linux (y GTK en Windows), hay es una pareja para ' y s (entre muchos otros), resultando en ś (que, a su vez, me lleva a escribir con frecuencia "itś"). Así que escribir "es" requiere que escriba ' , , s al final.

Hay algunas otras combinaciones a las que estoy acostumbrado que no funcionan. Entre ellos se encuentra que para parejas no existentes simplemente nada es el resultado. Escribir "yo" da como resultado "yo". Al pulsar una de esas teclas dos veces, se obtiene un diacrítico sin espaciado, lo que rompe mi hábito de escribir cadenas al escribir primero entre comillas (lo que ahora resulta en un acento agudo o macrón sin espacios).

En pocas palabras, ninguno de los diseños de US International suministrados parece funcionar igual que en Windows, ¿hay alguno que hacer trabajar de forma idéntica? ¿O alguna posibilidad de configurarlo de esa manera? Si bien puede ser bueno escribir una s con acento agudo o sin signos de separación, esas no son exactamente las necesidades comunes para mí.

Joey
fuente
1
Para cualquiera que se pregunte por qué uso US International, en lugar de otra cosa: soy de Alemania y necesito escribir cosas como ä, ö, ü, ß a veces. Pero la mayoría de los diseñadores de lenguajes de programación diseñan sus lenguajes para exactamente un diseño, por lo que las personas tienen que recurrir a combinaciones de teclas para introducir caracteres, como llaves o una barra invertida.
Joey

Respuestas:

7

Una posibilidad es evitar tener teclas muertas y escribir letras acentuadas con una tecla Componer. Por ejemplo, escriba Componer " una entrar ä. Tendrás que elegir una opción de distribución de teclado que incluya una Componer llave; Una opción común es la clave a la izquierda de la derecha. Ctrl tecla (que creo que Windows llama Menú ). La ventaja de Componer es que puedes ser capaz de escribir muchos personajes de fantasía sin cambiar tu diseño principal. La desventaja es que se necesitan tres pulsaciones en lugar de dos para una letra acentuada.

Alternativamente, puede configurar el efecto de las claves muertas creando un archivo llamado .XCompose (note CApitalization) en su directorio de inicio y enumere las combinaciones que desea. Algo como:

include "/usr/share/X11/locale/en_US.UTF-8/Compose"

<dead_acute> <space> : "'" apostrophe
<dead_acute> <exclam> : "'!"
<dead_acute> <quotedbl> : "'\""
# etc...
<dead_acute> <a> : "á"
<dead_acute> <b> : "'b"
# etc...

La sintaxis es bastante simple: la secuencia de teclas a la izquierda de la : se convierte en la cadena entre "" a la derecha de la :. La palabra adicional a la derecha es el keyym (es decir, el nombre de la clave) correspondiente a esta secuencia de claves; No es terriblemente importante. Cualquier cosa de un # hasta el final de la línea se ignora.

Cambie la primera línea para que apunte al archivo del sistema si su distribución lo coloca en un lugar diferente. Puede buscar en este archivo más ejemplos de sintaxis. <Multi_key> es otro nombre para el Componer llave.

A la izquierda, los nombres entre < paréntesis angulares > son los keyyms. Puedes encontrar la lista de palabras clave en /usr/include/X11/keysymdef.h (este archivo está en un paquete de desarrollo, por ejemplo, x11proto-core-dev en Ubuntu).

Sí, eso es mucho escribir, pero debería poder automatizar gran parte copiando y pegando trozos de keysymdef.h y haciendo algunos reemplazos masivos inteligentes. Algo que ayudará es que puedes reutilizar el código hexadecimal de la derecha para hacer la cadena de la derecha gracias a la "\ x dd "sintaxis: gire por ejemplo

#define XK_exclam                        0x0021  /* U+0021 EXCLAMATION MARK */

dentro

<dead_acute> <exclam> : "'\x21"

Por último, puede configurar una distribución de teclado con teclas muertas y una Componer llave. Siendo alemán, podrías configurar solo " como una llave muerta. Si va por ese camino, la opción más sencilla es usar la GUI para configurar un teclado sin tecla muerta y una .Xmodmap archivo para la clave muerta, que contiene algo como

keysym apostrophe = apostrophe dead_quotedbl
Gilles
fuente
1
Ok, lo investigaré (no en la otra máquina en este momento). Usar Compose no es una opción, ya que tendría que volver a aprender la memoria muscular y Linux de todos modos no es mi sistema principal. Y no asuma que solo porque soy alemán no necesitaré nada más allá de las diéresis ;-). Hay muchas palabras importadas de otros idiomas que también usan un acento grave o agudo.
Joey
Probablemente sería mejor comenzar simplemente anulando exactamente aquellas combinaciones con las que tiene problemas, y agregue a la tabla cuando encuentre cosas nuevas que lo molestan, es decir, <dead_acute> <s> : "'s"
RolKau
También es posible que tenga que establecer GTK_IM_MODULE=xim utilizar las secuencias compuestas definidas en ~/.XCompose, y no las incorporaciones de GTK (!).
RolKau
3

Soy consciente de que esta pregunta ha sido "resuelta" por un tiempo. Sin embargo, quiero presentar mi solución, que combina los hallazgos de esta página con muchas pruebas y experimentación.

Gana US Intl para Linux es una serie de scripts que escribí para resolver el problema de tener problemas con el diseño del teclado nativo de US Intl de Linux, tal como lo escribió el OP. Lo uso principalmente porque mi idioma materno es el español, y todavía uso muchos foros, textos, chats, etc. en inglés (como este sitio).

A tener en cuenta: Esto es en realidad similar (no totalmente igual) al comportamiento de Windows XP US - Diseño de teclado internacional.

Usted puede ir a http://tamh.info/en/win-us-intl-4-linux/ para comprobar que funciona. Estoy en el proceso de mejorarlo, agregando más entradas de XCompose para varios otros casos límite, entre otros cambios.

Tamh
fuente
El enlace no funciona.
tink