Vô hiệu hóa tất cả các phím tắt Unity bằng dòng lệnh


8

Tôi muốn biết làm thế nào tôi có thể vô hiệu hóa TẤT CẢ các phím tắt thông qua thiết bị đầu cuối. Tôi biết bạn có thể vô hiệu hóa chúng bằng cách đi đến:

cài đặt hệ thống> bàn phím> phím tắt

nhưng tôi muốn vô hiệu hóa chúng thông qua thiết bị đầu cuối. Bất cứ ai biết làm thế nào điều này có thể được thực hiện?


Bạn đang nói về những phím tắt nào? Có rất nhiều bộ khác nhau. Bạn có một số hoạt động trên dòng lệnh, một số kích hoạt công cụ GUI, v.v ... Chúng hoàn toàn riêng biệt.
terdon

Nếu bạn đi đến cài đặt hệ thống> bàn phím> phím tắt, có tất cả các phím tắt trong ubfox và tôi muốn tắt tất cả chúng.
dùng278551

OK, vì vậy bạn có nghĩa là chỉ các phím tắt GUI. Tôi giả sử bạn đang sử dụng Ubuntu mặc định để môi trường máy tính để bàn của bạn là Unity. Đúng không?
terdon

vâng đúng vậy
dùng278551

Câu trả lời:


11

Tôi không biết tại sao bạn lại muốn làm điều này và tôi nên cảnh báo bạn rằng việc lấy lại các phím tắt có thể rất phức tạp. Nếu đây thực sự là những gì bạn muốn làm, các lệnh bên dưới sẽ vô hiệu hóa tất cả các phím tắt. Cả hai thiết lập thông qua GUI của Unity và bất kỳ bạn có thể đã thiết lập bằng cách sử dụngccsm

A. Vô hiệu hóa các phím bấm Unity

  1. Trước tiên hãy tạo bản sao lưu các ràng buộc hiện tại để bạn có thể kích hoạt lại chúng sau

    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
    

    Điều này sẽ tạo ra một tệp được gọi old_settingstheo định dạng sau:

    schema key <TAB> value
    

    Ví dụ:

    org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
    
  2. Bây giờ hãy tắt các phím tắt

    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
    

    Giải trình

    • gsettings list-recursively org.gnome.desktop.wm.keybindings : danh sách này liệt kê tất cả các phím bấm và giá trị hiện tại của chúng
    • perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/': điều này chỉ đơn giản là thêm một ký tự TAB ( \t) tách giá trị khỏi khóa. Bước này là cần thiết để có thể đọc chúng đúng cách trong bước tiếp theo.
    • while IFS=$'\t' read -r key val: đi qua từng dòng và đọc khóa vào $kvà giá trị của nó vào $val. $IFS=$'\t'có nghĩa là phân chia trên các tab để khóa và giá trị được đọc chính xác.
    • gsettings set $key [''] : điều này thực sự đặt giá trị thành trống, vô hiệu hóa các phím tắt của bạn một cách hiệu quả.

    Lưu ý rằng bạn có thể phải đăng xuất và đăng nhập lại để việc này có hiệu lực.

  3. Nhận (một số) các phím tắt của bạn trở lại

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

    CẢNH BÁO : Điều này có thể sẽ không hoạt động đối với tất cả các cài đặt vì một số trong số chúng dường như có thêm một tham số @astrong tên khóa và tôi không biết làm thế nào để đối phó với cài đặt đó. Như tôi đã nói, đây không phải là một ý kiến ​​hay.

B. Tắt các phím tắt tùy chỉnh của bạn được đặt trong ccsm

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

Lần này, lấy lại chúng thật dễ dàng. Tất cả bạn cần làm là chạy

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

Cảm ơn bạn công việc tuyệt vời, tôi nghĩ vẫn còn thiếu các phím tắt Compiz?
user.dz

@Sneetsher phần B. nên xử lý các phím tắt compiz do người dùng xác định. Không chắc chắn về những cái mặc định. Để tôi kiểm tra.
terdon

Đã thêm một tập lệnh để thêm một chút về giao diện người dùng có thể sử dụng để thực hiện các thao tác trên: github.com/fatso83/dotfiles/blob/master/utils/scripts/iêu
oligofren

Về "Tôi không biết tại sao bạn muốn làm điều này", trường hợp sử dụng cho mọi người trong nhóm nhà phát triển của tôi là các phím tắt mặc định trùng với các ràng buộc khóa đã biết trong các chương trình phổ biến. Trong trường hợp của chúng tôi, hầu hết các phím tắt IntelliJ không hoạt động và tất cả chúng ta thực sự chỉ cần một số phím tắt Gnome (như Alt-Tab và thay đổi kích thước cửa sổ).
oligofren

@oligofren chắc chắn, nhưng tại sao sau đó bạn cần phải tắt tất cả các phím tắt khỏi thiết bị đầu cuối? Đó là điều tôi thấy lạ. Nhưng dù sao, với mỗi người của họ :)
terdon

3

Tôi dựa trên câu trả lời của @ terdon và tạo ra một kịch bản để làm điều tương tự , nhưng làm như vậy theo cách thân thiện hơn với người dùng.

Bạn có thể sử dụng nó như thế này:

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

Vì tôi thích sử dụng các phím bấm mặc định Alt-F4 và Alt-Tab (và đảo ngược của chúng bằng cách sử dụng shift), điều này sẽ loại bỏ tất cả các phím bấm trừ những phím này.

Nó cũng có một menu trợ giúp tốt đẹp:

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"    

Để sử dụng nó trên máy của riêng bạn

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/

0

Đối với gnome trên Ubuntu 18.04, tôi thấy điều này hoạt động:

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 ''

Tôi không chắc đó có phải là tất cả các phím tắt hay không, nhưng dường như đó là phần lớn trong số chúng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.