Nonaktifkan semua pintasan keyboard Persatuan menggunakan baris perintah

8

Saya ingin tahu bagaimana cara menonaktifkan SEMUA pintasan keyboard melalui terminal. Saya tahu Anda dapat menonaktifkannya dengan masuk ke:

pengaturan sistem> keyboard> pintasan

tapi saya ingin menonaktifkannya melalui terminal. ada yang tahu bagaimana ini bisa dilakukan?

pengguna278551
sumber
Pintasan keyboard apa yang sedang Anda bicarakan? Ada banyak set yang berbeda. Anda memiliki beberapa yang berfungsi pada baris perintah, beberapa yang mengaktifkan hal-hal GUI dll. Mereka sepenuhnya terpisah
terdon
Jika Anda masuk ke pengaturan sistem> keyboard> pintasan ada semua pintasan di ubuntu dan saya ingin menonaktifkan semuanya.
user278551
OK, jadi yang Anda maksud hanya pintasan GUI. Saya berasumsi Anda menggunakan Ubuntu default sehingga lingkungan desktop Anda adalah Unity. Apakah itu benar?
terdon
ya itu benar.
user278551

Jawaban:

11

Saya tidak tahu mengapa Anda ingin melakukan ini dan saya harus memperingatkan Anda bahwa mungkin akan sulit untuk mendapatkan pintasan kembali. Jika ini benar-benar yang ingin Anda lakukan, perintah di bawah ini akan menonaktifkan semua pintasan keyboard. Baik yang diatur melalui GUI Unity dan apa pun yang mungkin telah Anda setel gunakanccsm

A. Nonaktifkan keyindings Unity

  1. Pertama buat cadangan dari binding saat ini sehingga Anda dapat mengaktifkannya kembali nanti

    gsettings list-recursively org.gnome.desktop.wm.keybindings | 
       perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/' | 
        while IFS=$'\t' read -r key val; do echo -e "$key\t$val"; done > old_settings
    

    Ini akan membuat file yang disebut old_settingsdalam format berikut:

    schema key <TAB> value
    

    Sebagai contoh:

    org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
    
  2. Sekarang nonaktifkan pintasan

    gsettings list-recursively org.gnome.desktop.wm.keybindings | 
        perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/' | 
            while IFS=$'\t' read -r key val; do gsettings set $key ['']; done
    

    Penjelasan

    • gsettings list-recursively org.gnome.desktop.wm.keybindings : ini mencantumkan semua ikatan kunci dan nilainya saat ini
    • perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/': ini hanya menambahkan karakter TAB ( \t) yang memisahkan nilai dari kunci. Langkah ini diperlukan untuk dapat membacanya dengan benar di langkah selanjutnya.
    • while IFS=$'\t' read -r key val: melalui setiap baris dan membaca kunci $kdan nilainya menjadi $val. $IFS=$'\t'berarti terbelah pada tab sehingga kunci dan nilai dibaca dengan benar.
    • gsettings set $key [''] : ini sebenarnya menetapkan nilai menjadi kosong, secara efektif menonaktifkan pintasan Anda.

    Perhatikan bahwa Anda mungkin harus keluar dan masuk kembali lagi agar ini berlaku.

  3. Dapatkan (sebagian) pintasan Anda kembali

    while IFS=$'\t' read -r key val; do 
        gsettings set "$key" "$val"
    done < old_settings 
    

    PERINGATAN : Ini mungkin tidak akan berfungsi untuk semua pengaturan karena beberapa dari mereka tampaknya memiliki parameter tambahan @asdalam nama kunci dan saya tidak tahu bagaimana menghadapinya. Seperti yang saya katakan, ini semua bukan ide yang sangat bagus.

B. Nonaktifkan pintasan khusus yang Anda atur ccsm

gsettings set org.gnome.settings-daemon.plugins.media-keys active false

Kali ini, mendapatkannya kembali itu mudah. Yang perlu Anda lakukan adalah menjalankan

gsettings set org.gnome.settings-daemon.plugins.media-keys active true
terdon
sumber
Terima kasih kerja bagus, saya pikir masih melewatkan pintasan Compiz?
user.dz
@Sneetsher bagian B. harus berurusan dengan pintasan compiz yang ditentukan pengguna. Tidak yakin tentang yang standar. Biarkan saya periksa.
terdon
Menambahkan skrip untuk menjadi sedikit lebih banyak dari front-end yang dapat digunakan untuk melakukan hal di atas: github.com/fatso83/dotfiles/blob/master/utils/scripts/…
oligofren
Mengenai "Saya tidak tahu mengapa Anda ingin melakukan ini" kasus penggunaan untuk semua orang di tim dev saya adalah bahwa pintasan default tumpang tindih dengan ikatan utama yang diketahui dalam program populer. Dalam kasus kami, sebagian besar pintasan IntelliJ tidak berfungsi, dan kami semua benar-benar hanya membutuhkan segelintir pintasan Gnome (seperti Alt-Tab dan pengubahan ukuran jendela).
oligofren
@oligofren yakin, tetapi mengapa Anda kemudian harus menonaktifkan semua pintasan dari terminal? Itu yang saya temukan aneh. Tapi bagaimanapun, untuk masing-masing mereka sendiri :)
terdon
3

Saya membangun jawaban @ terdon dan membuat skrip untuk melakukan hal yang sama , tetapi melakukannya dengan cara yang lebih ramah pengguna.

Anda bisa menggunakannya seperti ini:

gnome-key-bindings --unset-all --except 'close|switch-applications'

Karena saya suka menggunakan keybindings default Alt-F4 dan Alt-Tab (dan sebaliknya menggunakan shift), ini akan menghapus semua keybindings kecuali ini.

Ini juga memiliki menu bantuan yang bagus:

List/disable/enable/set gnome-key-bindings

gnome-key-bindings [-h | option] [value]

Options
   --list              Lists all the current keybindings
   --set=key           Set a specific keybinding
   --unset=key         Unsets a specific keybinding
   --unset-all         Unsets all keybindings
   --except=REGEX      Filter out keys matching REGEX from being unset
   --print-default     Prints the default shortcuts per Ubuntu 18.04

Examples:

     Clearing all keys except a few:
       gnome-key-bindings --unset-all --except "close|switch-applications|switch-input-source|show-desktop"

     Setting a shortcut
       gnome-key-bindings --set=maximize "<Super>Up"    

Untuk menggunakannya di komputer Anda sendiri

curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/gnome-key-bindings -o gnome-key-bindings
curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/easyoptions.sh -o easyoptions.sh
curl -s https://raw.githubusercontent.com/fatso83/dotfiles/master/utils/scripts/easyoptions.rb -o easyoptions.rb
chmod +x ./gnome-key-bindings
sudo mv ./gnome-key-bindings easyoptions.* /usr/local/bin/
oligofren
sumber
0

Untuk gnome di Ubuntu 18.04, saya menemukan ini berfungsi:

gsettings list-keys org.gnome.shell.keybindings | xargs -I@ gsettings set org.gnome.shell.keybindings @ ['']
gsettings list-keys org.gnome.mutter.keybindings | xargs -I@ gsettings set org.gnome.mutter.keybindings @ ['']
gsettings list-keys org.gnome.settings-daemon.plugins.media-keys | xargs -I@ gsettings set org.gnome.settings-daemon.plugins.media-keys @ ['']
gsettings set org.gnome.mutter overlay-key ''

Saya tidak yakin apakah itu semua tombol pintas, tetapi tampaknya sebagian besar dari mereka

theicfire
sumber