Dove Ubuntu memorizza la sua configurazione delle scorciatoie da tastiera?


34

C'è un posto in "Ubuntu" che memorizza un elenco completo di quali tasti / combinazioni / scorciatoie sono legati a cosa?

Quali sono le scorciatoie da tastiera e mouse di Unity? elencare alcune scorciatoie "Unity" per Dash, Launcher, ecc. e Come elencare le combinazioni di tasti Compiz in uso? mostra un modo per elencare i collegamenti compiz, ma sto cercando qualcosa in più (non solo alcuni dei tasti associati solo a Unity o Compiz) sebbene sia un inizio.

Esiste un elenco globale di combinazioni di tasti / combinazioni di tasti / scorciatoie da tastiera in uso, memorizzato da qualche parte in Ubuntu o esiste un modo per compilarle ed elencarle? Uno che si applica a Ubuntu e alle cose in esecuzione (Unity, Compiz, Scorciatoie per programmi, ecc.).

Sicuramente Ubuntu deve memorizzarlo da qualche parte affinché la combinazione di tasti premuta sulla tastiera sia diretta a ciò a cui è connessa? Se non esiste un posto simile in Ubuntu, pubblica un post come risposta, in modo che i futuri utenti, quella ricerca, lo sapranno.


1
Ok, l'ho ribattezzato per essere meno duplicato-y
Jorge Castro,

Due risposte finora hanno sollevato due sequenze di eventi contrastanti. Lakritsbollar ha dichiarato che il gestore di finestre ottiene prima il controllo e poi lo passa alle applicazioni, nfirvine ha dichiarato che le applicazioni ottengono il primo crack e lo passano al gestore di finestre. In che modo è?
James,

Risposte:


10

Il tuo window manager riceve tutti gli eventi chiave prima delle applicazioni, quindi se vuole consumare quegli eventi, lo fa e le tue applicazioni non li riceveranno mai. Se il gestore delle finestre non vuole reagire agli eventi chiave stessi, li passa all'applicazione.

Puoi verificarlo da solo nel modo seguente:

  1. Avvia un terminale.
  2. Avvia xev | grep KeyPress, il Visualizzatore eventi X.
  3. Premi Alt, nota che xevmostra che ha ottenuto l'evento chiave nella sua finestra terminale.
  4. Premi Ctrl, ancora una volta nota che ha xevottenuto l'evento. Prendi nota di come appare la finestra del terminale in questo momento.
  5. Premere Left arrowper passare a un'altra area di lavoro. (Suppongo che tu l'abbia come tasto di scelta rapida per il gestore delle finestre.)
  6. Premi Right arrowper tornare al punto in cui stai correndo xev. Si noti che non ha mai ricevuto eventi chiave per il cambio delle aree di lavoro tramite i tasti freccia sinistra e destra: l'output è lo stesso del passaggio 4.

Quindi vedi che il gestore delle finestre in pratica ottiene tutti gli eventi chiave e se non vuole acquisirli, li passa all'applicazione. L'applicazione può quindi fare lo stesso per i propri widget (come il modo in cui è possibile premere Entertutto il giorno nel browser Web, ma non farà nulla finché non si posiziona il cursore nella barra degli indirizzi o in qualche campo in cui è possibile inserire il testo) .

Spetta all'applicazione impostare i propri collegamenti e le applicazioni sono configurate indipendentemente l'una dall'altra.

In KDE 3.x, se ricordo bene, potresti impostare le scorciatoie predefinite (ad es. Ctrl-sPer il salvataggio) nel Centro di controllo di KDE e si applicherebbe a tutte le applicazioni scritte con il toolkit Qt, ma non so se sia ancora possibile dal loro passaggio a KDE 4.


Non è una risposta al 100%, ma è la chiusura. Fondamentalmente non esiste un posto centrale in cui sono memorizzati i collegamenti / le scorciatoie da tastiera. Window Manager ottiene prima il crack alla pressione dei tasti e quindi le applicazioni attive. Anche Focus ha un ruolo.
James,

20

Da Ubuntu 17.10

Su questi percorsi :

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

È inoltre possibile utilizzare dconf-editor(GUI) o gsettings(CLI).

Da Ubuntu 12.10-17.04

~/.config/dconf/user(in dconf-editor: org.gnome.settings-daemon.plugins.media-keys.custom-keybindings(scorciatoie personalizzate)

~/.config/compiz-1/compizconfig

Fino a Ubuntu 12.04

Le scorciatoie sono posizionate in modo diverso a seconda del desktop di streghe che stai utilizzando (gnome / unity, kde, xfce, lxde, ecc.).

Per gnome, sono sotto
~/.gconf/desktop/gnome/keybindings(scorciatoie personalizzate)

e sotto
~/.gconf/apps/metacity.


11.10 non utilizza GNOME o Metacity.
nfirvine,

Ma il percorso delle scorciatoie funziona ancora mentre lo uso.
desgua,

Quando sembrava che avessi installato Ubuntu 11.10 abbastanza fresca su un macbook pro, la prima posizione non aveva il file keybinding ma la seconda posizione aveva questo:general/ global_keybindings/ window_keybindings/
Victor S

1
La prima posizione è per le scorciatoie personalizzate.
desgua,

1
@AnonymousPlatypus vedi qui per le gsettingsistruzioni
wjandrea,

4

No, non esiste un unico posto in cui sono memorizzate tutte le scorciatoie. Le applicazioni possono scegliere di archiviare le loro configurazioni ovunque scelgano.

Detto questo, stai principalmente guardando a due livelli: il livello dell'applicazione (come Ctrl-C per la copia in Firefox) e il livello del gestore delle finestre (come Win + D per mostrare il desktop). Compiz usa gconf per memorizzare la sua configurazione .

Per le applicazioni, è possibile dividerli approssimativamente per i loro kit di strumenti. Vale a dire, anche le app GTK usano gconf.

Sicuramente Ubuntu deve memorizzarlo da qualche parte affinché la combinazione di tasti premuta sulla tastiera sia diretta a ciò a cui è connessa?

Non proprio. L'applicazione focalizzata viene lanciata per la prima volta a un evento della tastiera X, ma in caso contrario, si diffonde su altre applicazioni, vale a dire il gestore delle finestre. Quindi, puoi avere un gioco che cattura Alt + F4 e non chiude la finestra (maledizione, Jamestown!). Penso che tu stia pensando che vada a qualche router di eventi centrale, quindi confrontato con alcuni database e instradato alla sua destinazione. È più come passare una bottiglia di drink in giro: passa, fai una nuotata se vuoi e passa il resto, oppure prendi tutto e sii avido.

L'ambiente Linux / FOSS (forse avrai notato) è piuttosto democratico e far concordare tutte le applicazioni su un singolo repository di configurazione della tastiera centrale è una follia. Per prima cosa, hai applicazioni non mantenute che sono state scritte molto tempo fa e non lo saprebbero.

Aggiornamento: secondo i documenti Xlib sull'argomento :

A partire dalla finestra di origine, il server X cerca la gerarchia di finestre fino a quando non individua la prima finestra specificata da un client come interessata a questi eventi. Se una delle finestre intermedie ha la sua maschera di non propagazione impostata per proibire la generazione del tipo di evento, gli eventi di tali tipi verranno soppressi.

Anche,

Per ricevere eventi KeyPress, KeyRelease, ButtonPress e ButtonRelease, impostare i bit KeyPressMask, KeyReleaseMask, ButtonPressMask e ButtonReleaseMask nell'attributo maschera evento della finestra.

E puoi impostare un attributo per disabilitare la propagazione .

Il problema è che non dici a X quali chiavi ascoltare, quindi non puoi mai dire a priori quali chiavi l'applicazione ascolta (figuriamoci cosa fanno) o davvero se intendono propagarlo se sono in realtà ascoltandolo. Pertanto, un registro centrale è impossibile a livello di X, quindi dovresti farlo a livello di toolkit, il che è semplicemente praticamente impossibile. : D


Sono arrivato quasi alla stessa conclusione, che il focus determina ciò che gestisce l'input. Ciò può essere osservato aprendo una finestra del browser, quindi aprendo una finestra terminale che ora diventa la finestra attiva. Se si tiene il mouse sulla finestra del browser, si utilizza la rotella di scorrimento per scorrere la finestra del browser anche se la finestra Terminale è la finestra attiva.
James,

Avevo sperato in una risposta facile alla mia domanda, o almeno in un modo semplice per compilare ed elencare le scorciatoie, ma non sembra possibile dato il modo in cui i tasti premuti alla fine arrivano a dove sono definiti. Le scorciatoie da tastiera / le combinazioni di tasti sembrano essere distribuite ovunque e il loro uso tende a dipendere da ciò che è attivo e da dove si concentra l'attuale.
James,

1
Tuttavia, non sono con te sull'applicazione che ottiene l'evento chiave prima del gestore delle finestre. Penso che Window Manager abbia prima crack all'evento e poi applicazioni attive.
James,

1

Le applicazioni memorizzano le scorciatoie in modo indipendente, quindi non esiste un posto centrale in cui sono archiviate.

Non capisco l'intero processo della tastiera di interazione - OS - kernel - X11 - Window Manager - Desktop Environment - Applicazioni, ma se una determinata finestra, come Gedit, ha lo stato attivo della tastiera, può gestirla l'input da solo, e lo fa.


-1

In 11.10, sotto Configurazione del sistema -> Tastiera -> Scorciatoie otterrai un elenco abbastanza grande di esse. È quello che stai cercando?


Sta cercando il file che contiene tutte le scorciatoie, non solo un elenco di esse.
Mark O'Sullivan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.