명령줄을 사용하여 모든 Unity 키보드 단축키를 비활성화합니다.

명령줄을 사용하여 모든 Unity 키보드 단축키를 비활성화합니다.

터미널을 통해 모든 키보드 단축키를 비활성화하는 방법을 알고 싶습니다. 다음으로 이동하여 비활성화할 수 있다는 것을 알고 있습니다.

시스템 설정>키보드>단축키

하지만 터미널을 통해 비활성화하고 싶습니다. 이거 어떻게 할 수 있는지 아는 사람 있어?

답변1

나는 당신이 왜 이 작업을 하려는지 전혀 모르겠고, 바로가기를 다시 찾는 것이 복잡할 수도 있다는 점을 경고해야 합니다. 이것이 정말로 원하는 일이라면 아래 명령을 사용하면 모든 키보드 단축키가 비활성화됩니다. 둘 다 Unity의 GUI를 통해 설정되었으며 사용자가 다음을 사용하여 설정할 수도 있습니다.ccsm

A. Unity 키인딩 비활성화

  1. 나중에 다시 활성화할 수 있도록 먼저 현재 바인딩을 백업하세요.

    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
    

    old_settings그러면 다음 형식의 파일이 생성됩니다 .

    schema key <TAB> value
    

    예를 들어:

    org.gnome.desktop.wm.keybindings unmaximize <TAB> ['<Control><Super>Down']
    
  2. 이제 바로가기를 비활성화하세요.

    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
    

    설명

    • gsettings list-recursively org.gnome.desktop.wm.keybindings: 모든 키 바인딩과 현재 값을 나열합니다.
    • perl -pe 's/(.*)\s*(\[.*?\])\s*$/$1\t$2\n/'\t: 이는 단순히 값과 키를 구분하는 TAB 문자( )를 추가합니다 . 다음 단계에서 제대로 읽을 수 있으려면 이 단계가 필요합니다.
    • while IFS=$'\t' read -r key val: 각 라인을 살펴보고 키 $k와 그 값을 읽어옵니다 $val. $IFS=$'\t'수단탭으로 분할키와 값을 올바르게 읽도록 합니다.
    • gsettings set $key ['']: 이는 실제로 값을 공백으로 설정하여 바로가기를 효과적으로 비활성화합니다.

    이 사항을 적용하려면 로그아웃했다가 다시 로그인해야 할 수도 있습니다.

  3. 바로가기 중 일부를 다시 가져오기

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

    경고: 일부 설정 @as에서는 키 이름에 추가 매개변수가 있는 것 같고 이를 처리하는 방법을 모르기 때문에 이 방법은 모든 설정에서 작동하지 않을 수 있습니다. 내가 말했듯이, 이것은 모두 그다지 좋은 생각이 아닙니다.

B. 다음에 설정된 사용자 정의 바로가기를 비활성화합니다.ccsm

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

이번에는 다시 돌려받는 것이 쉽습니다. 당신이해야 할 일은 실행하는 것뿐입니다.

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

답변2

나는 @terdon의 답변을 바탕으로 만들어졌습니다.동일한 작업을 수행하는 스크립트하지만 좀 더 사용자 친화적인 방식으로 그렇게 합니다.

다음과 같이 사용할 수 있습니다.

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

저는 기본 키 바인딩인 Alt-F4와 Alt-Tab(및 그 반대의 경우 Shift 사용)을 사용하는 것을 좋아하므로 이를 제외한 모든 키 바인딩이 제거됩니다.

또한 멋진 도움말 메뉴도 있습니다:

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"    

자신의 컴퓨터에서 사용하려면

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/

답변3

Ubuntu 18.04의 gnome의 경우 이것이 작동하는 것으로 나타났습니다.

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

단축키가 전부인지는 모르겠지만 대부분인 것 같습니다.

관련 정보