Mac上で仮想化したLinuxのEmacsでcommandキーをメタキーとして使う
Mac上のEmacsでcommandキーをメタキーとして使う方法は、こちらのサイトなどで紹介されていますが、ここではMac上で仮想化したLinuxでcommandキーをメタキーとして使う方法を紹介したいと思います。
commandキーはLinuxからはsuperキーとして認識されるので、x-super-keysymという変数の値を変更することによって、commandキーの挙動を変更することができます。
次のようなelispスクリプトを.emacs.elに追加することで、Macと仮想化したLinuxの両方でcommandキーとoptionキーを入れ替えることができます。
(defun mac-window-system-p () (or (eq window-system 'mac) (eq window-system 'ns))) (defun x-window-system-p () (eq window-system 'x)) (defun swap-meta-and-super-on-mac () (setq ns-command-modifier 'meta) (setq ns-alternate-modifier 'super)) (defun swap-meta-and-super-on-x () (setq x-super-keysym 'meta) (setq x-meta-keysym 'super) ) (defun reset-meta-and-super-on-mac () (setq ns-command-modifier 'super) (setq ns-alternate-modifier 'meta)) (defun reset-meta-and-super-on-x () (setq x-super-keysym nil) (setq x-meta-keysym nil) ) (defun swap-meta-and-super () (interactive) (cond ((mac-window-system-p) (swap-meta-and-super-on-mac)) ((x-window-system-p) (swap-meta-and-super-on-x)) )) (defun reset-meta-and-super () (interactive) (cond ((mac-window-system-p) (reset-meta-and-super-on-mac)) ((x-window-system-p) (reset-meta-and-super-on-x)) )) (swap-meta-and-super)
ただし、MacのVirtualBoxでは、デフォルトのホストキーが左commandキーになっており、そのままでは仮想化したLinux上では左commandキーを認識しません。これはVirtualBoxの設定を変更してホストキーを他のキー(右commandキーなど)に変更することで解決することができます。