Di mana Ubuntu menyimpan konfigurasi pintasan keyboard-nya?

34

Apakah ada tempat di "Ubuntu" yang menyimpan daftar kunci / kombinasi / pintasan apa yang terikat dengan apa?

Apa itu pintasan keyboard dan mouse Unity? daftarkan beberapa pintasan "Unity" ke Dash, Launcher, dll. dan Bagaimana cara mendaftar ikatan kunci Compiz yang digunakan? menunjukkan cara untuk membuat daftar binding compiz, tapi saya mencari lebih dari itu (tidak hanya beberapa keybindings yang hanya terbatas pada Unity atau Compiz) meskipun ini merupakan permulaan.

Apakah ada daftar global binding / kombinasi tombol / Pintasan keyboard yang digunakan, yang disimpan di suatu tempat di Ubuntu atau apakah ada cara untuk menyusun dan mendaftarnya? Satu yang berlaku untuk Ubuntu dan hal-hal yang berjalan di dalamnya (Unity, Compiz, Shortcuts to Programs, dll.).

Tentunya, Ubuntu harus menyimpan ini di suatu tempat agar kombinasi tombol yang ditekan pada keyboard diarahkan ke apa yang terhubung dengannya? Jika tidak ada tempat seperti itu di Ubuntu, maka poskan sebagai jawaban, sehingga pengguna di masa depan, pencarian itu, akan tahu.

James
sumber
1
Oke, saya beri judul ulang menjadi lebih sedikit duplikat-y
Jorge Castro
Dua jawaban sejauh ini telah memunculkan dua urutan peristiwa yang saling bertentangan. Lakritsbollar menyatakan manajer Window mendapatkan kontrol terlebih dahulu dan kemudian meneruskannya ke aplikasi, nfirvine menyatakan aplikasi mendapatkan celah pertama pada itu kemudian meneruskannya ke manajer Window. Di mana itu?
James
Beberapa pintasan lagi dapat ditemukan di detector-pro.com/2008/07/ubuntu-tweak-keyboard-shortcuts.html
James

Jawaban:

10

Pengelola jendela Anda mendapatkan peristiwa penting apa pun sebelum aplikasi melakukannya, jadi jika ingin mengkonsumsi peristiwa itu, ia melakukannya dan aplikasi Anda tidak akan pernah menerimanya. Jika manajer jendela tidak ingin bereaksi terhadap peristiwa utama itu sendiri, itu meneruskannya ke aplikasi.

Anda dapat memverifikasi ini sendiri dengan cara berikut:

  1. Mulai terminal.
  2. Mulai xev | grep KeyPress, penampil acara X.
  3. Tekan Alt, perhatikan yang xevmenunjukkan bahwa ia mendapatkan acara utama di jendela terminalnya.
  4. Tekan Ctrl, sekali lagi perhatikan bahwa xevada acara. Perhatikan seperti apa tampilan terminal saat ini.
  5. Tekan Left arrowuntuk pergi ke ruang kerja lain. (Saya berasumsi Anda memilikinya sebagai kunci pintas window manager.)
  6. Tekan Right arrowuntuk kembali ke tempat Anda menjalankan xev. Perhatikan bahwa ia tidak pernah menerima acara utama apa pun untuk Anda berpindah ruang kerja melalui tombol panah kiri dan kanan - hasilnya sama seperti pada Langkah 4.

Jadi, Anda melihat bahwa manajer jendela dalam praktik mendapatkan semua peristiwa penting dan jika tidak ingin menangkapnya, ia meneruskannya ke aplikasi. Aplikasi kemudian melakukan hal yang sama untuk widgetnya sendiri (seperti bagaimana Anda dapat menekan Entersepanjang hari di browser web Anda tetapi itu tidak akan melakukan apa-apa sampai Anda meletakkan kursor di bilah alamat atau bidang di mana Anda dapat memasukkan teks) .

Terserah aplikasi untuk mengatur pintasannya sendiri, dan aplikasi dikonfigurasikan secara independen satu sama lain.

Di KDE 3.x, jika saya ingat dengan benar, Anda bisa mengatur pintasan default (misalnya Ctrl-suntuk disimpan) di Pusat Kontrol KDE dan itu akan berlaku untuk semua aplikasi yang ditulis dengan toolkit Qt, tapi saya tidak tahu apakah itu masih mungkin sejak mereka beralih ke KDE 4.

Lakritsbollar
sumber
Ini bukan jawaban 100%, tapi ini penutupnya. Pada dasarnya tidak ada tempat sentral di mana binding / pintasan keyboard disimpan. Window manager mendapatkan celah pertama pada penekanan tombol dan kemudian aplikasi yang aktif. Fokus juga berperan.
James
20

Sejak Ubuntu 17.10

Di jalur ini :

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

Anda juga dapat menggunakan dconf-editor(GUI) atau gsettings(CLI).

Sejak Ubuntu 12.10-17.04

~/.config/dconf/user(di dconf-editor: org.gnome.settings-daemon.plugins.media-keys.custom-keybindings(pintasan khusus)

~/.config/compiz-1/compizconfig

Sampai Ubuntu 12.04

Cara pintas ditempatkan berbeda tergantung pada desktop penyihir yang Anda gunakan (gnome / unity, kde, xfce, lxde, dll).

Untuk gnome, mereka berada di bawah
~/.gconf/desktop/gnome/keybindings(pintasan khusus)

dan di bawah
~/.gconf/apps/metacity.

desgua
sumber
11.10 tidak menggunakan GNOME atau Metacity.
nfirvine
Tetapi jalur menuju pintasan masih berfungsi saat saya menggunakannya.
desgua
Ketika mencari makan Ubuntu 11.10 yang cukup baru instal pada macbook pro, lokasi pertama tidak memiliki file keybinding tetapi lokasi kedua memiliki ini:general/ global_keybindings/ window_keybindings/
Victor S
1
Lokasi pertama adalah untuk pintasan khusus.
desgua
1
@AnonymousPlatypus lihat di sini untuk gsettingspetunjuk
wjandrea
4

Tidak, tidak ada satu tempat di mana semua pintasan disimpan. Aplikasi dapat memilih untuk menyimpan konfigurasi mereka di mana pun mereka pilih.

Yang mengatakan, Anda sebagian besar melihat dua level: level aplikasi (seperti Ctrl-C untuk copy di Firefox), dan level window manager (seperti Win + D untuk menampilkan desktop). Compiz menggunakan gconf untuk menyimpan konfigurasinya .

Untuk aplikasi, Anda dapat membaginya secara kasar dengan toolkit mereka. Yaitu, aplikasi GTK juga menggunakan gconf.

Tentunya, Ubuntu harus menyimpan ini di suatu tempat agar kombinasi tombol yang ditekan pada keyboard diarahkan ke apa yang terhubung dengannya?

Tidak terlalu. Aplikasi yang difokuskan mendapat tendangan pertama pada acara keyboard X, tetapi jika tidak, itu akan muncul ke aplikasi lain, yaitu window manager. Dengan demikian, Anda dapat memiliki gim yang menangkap Alt + F4 dan tidak menutup jendela (sialan, Jamestown!). Saya pikir Anda berpikir itu pergi ke beberapa router acara pusat, kemudian dicocokkan dengan beberapa database, dan diarahkan ke tujuannya. Ini lebih seperti melewati sebotol minuman di sekitar: lulus, minum sedikit jika Anda ingin dan melewati sisanya, atau mengambil semuanya dan menjadi serakah.

Lingkungan Linux / FOSS (Anda mungkin telah memperhatikan) cukup demokratis, dan mendapatkan semua aplikasi untuk menyetujui satu repositori konfigurasi keyboard pusat adalah tugas yang bodoh. Untuk satu hal, Anda memiliki aplikasi yang tidak terawat yang telah ditulis sejak lama dan tidak akan mengetahuinya.

Pembaruan: Menurut dokumen Xlib pada subjek :

Dimulai dengan jendela sumber, server X mencari hierarki jendela sampai menemukan jendela pertama yang ditentukan oleh klien sebagai memiliki minat pada peristiwa ini. Jika salah satu jendela intervensi memiliki do-not-propagate-mask yang disetel untuk melarang pembuatan tipe acara, kejadian tipe tersebut akan ditekan.

Juga,

Untuk menerima peristiwa KeyPress, KeyRelease, ButtonPress, dan ButtonRelease, atur KeyPressMask, KeyReleaseMask, ButtonPressMask, dan ButtonReleaseMask bit dalam atribut event-mask dari jendela.

Dan Anda dapat mengatur atribut untuk menonaktifkan propagasi .

Masalahnya adalah, Anda tidak memberi tahu X tombol mana yang harus didengarkan, jadi Anda tidak pernah bisa memberi tahu apriori apa kunci yang didengarkan aplikasi (apalagi apa yang mereka lakukan) atau benar-benar apakah mereka berniat untuk menyebarkannya jika sebenarnya mendengarkannya. Dengan demikian, registri pusat tidak mungkin pada level X, jadi Anda harus melakukannya di tingkat toolkit, yang praktis tidak mungkin. : D

nfirvine
sumber
Saya sampai pada kesimpulan yang hampir sama, bahwa fokus menentukan apa yang menangani input. Tersebut dapat diamati dengan membuka jendela browser, kemudian membuka jendela terminal yang sekarang menjadi jendela aktif. Jika Anda memegang mouse di atas jendela browser lalu menggunakan roda gulir itu akan menggulir jendela browser meskipun jendela Terminal adalah jendela aktif.
James
Saya berharap jawaban yang mudah untuk pertanyaan saya, atau setidaknya cara mudah untuk mengkompilasi dan mendaftar pintasan, tetapi sepertinya tidak mungkin mengingat cara menekan tombol pada akhirnya sampai ke tempat mereka ditentukan. Pintasan keyboard / keybindings tampaknya tersebar di mana-mana dan penggunaannya cenderung bergantung pada apa yang aktif dan di mana fokus saat ini.
James
1
Namun, saya tidak dengan Anda pada aplikasi mendapatkan acara utama sebelum manajer jendela. Saya pikir Window Manager memiliki celah pertama pada acara tersebut dan kemudian aplikasi yang aktif.
James
1

Aplikasi menyimpan pintasan mereka secara independen, sehingga tidak ada tempat sentral, di mana mereka disimpan.

Saya tidak mengerti keseluruhan proses interaksi keyboard - OS - kernel - X11 - Window Manager - Lingkungan Desktop - Aplikasi, tetapi jika jendela tertentu, seperti Gedit, memiliki fokus keyboard, ia dapat menangani input sendiri, dan ia melakukannya.

Pengguna tidak diketahui
sumber
-1

Di 11.10, di bawah Konfigurasi Sistem -> Keyboard -> Pintasan Anda mendapatkan daftar yang cukup besar. Apakah itu yang Anda cari?

Cmorales
sumber
Dia mencari file yang berisi semua pintasan, bukan hanya daftar saja.
Mark O'Sullivan