¿Dónde almacena Ubuntu su configuración de atajo de teclado?

34

¿Hay un lugar en "Ubuntu" que almacene una lista completa de qué teclas / combinaciones / atajos están vinculados a qué?

¿Cuáles son los atajos de teclado y mouse de Unity? enumerar algunos accesos directos de "Unidad" al tablero, iniciador, etc. y ¿Cómo enumerar las combinaciones de teclas de Compiz en uso? muestra una manera de enumerar los enlaces de compiz, pero estoy buscando más que eso (no solo algunos de los enlaces de teclas limitados solo a Unity o Compiz) aunque es un comienzo.

¿Existe una lista global de combinaciones de teclas / combinaciones de teclas / métodos abreviados de teclado en uso, que se almacena en algún lugar de Ubuntu o hay una manera de compilarlos y enumerarlos? Uno que se aplica a Ubuntu y las cosas que se ejecutan en él (Unity, Compiz, Accesos directos a programas, etc.).

¿Seguramente, Ubuntu debe almacenar esto en algún lugar para que la combinación de teclas presionada en el teclado se dirija a lo que está conectado? Si no hay tal lugar en Ubuntu, publíquelo como una respuesta, para que los futuros usuarios, esa búsqueda, lo sepan.

James
fuente
1
Ok, lo he retitulado para que sea menos duplicado
Jorge Castro
Dos respuestas hasta ahora han traído dos secuencias conflictivas de eventos. Lakritsbollar declaró que el administrador de Windows obtiene el control primero y luego lo pasa a las aplicaciones, nfirvine declaró que las aplicaciones primero lo descifran y luego lo pasa al administrador de Windows. ¿Por dónde se va?
James
Se pueden encontrar algunos atajos más en detector-pro.com/2008/07/ubuntu-tweak-keyboard-shortcuts.html
James

Respuestas:

10

Su administrador de ventanas obtiene los eventos clave antes de que lo hagan las aplicaciones, por lo que si quiere consumir esos eventos, lo hace y sus aplicaciones nunca los recibirán. Si el administrador de ventanas no quiere reaccionar a los eventos clave en sí, los pasa a la aplicación.

Puede verificar esto usted mismo de la siguiente manera:

  1. Comience una terminal.
  2. comienzo xev | grep KeyPress , el visor de eventos X.
  3. Presione Alt, tenga en cuenta quexev muestra que obtuvo el evento clave en su ventana de terminal.
  4. Presione Ctrl, nuevamente note quexev consiguió el evento. Tome nota de cómo se ve la ventana de terminal en este momento.
  5. prensa Left arrow para ir a otro espacio de trabajo. (Supongo que tiene eso como una tecla de acceso directo del administrador de ventanas).
  6. Presione Right arrowpara volver a donde está corriendo xev. Tenga en cuenta que nunca recibió ningún evento clave para cambiar las áreas de trabajo a través de las teclas de flecha izquierda y derecha: la salida es la misma que en el Paso 4.

Entonces, verá que el administrador de ventanas en la práctica obtiene todos los eventos clave y, si no quiere capturarlos, los pasa a la aplicación. Luego, la aplicación puede hacer lo mismo para sus propios widgets (como cómo puede presionar Entertodo el día en su navegador web, pero no hará nada hasta que coloque el cursor en la barra de direcciones o en algún campo donde pueda ingresar texto) .

Depende de la aplicación establecer sus propios accesos directos, y las aplicaciones se configuran independientemente una de la otra.

En KDE 3.x, si recuerdo correctamente, podría establecer los accesos directos predeterminados (por ejemplo, Ctrl-spara guardar) en el Centro de control de KDE y se aplicaría a todas las aplicaciones escritas con el kit de herramientas Qt, pero no sé si eso todavía es posible desde su cambio a KDE 4.

Lakritsbollar
fuente
No es una respuesta al 100%, pero está cerca. Básicamente, no hay un lugar central donde se guarden las combinaciones de teclas / atajos. El administrador de ventanas primero se rompe al presionar las teclas y luego a las aplicaciones activas. El foco también juega un papel importante.
James
20

Desde Ubuntu 17.10

En estos caminos :

dconf dump /org/gnome/desktop/wm/keybindings/
dconf dump /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/  # Custom

También puede usar dconf-editor(GUI) o gsettings(CLI).

Desde Ubuntu 12.10-17.04

~/.config/dconf/user(en dconf-editor: org.gnome.settings-daemon.plugins.media-keys.custom-keybindings(accesos directos personalizados)

~/.config/compiz-1/compizconfig

Hasta Ubuntu 12.04

Los accesos directos se colocan de manera diferente según el escritorio de bruja que esté utilizando (gnome / unity, kde, xfce, lxde, etc.).

Para gnome, están debajo
~/.gconf/desktop/gnome/keybindings(atajos personalizados)

y debajo
~/.gconf/apps/metacity.

desgua
fuente
11.10 no usa GNOME o Metacity.
nfirvine
Pero el camino hacia los atajos todavía funciona mientras lo uso.
desgua
Al buscar una instalación bastante nueva de ubuntu 11.10 en un macbook pro, la primera ubicación no tenía el archivo de asignación de teclas, pero la segunda ubicación tenía esto:general/ global_keybindings/ window_keybindings/
Victor S
1
La primera ubicación es para accesos directos personalizados.
desgua
1
@AnonymousPlatypus vea aquí para obtener gsettingsinstrucciones
wjandrea
4

No, no hay un solo lugar donde se guarden todos los accesos directos. Las aplicaciones pueden elegir almacenar sus configuraciones donde quieran.

Dicho esto, en su mayoría está buscando dos niveles: el nivel de aplicación (como Ctrl-C para copiar en Firefox) y el nivel del administrador de ventanas (como Win + D para mostrar el escritorio). Compiz usa gconf para almacenar su configuración .

Para las aplicaciones, puede dividirlas aproximadamente por sus kits de herramientas. A saber, las aplicaciones GTK también usan gconf.

¿Seguramente, Ubuntu debe almacenar esto en algún lugar para que la combinación de teclas presionada en el teclado se dirija a lo que está conectado?

No exactamente. La aplicación enfocada se inicia por primera vez en un evento de teclado X, pero si no lo hace, se dispara a otras aplicaciones, a saber, el administrador de ventanas. Por lo tanto, puedes tener un juego que capture Alt + F4 y no cierre la ventana (¡maldita sea, Jamestown!). Creo que está pensando que va a algún enrutador de eventos central, luego se compara con alguna base de datos y se enruta a su destino. Es más como pasar una botella de bebida: pase, tome un trago si lo desea y pase el resto, o tome todo y sea codicioso.

El entorno Linux / FOSS (puede que hayas notado) es bastante democrático, y lograr que todas las aplicaciones estén de acuerdo en un único repositorio de configuración de teclado central es una tontería. Por un lado, tiene aplicaciones sin mantenimiento que se escribieron hace mucho tiempo y que no sabría al respecto.

Actualización: Según los documentos de Xlib sobre el tema :

Comenzando con la ventana de origen, el servidor X busca la jerarquía de la ventana hasta que localiza la primera ventana especificada por un cliente como interesada en estos eventos. Si una de las ventanas que intervienen tiene su conjunto de máscara de no propagar para prohibir la generación del tipo de evento, se suprimirán los eventos de esos tipos.

También,

Para recibir los eventos KeyPress, KeyRelease, ButtonPress y ButtonRelease, establezca los bits KeyPressMask, KeyReleaseMask, ButtonPressMask y ButtonReleaseMask en el atributo de máscara de evento de la ventana.

Y puede establecer un atributo para deshabilitar la propagación .

El problema es que no le dices a X qué teclas escuchar, por lo que nunca puedes decir a priori qué teclas escucha la aplicación (y mucho menos qué hacen) o si realmente tienen la intención de propagarla si de hecho escuchándolo Por lo tanto, un registro central es imposible en el nivel X, por lo que tendría que hacerlo en el nivel del kit de herramientas, lo que es prácticamente imposible. :RE

nfirvine
fuente
Llegué a la misma conclusión, ese enfoque determina qué maneja la entrada. Esto se puede observar abriendo una ventana del navegador y luego abriendo una ventana de terminal que ahora se convierte en la ventana activa. Si mantiene el mouse sobre la ventana del navegador, use la rueda de desplazamiento, desplazará la ventana del navegador aunque la ventana Terminal sea la ventana activa.
James
Esperaba una respuesta fácil a mi pregunta, o al menos una manera fácil de compilar y enumerar los accesos directos, pero no parece posible dada la forma en que las pulsaciones de teclas finalmente llegan a donde están definidas. Los atajos de teclado / combinaciones de teclas parecen estar extendidos por todas partes y su uso tiende a depender de lo que está activo y dónde está el foco actual.
James
1
Sin embargo, no estoy con usted en la aplicación obteniendo el evento clave antes del administrador de ventanas. Creo que Window Manager tiene primero crack en el evento y luego aplicaciones activas.
James
1

Las aplicaciones almacenan sus accesos directos de forma independiente, por lo que no hay un lugar central, donde se almacenan.

No entiendo todo el proceso del teclado de interacción - SO - kernel - X11 - Administrador de ventanas - Entorno de escritorio - Aplicaciones, pero si una determinada ventana, como Gedit, tiene el foco del teclado, puede manejar la entrada por sí sola, y lo hace.

usuario desconocido
fuente
-1

En 11.10, en Configuración del sistema -> Teclado -> Accesos directos, obtienes una lista bastante grande de ellos. ¿Es esto lo que estás buscando?

Cmorales
fuente
Está buscando el archivo que contiene todos los accesos directos, no solo una lista de ellos.
Mark O'Sullivan