monoの開発ブログ

GTKのキーバインドを変更する

キーバインドをEmacs風にする、という記事はそこら中にありますが、任意のキーバインドにする方法はなかなか見つからなかったのでメモ。

以下は、gtk-2.0でのやり方です。gtk-3.0の場合は参考のページを読めばできると思いますが、確認していません。

~/.themes 以下にテーマを作成し、作成したテーマを利用するように設定するという流れです。おなじみのEmacsという設定は、/usr/share/themes にデフォルトで用意されているEmacsというテーマを選択していたわけです。

$ mkdir -p ~/.themes/MyTheme/gtk-2.0-key
$ vi ~/.themes/MyTheme/gtk-2.0-key/gtkrc

C-dとC-hを定義してみた例。

binding "gtk-mytheme-text-entry" {
  bind "<ctrl>d" { "delete-from-cursor" (chars, 1) }
  bind "<ctrl>h" { "delete-from-cursor" (chars, -1) }
}

class "GtkEntry" binding "gtk-mytheme-text-entry"
class "GtkTextView" binding "gtk-mytheme-text-entry"

ここはEmacsのテーマを選択する時と同様ですね。

$ gconftool-2 -s /desktop/gnome/interface/gtk_key_theme --type string "MyTheme"
$ gsettings set org.gnome.desktop.interface gtk-key-theme "MyTheme" # Unityの場合はこちら

テーマの詳細な記述方法や詳しい話は、参考のリンク先やEmacsのテーマを参照してください。

参考