Enlace Super a Ctrl
¿Qué hay de vincular su Windows/Logo/Super
tecla izquierda para actuar como otra Ctrl
tecla?
Puede lograr eso con los siguientes comandos xmodmap:
remove mod4 = Super_L
keysym Super_L = Control_L
add Control = Control_L
Suponiendo que guardó las líneas anteriores ya super_as_ctrl.xmodmap
que puede probar el efecto ejecutando
xmodmap super_as_ctrl.xmodmap
Para que el cambio sea permanente (reinicio / reinicio supervivientes) cambie el nombre del archivo a .Xmodmap
su carpeta de inicio.
(Lo anterior se probó en el sistema en vivo Ubuntu 11.10, pero debería ser el mismo para otras distribuciones de Linux)
Ajuste de accesos directos Copiar / Pegar para su programa de terminal
Habiendo vinculado Super
a Ctrl
usted ahora puede usar Super-C
para copiar casi en todas partes. La única excepción común es su programa de terminal. Sin embargo, puede redefinir los accesos directos allí.
Descubrí que incluso gnome-terminal
tiene esta opción por ahora (no la tuve hasta que me acostumbré de Ctrl-Shift-C
todos modos). En caso de que use ese, vaya al Edit / Keyboard Shortcuts...
menú y asigne Ctrl-C
copiar y Ctrl-V
pegar. Debería ser similar para konsole
etc.
Y no se preocupe, no perderá la capacidad de terminar un programa utilizando un acceso directo. Después de volver a enlazar el acceso directo de copia para el terminal, puede usarlo Ctrl-Shift-C
como solía Ctrl-C
hacerlo antes. El terminal no distingue aquí si se presiona Shift o no. Y el atajo ya no se detecta para la copia. Alternativamente, vuelva a vincular la terminación a otro acceso directo, como MountainX sugiere en su respuesta.
XF86Copia, etc.no funciona
En cuanto a los símbolos clave para copiar y pegar: aparentemente no tienen ningún efecto. Lo probé rápidamente asignando la acción de copia a Shift-ScrollLock (no estaba en uso y quería probar con una tecla sin modificador):
xmodmap -e 'keycode 78 = Scroll_Lock XF86Copy Scroll_Lock'
Presionarlo no tuvo ningún efecto, ni con XF86AudioMute. Sin embargo, funcionó al asignar la letra 'a'. Así que supongo que hay un problema específico con estos símbolos de teclas especiales XF86.
Si desea vincular solo algunas secuencias de la forma Super + x, Super + c, Super + v a otras secuencias como Ctrl + x, Ctrl + c, Ctrl + v, por ejemplo, para que (como el OP lo desee) estas En particular, las secuencias de Superclave generalmente se asignarán para cortar y pegar sin afectar ningún otro uso de la Superclave en su sistema, es posible usando solo la extensión XKB. El siguiente procedimiento describe los pasos y ofrece dos ejemplos diferentes de los detalles para dos configuraciones de teclado de inicio diferentes; con suerte eso proporcionará suficiente información para adaptarse a su sistema. Se supone que se siente cómodo creando y editando archivos en su sistema, incluidos los que se encuentran en ubicaciones del sistema como
/usr/share/X11/xkb
.Decida dónde desea que resida su árbol de configuración XKB. Primero encuentre el sistema uno. Normalmente está en / usr / share / X11 / xkb, y no estoy muy seguro de cómo encontrarlo si no está allí; simplemente puede buscar en su sistema directorios llamados "xkb". De todos modos, una vez que lo haya encontrado, puede modificar el sistema en su lugar o puede usar cualquier directorio de su elección. La ventaja de utilizar el directorio del sistema es que puede invocar sus cambios con mucha más facilidad, pero el inconveniente es que las futuras actualizaciones del sistema podrían sobrescribir sus cambios (se le ha advertido). En cualquier caso, todos los nombres de archivo mencionados a continuación son relativos a este directorio, al que me referiré cuando sea necesario como $ XKBLOCAL $, y todos los comandos asumen que ese es su directorio actual.
Determine qué "tipo" de clave XKB son las claves x, c, v actuales. La forma más fácil de hacerlo es a través del comando
xkbcomp -a $DISPLAY - | grep -C 6 c,
(tenga en cuenta que la coma se incluye intencionalmente en el patrón). En mi primer ejemplo de configuración, esto produce:mientras que en mi otra configuración de ejemplo esto produce
El resultado es que en el primer ejemplo, las claves relevantes son del tipo "ALPHABETIC", mientras que en el segundo ejemplo son del tipo "FOUR_LEVEL". Dependiendo de la configuración de su teclado, puede encontrar que son de algún otro tipo. En lo que sigue, el tipo se denominará $ TYPE $, que debe reemplazar con la cadena ALPHABETIC real o lo que sea en los comandos a continuación.
Encuentre la definición de $ TYPE $ y cópiela en un nuevo archivo en el directorio $ XKBLOCAL $ / types. Aquí hay un comando que hace precisamente eso:
xkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpaste
. El nombre del archivo "cutpaste" que elegí es arbitrario, use el nombre que desee, pero tenga en cuenta que tendrá que referirse a este archivo constantemente en los pasos posteriores. En la primera configuración, este archivo obtiene el contenidoy en el otro ejemplo obtiene los contenidos
Edite los tipos de archivo / pasta de corte para hacer dos cosas: agregue un preámbulo y postamble que lo convierta en una cláusula XKB adecuada, y modifique el nombre del tipo y la definición del tipo para agregar un nivel más producido por el modificador correspondiente a Super. Debe verificar cuál es ese modificador en su sistema, es probable que sea Mod4 como se usa a continuación. Las modificaciones necesarias deben ser evidentes a partir de los dos ejemplos de versiones finales de tipos / pasta de corte, a saber:
y
Copie las definiciones de símbolos de clave que fueron generadas por grep en el segundo paso en un segundo nuevo archivo de símbolos / corte, y agregue preámbulos y postamble similares, y modifique las definiciones para usar los nuevos tipos y agregue acciones a la definición para manejar la clave deseada producido por las versiones Super. Los resultados de esto en nuestros dos ejemplos son:
y
Tenga en cuenta que en el segundo ejemplo también eliminé algunos de los espacios en blanco (no significativos) para mantener la longitud de la línea bajo un poco de control.
Encuentre el nombre del conjunto de reglas que XKB está usando actualmente. Eso es fácil, se muestra en el resultado de
setxkbmap -query
. En mi caso, fue "evdev".Copie la versión del sistema de rules / evdev (o cualquiera que sea el nombre de su conjunto de reglas) en $ XKBLOCAL $ / rules / evdev y agregue reglas que apunten a las opciones que hemos creado. Aquí tiene dos opciones: puede copiar todo evdev o solo las partes que mencionan el modelo de teclado, el diseño, la variante y las opciones que realmente está utilizando. Por supuesto, si está modificando los archivos del sistema en su lugar, no necesita copiar, solo editar.
En este caso, lo que se agrega es idéntico independientemente de la configuración inicial del teclado, por lo que solo hay un ejemplo. Encuentra la sección del archivo de reglas que comienza con
! option = symbols
y agrega una líneacutpaste:super = +cutpaste
a esa sección, y también encuentra la sección del archivo de reglas que comienza con! option = types
y una líneacutpaste:super = +cutpaste
a esa sección también.Copie la versión del sistema de evdev.lst y agregue una línea para su nueva opción. Tenga en cuenta que el nombre de este archivo simplemente corresponde al nombre del archivo de reglas con .lst adjunto. Como en el paso anterior, puede copiar todo el archivo o solo la parte a la que hace referencia el modelo, el diseño, la variante y las opciones que está utilizando. Solo necesita encontrar la sección de este archivo que comienza con
! option
y agregar una línea como esta:cutpaste:super Add super equivalents of cut and paste operations
a esa sección.OK, ahora todos los archivos de configuración están en su lugar. Si modificó los archivos del sistema, ahora puede invocar su nueva opción con
setxkbmap -option cutpaste:super
. Por otro lado, si no lo hizo, debe informar a setxkbmap dónde está su directorio $ XKBLOCAL $. Lo que es peor, el servidor tampoco sabe dónde está ese directorio, y setxkbmap no lo sabe (o tal vez no puede, ya que en última instancia el servidor podría estar ejecutándose en otra máquina). Por lo tanto, debe canalizar la salida de setxkbmap a xkbcomp, y también decirle a ese comando dónde está su directorio $ XKBLOCAL. La línea de comando completa es por lo tantosetxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY
.Esperemos que esto sea de ayuda / interés para alguien, ya que la buena documentación / referencia definitiva de XKB es escasa. Una referencia muy útil fue http://madduck.net/docs/extending-xkb/ .
fuente
setxkbmap -option
. Mi configuración local era casi idéntica al ejemplo FOUR_LEVEL con la excepción de algunos símbolos Group2, Group3 que dejé fuera del archivo de símbolos parciales para que mi archivo tuviera el mismo aspecto que los ejemplos.Esto es lo que hago. No es la solución definitiva, pero intenté lograr la solución definitiva y no pude llegar después de mucho esfuerzo. Así que me decidí por algo que es simple y que funciona para más del 90% de lo que necesito. Puedo implementarlo en cualquier computadora a la que vaya (o en cualquier instalación nueva de Linux) en cuestión de minutos. Es muy simple.
En la aplicación de terminal X, configure las preferencias de acceso directo. He hecho esto tanto en Gnome como en KDE. En Konsole, por ejemplo, vaya a Menú> Configuración> Configurar accesos directos. Hay un menú similar en el terminal Gnome X. Simplemente seleccione el acceso directo (por ejemplo, "copiar") e ingrese la secuencia de teclas deseada.
En caso de que los accesos directos de copiar y pegar del terminal entren en conflicto con los comandos del terminal, también hay una solución fácil para eso. Por ejemplo, ¿qué pasa si alguien quiere usar CTRL-C para la copia (por lo que el terminal X se ajusta al estándar CUA)?
En ese caso, puede cambiar fácilmente las combinaciones de teclas stty (en .bashrc). Continuando con CTRL-C por ejemplo de copia, digamos que desea que la tecla de interrupción ahora sea CTRL-b (para "interrupción"). Esto logra que:
Entonces fuente .bashrc.
La solución completa es tan simple como usar la configuración de los terminales X para cambiar los accesos directos y luego, opcionalmente, resolver conflictos con stty con un comando de eco de una línea. Muy simple y cubre casi todo lo que necesito.
fuente
Probablemente la clave de Windows es la clave modificadora. ejecuta esto y vuelve a intentarlo:
fuente
xmodmap -e 'remove Mod1 = Meta_L'
y probar sus comandos después) funcionó bien para mí.Tomé algo de lo que Glen Whitney había dicho y logré usar ese conocimiento para mapear el comportamiento de manipulación de texto o palabras peores de macOS en un mapa de teclas personalizado.
Ya resolví el problema de copiar y pegar Ctrl vs Super sin involucrar esa solución específica, pero como dije, fue muy útil para otras cosas. También he evitado cosas como xmodmap, ya que tengo el objetivo de admitir completamente Wayland en algún momento. Kinto usa el xkb nativo y respeta el macOS esperado como el comportamiento del terminal.
https://github.com/rbreaves/kinto
https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0
Aquí también hay un Gist, si solo quieres ver lo que está en el centro de todo, no alternará tu mapa de teclas cuando sea necesario. El Gist tampoco incluye archivos de mapa de teclas xkb personalizados que configuran cursores de estilo macOS / manipulaciones de palabras que usan Cmd y las teclas de flecha.
https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb
contenido esencial
fuente