Quiero reasignar mi AltGR + Right_Windows pero no puedo entender cómo. No importa lo que intente, al presionar la tecla derecha de Windows se emite el nombre del teclado cuando se presiona alt derecha o no.
Estos son los contenidos del archivo xmodmap que estoy probando en este momento. En mi teclado, 38 es el código de tecla para "a", 48 es el código de tecla para una cita / doble cita y 134 es el código de tecla para la tecla de Windows correcta.
keycode 38 = 1 2 3 4 5 6 7 8
keycode 48 = 1 2 3 4 5 6 7 8
keycode 134 = 1 2 3 4 5 6 7 8
Cuando presiono Right_Alt + apostrophe, genera 5 pero Right_Alt + a y Right_Alt + Right_Windows dan 1 (tanto cuando se presiona right alt como cuando no), que no es lo que quería.
Mi distribución de teclado actual es us(alt-intl)
y la alt correcta aparentemente está configurada para actuar como AltGr / Iso_Level3_Shift. La salida de xmodmap -pm
es la siguiente:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
xev
y presionar las diversas combinaciones de teclas para ver si el hardware y hasta el nivel de Xwindows están presionando teclas distinguibles para comenzar.us(cz_sk_de)
distribución del teclado y xmodmap.Respuestas:
Usando xmodmap para configurar asignaciones de teclas individuales
Es hora de anotar los resultados de mi propia investigación.
Pensé que debía haber perdido algo en xmodmap y que simplemente no está muy bien documentado y la gente está confundida. Pero resultó que el diseño de X.Org con respecto a XKB y xmodmap es simplemente estúpido.
Error épico: xmodmap
Puede usar xmodmap para redefinir las asignaciones existentes siempre y cuando esas asignaciones realmente existan en su diseño de teclado original. En el caso descrito en la pregunta, no puede extender el comportamiento de ninguna tecla para usar AltGr. Solo puede cambiar los símbolos de teclas AltGr para códigos de teclas que ya están usando AltGr.
Ver también: http://blog.azundris.com/archives/193-X-treme-pain-XKB-vs-XModMap.html
Solución alternativa: Mode_switch
Esta solución se describe en la respuesta de @ Ned64. Puedes reasignar
AltGr
deISO_Level3_Shift
aMode_switch
.Utilicé con éxito la siguiente línea de comando para reasignar
AltGr
.La desventaja es que romperá la distribución actual del teclado, pero puede recrear todas las asignaciones una por una utilizando
xmodmap
@ Ned64 ya mencionado.Solución alternativa: diseño de teclado modificado
Lo estoy usando
us(cz_sk_de)
como diseño de mi teclado e intenté modificarlo agregando la configuración para las teclas que quería extender.(En la sección
xkb_symbols "cz_sk_de"
de/usr/share/X11/xkb/symbols/us
)Simplemente restablezca la distribución del teclado para usar la versión modificada.
Ahora se puede (1) tipo checas e inglesas comillas y elipses que utilizan combinaciones de
,
,.
,Shift
yAltGr
las teclas y / o (2) reasignar esas llaves utilizandoxmodmap
ahora que se definen.La principal desventaja es que
setxkbmap
no parece admitir ubicaciones arbitrarias para diseños de teclado y, por lo tanto, debe escribir en la configuración del sistema en lugar de su directorio de inicio.Conclusión
Esto parece ser un ejemplo de diseño excesivo y mal diseñado de X.Org donde incluso algo tan trivial como mapear un código clave y una combinación de modificadores en un símbolo resulta ser un problema. Las herramientas no parecen proporcionar una forma razonable de cambiar las asignaciones de teclas individuales en la configuración del usuario sin ningún efecto secundario.
fuente
Paso uno: haga que AltGr sea utilizable
Descubrí que las Claves modificadas por AltGr solo funcionan en mi sistema si también reasigno la Clave AltGr de
Mode_switch
esta manera:Si tiene un teclado diferente, es posible que deba reemplazarlo
108
con su código, verifique escribiendoentonces usa ese número. (La clave normalmente se llama
Alt_R
en sistemas que conozco).Alternativamente, esto también puede funcionar si Alt_R aún no está asignado a otra cosa:
Su modificador AltGr ahora servirá en la posición 3 (con Shift: 4) dentro de su lista de modificadores.
Paso dos: asigne las teclas según sea necesario
Puede asignar variantes AltGr para cualquier tecla de su teclado que desee. Si tiene otras teclas que no se corresponden con el código deseado ahora, debe reasignarlas al igual que sus otras teclas (las que probó).
Paso tres: Convierte esto en un script
Ahora solo tome sus
xmodmap
comandos y escriba todas (pero solo) modificaciones en su teclado predeterminado en un archivo, que es más rápido que cargar un mapa de teclas completo. Inicie esta secuencia de comandos una vez después de cada inicio de sesión y siempre que algún proceso restablezca el mapa de teclas.He experimentado mucho con esto a lo largo de los años, bajo Solaris, IRIX y Linux, y que yo sepa, esta es la única solución para hacer que AltGr funcione, y me ha funcionado bien durante más de 20 años.
fuente
xmodmap -pm
y,xmodmap -pke | grep -w SOMECHANGEDKEY
en esta situación, una clave que ya no funciona.xmodmap
acuerdo con su salida)xmodmap -pke | grep Alt_R
no devuelve ningún resultado en mi sistema. Mi sistema es Lenovo ThinkPad X230 con Gentoo estable. También lo intentégrep -i
sin resultado.us(cz_sk_de)
dejaron de funcionar para mí. Por lo tanto, esta respuesta no funciona para mí y no funcionará para muchos otros.Aparentemente, xmodmap no lee el AltGR predeterminado como debería, puede estar limitado a diseños de teclado específicos, tal vez todos sean diseños que no sean de EE. UU. De cualquier manera, el verdadero problema es que mientras puede reemplazar el diseño de su teclado, algunas personas podrían Realmente no quieren hacer eso, ya que necesitan usar caracteres especiales en el diseño al que están acostumbrados (como diseños de teclado escandinavos que tienen caracteres como ðþæöáúíóåů, etc.) que sería difícil de configurar para otros diseños de teclado.
Tu puedes correr
Para volver a vincular AltGR a algo con lo que xmodmap puede funcionar, y de hecho, la tercera asignación de un keycoad se generará cuando presione AltGR ahora, sin embargo, romperá por completo el diseño original del teclado ya que las combinaciones de teclas AltGR ya no funcionarán con la tecla AltGR.
He encontrado dos soluciones que no rompen mi diseño de teclado existente y no implica cambiar diseños , uno es vincular Mode_switch a otra tecla.
La clave ideal para esto es Super_R, que está justo al lado de AltGR, el código clave es 134. Sin embargo, no todos los teclados los tienen y en mi caso en una computadora portátil tampoco lo tengo, así que decidí vincularlo al último clave restante que prácticamente nunca uso, Control correcto.
Tengo un diseño de teclado físico americano, pero la configuración de diseño europeo, y falta la tecla menor / mayor / barra (también conocida como ISO_Backslash, aunque eso no es reconocido por xmodmap), generalmente falta junto a Z en dichos teclados. Lo vinculé al Menú (135) pero podría servir como una alternativa a R_Ctrl y Super_R
Esta es una solución sucia, supongo.
La segunda solución tardó un poco más en darse cuenta. Usando sxhkd (alternativa de xbindkeys)
Si agrega esto a ~ / .config / sxhkd / sxhkdrc :
Su AltGR funcionará normalmente, pero cuando se presiona, Mode_switch se alterna (como mayúsculas, pero para Mode_switch) y cualquier tecla xmodmap que lo use se bloqueará en el modo AltGR hasta que presione AltGR nuevamente para alternarlo. Debería ser un asunto simple hacer un script para alternarlo automáticamente cuando se suelta la tecla, pero mis intentos de hacerlo fueron bastante defectuosos, por decir lo menos.
fuente