Ubuntuのキーボードショートカットを一括無効化する (TeamViewer使いたいので)

ノートPCに入っているUbuntuから,自宅のデスクトップPC(Windows)にTeamViewerでリモート接続して使おうと思った.

しかし,ついAlt+F4などのショートカットキーを押してしまい,TeamViewer自体のウィンドウが閉じてしまって接続が切れることが多発したため,Ubuntu側のキーボードショートカットを一時的に無効化する必要が生じた.

以下のスクリプトを使う(Disable all Unity keyboard shortcuts using the command line - Ask Ubuntu の回答を改変)

無効化

disable-all-shortcuts.shとして以下のスクリプトを作成し,chmod 755 *.shとかで実行権限付与して実行すればOK.

#!/bin/bash

# 現在のショートカットの設定をold_key_settingsに出力
gsettings list-recursively org.gnome.desktop.wm.keybindings | 
   perl -pe 's/org\.gnome\.desktop\.wm\.keybindings\s([^\s]*)\s+(\[.*?\])\s*$/$1\t$2\n/' | 
    while IFS=$'\t' read -r key val; do echo -e "$key\t$val"; done > old_key_settings

# 全てのショートカットを無効化
gsettings list-recursively org.gnome.desktop.wm.keybindings | 
    perl -pe 's/org\.gnome\.desktop\.wm\.keybindings\s([^\s]*)\s+(\[.*?\])\s*$/$1\t$2\n/' | 
        while IFS=$'\t' read -r key val; do gsettings set org.gnome.desktop.wm.keybindings $key "['']"; done

# ユーザ定義のCompizのショートカットを無効化
gsettings set org.gnome.settings-daemon.plugins.media-keys active false

有効化

restore-all-shortcuts.shとして以下のスクリプトを作成.

#!/bin/bash

# 設定をファイルから復元
while IFS=$'\t' read -r key val; do 
    gsettings set org.gnome.desktop.wm.keybindings "$key" "$val"
done < old_key_settings 

# compiz ショートカットを復元
gsettings set org.gnome.settings-daemon.plugins.media-keys active true

注意点

  • 情報元の回答にもあるが,@asが含まれる設定には対応していないので,当該設定でエラーが出力される.(私の環境では,当該設定は元々ショートカットキーが無効でした.)
  • gsettings set org.gnome.settings-daemon.plugins.media-keys active falseのところでタッチパッドのタップによるクリックやスクロールが無効になって,active trueとしても戻らなかった.(一度ログオフしたら戻った)なので,compizをあまり使っていないなら,このコマンドは実行しないほうがいいかもしれない.
  • unityのショートカットは無効にならなかったので,CompizConfig Setting Managerで主なものだけ手動で無効化した.(参考: UbuntuのCtrlキー(Superキー)で起動する鬱陶しいLauncherを起動しない方法 - Qiita
    • 私の場合は,superキーでLauncher起動と,Window ManagementのカテゴリのGrid(元々Windowsライクな動作に設定していた)だけ無効にした.

所感

とりあえず,~/scripts/とかフォルダ掘ってスクリプト置いてパス通したら便利かなと思って使ってみる.

compizの設定は,gconftool-2とか使えば取得できるのだろうか.(shortcut keys - How to list Compiz keybindings in use? - Ask Ubuntu

TeamViewer使うと,他にも全角半角キーが効かないから,IMEの切り替えに別のキーを割り当てたりとか少し面倒. (Windows10 IMEだと,Advanced Setting > General > Key template > Advanced > IME ON/OFFから,Shift+F1に変更してみた.)