いくら「設定はかたくなにデフォルト派」でも(emacsの、フルスクリーン トグル)

emacsについての情報収集は、「Emacs for Windows」時代までは結構やりやすかったんだけど、Unix ユーザ向けすらも最近収集しにくくなったよねぇ。

所詮 emacs ユーザって、「ローカルコミュニティではマイノリティ」という状況に置かれているのが普通なんだと思う。「コッソリとひっそりと」使っている潜在ユーザの数がどんだけ多かろうと、皆「メモ帳なんかダメだ、皆桜エディタを使え」とか、「秀丸愛してる!」という大声があがる中を、声を潜めて使い続けてるんだろう。(実際潜在ユーザ数は多分日本の人口に匹敵するくらいはいるんじゃない?)

Emacs愛と、さようならMeadowでは「設定はかたくなにデフォルト派」とは言ったものの。ずーっと以前はキーボードだけで最大化出来るように設定していたんだけれど、結局引越しのたびに設定するのが面倒になって、最近はやってなかったのな。だって、起動時と「C-x 5 2」した時だけの手間だからね、やらなくたって死にはしない。

そうなんだけど、つい先日、マウスのある PC と(引越し前PC)、マウスを用意してない PC (引越しする相手PC)という状況に置かれたのね。いやー、参った。マウスなし「デスクトップPC」で「最大化ボタン」、押せないわ。

一昔前の Windows には「マウスキー」という、テンキーをマウスの代わりに使える機能がデフォルトでついていたのに、今はないみたいだし(※参照)、また、一般的な Windows アプリケーションなら「Ctrl-SPACE」でどうにかなるんだけれど、Emacsが特殊なウィンドウアプリケーションなのでこれにも反応しない。デスクトップPCだから、ポインティングデバイスなんてついてない。デフォルトで立ち上がるサイズがそこそこ大きければともかく、すぐに横に溢れてしまう小さなサイズで立ち上がってしまうので、とてもではないが長時間その状態で作業しようとは思わない。

さて、「最大化トグル」、試行錯誤はあとで言うとして、Windows での一般解は以下(MeadowでもOK、Emacs では 24.4では別のやり方がある):

.emacsに追加してね
 1 ;;;
 2 ;;; TNX; http://ec2-54-213-146-214.us-west-2.compute.amazonaws.com/fswiki/wiki.cgi?page=Emacs%E3%81%AE%E8%A8%AD%E5%AE%9A%EF%BC%88Windows%EF%BC%89
 3 ;;;
 4 (defvar w32-window-state nil)
 5 
 6 (defun w32-fullscreen-switch-frame ()
 7   (interactive)
 8   (setq w32-window-state (not w32-window-state))
 9   (if w32-window-state
10       (w32-fullscreen-restore-frame)
11     (w32-fullscreen-maximize-frame)
12     ))
13 
14 (defun w32-fullscreen-maximize-frame ()
15   "Maximize the current frame (windows only)"
16   (interactive)
17   (w32-send-sys-command 61488))
18 
19 (defun w32-fullscreen-restore-frame ()
20   "Restore a minimized/maximized frame (windows only)"
21   (interactive)
22   (w32-send-sys-command 61728))
23 
24 (add-hook 'window-setup-hook
25           '(lambda () (w32-fullscreen-maximize-frame))
26           )
27 
28 ;(define-key global-map "\C-xt" 'w32-fullscreen-switch-frame)
29 (define-key global-map [f11] 'w32-fullscreen-switch-frame)

「C-x t」はワタシの本来の好み。F11は遠いので、愛着はない。お好きな方をどうぞ。

TNXとあるサイトに書かれてた情報で、これは大昔にワタシがやってたサイトの元ネタと思う。

「Windows での一般解」という奥歯に物が挟まった言い方をしてるのはな、「Meadow3では良くても emacs-24.2-bin-i386emacs-24.3-bin-i386ではダメなもう一つの方法」が、目立つ場所に書かれてしまっているから。これこそが「世間的にはアクティビティが低い」emacs コミュニティの、もはや宿命なんだろうなぁ、と思う。30.9.4 最大化/通常サイズを切り替える (2003/10/26) | Meadow/Emacs memoが問題のそれ。これね、確かに Meadow 3 では効きました。だけど、emacs-24.2-bin-i386emacs-24.3-bin-i386ではダメ。全く役に立たなかった。

「w32-send-sys-command」ってね、いわば「最強の裏口」なのですよ。Win32 API の SendMessage で直接 Windows メッセージを送りつけちゃう。だから、割となんでも出来る。このことはFullScreen | emacswiki.org にも一言触れられていた。

なお、FullScreen | emacswiki.org でわかったのですけれどもね、Emacs 24.4 からは、「M-x toggle-frame-fullscreen」が使えます。実際に emacs-24.4-bin-i686-pc-mingw32.zipで試してみた。出来ます。ただし。emacs-24.4-bin-i686-pc-mingw32.zipは、日本語入力の問題があって、自力で対処出来る人以外には薦められないな。(入力中に入力文字列が表示されない。IMEとの連携に何か問題がありそうだ。)


※追記:「マウスキー」、見つけられなかったけど、今でもありました。Windows 7でマウスポインターの操作をキーボードでできるようにする方法 | NECパーソナル商品総合情報サイト 121ware.com(ワントゥワンウェア・ドット・コム)参照。