Hatena::ブログ(Diary)

A Successful Failure このページをアンテナに追加 RSSフィード Twitter


2010年9月12日付でライブドアブログに引っ越しました。
新URLはhttp://blog.livedoor.jp/lunarmodule7/になります。
これからもどうぞよろしくお願い致します。



2009-06-14

Vista/Windows 7におけるキーボードカスタマイズ問題

2007年8月に『Vistaにおけるキーボードカスタマイズ問題』として、Windows Vistaにおけるキーボードカスタマイズ問題について取り上げた。XPで定番であったキーボードカスタマイズソフト窓使いの憂鬱が、Vista対応できない状況に陥ったため、それまで「窓使いの憂鬱」に依存していたユーザがVistaに移行できない状況が生まれた。前回のエントリは状況の変化に伴う追記で非常に読みづらくなっているので、改めて問題と取り得る選択肢についてまとめておく。

キーボードカスタマイズ問題

そもそもの原因はVista以降において全てのカーネルモードコードに適切なデジタル署名が求められるようになったことだ*1。特にx64エディションではすべてのカーネルモードコードにデジタル署名が付与されてなければならない。個人が作成するソフトウェアにデジタル署名を付与する方法はなく*2、結果としてカーネルモードで動作する「窓使いの憂鬱」をVista上で動作させることはできない*3

次にWindowsアーキテクチャの概観を示し、キーボード入力がアプリケーションに渡るまでのキー情報の流れを示す*4。入力されたキーがアプリケーションに渡されるまでに入れ替えるチャンスは3度ある。下位レベルから1.フィルタドライバ、2.LLフック(Low-Level Keyboard Hooks)、3.メッセージフックだ。

f:id:LM-7:20090614202326p:image

下位レベルの方が自由度が増すため、XPの定番ソフト「窓使いの憂鬱」はカーネルモードで動作するフィルタドライバによる実装を行っていた。しかし、Vista/Windows 7においてカーネルモードで動作させるためにはデジタル署名の取得が必要で、それは個人では不可能だ。そのため、「窓使いの憂鬱」は開発を終了し、VistaやWindows 7への対応は行わないことを表明した。いままで、「窓使いの憂鬱」にてキーボードカスタマイズをしていた多くのユーザが、Vistaに移行したくても出来ない状況が生まれたのだ。

デジタル署名が要らないユーザモードで動作させるにはLLフックとメッセージフックの2手法が考えられる。LLフックの場合はCapsLockキーなどの単体キーの置き換えが出来ない(レジストリ修正で対応)、DirectInputには対応できないなどの制限がある。メッセージフックの場合は、さらに認識できるキーに制限があったり、Alt+Tabなどの一部のキーストロークがフック出来ないなど自由度が限られる。

Vista/Windows 7で利用可能な代表的なキーボードカスタマイズソフト

次にVista/Windows 7で利用可能な代表的なキーボードカスタマイズソフトの一覧を挙げる。「窓使いの憂鬱」に関しては、法人化によるデジタル署名取得の模索、LLフックによる実装への修正という2つのアプローチが進行中である。また、ユーザモードで動作する代替アプリケーションへの乗り換えが取り得る選択肢としてあげられる。自分のニーズにあったものを選択して欲しい。

のどか

窓使いの憂鬱」のVista対応版(Windows 7対応予定)。フィルタドライバとして実装されており、カーネルモードで動作する。最も強力なキーボードカスタマイズが可能。ただし、現時点では署名付きデバイスドライバではない、64bitアプリ操作時に制限があるなどの問題がある。

個人では取得できないデジタル署名を取得するために、法人化を目論んでいる。署名取得の原資とするために1,800円のシェアウェアとなっており、目標100本で会社設立、署名取得の予定となっている。署名取得目標日は2009年10月末頃が予定されている*5

筆者はVista未使用につき、「のどか」は現時点では不要なのだが、Vista/Windows 7移行時にキーボードカスタマイズ環境が整備されることを期待してレジストだけはすでに済ましている。シェアウェアということで敬遠されがちということだが、VistaやWindows 7においてキーボードカスタマイズができないと非常に困る人は、是非「のどか」への支援を検討してもらいたい。

yamy (Yet Another Mado tsukai no Yuutsu)

窓使いの憂鬱」の派生版。キー入力置換をドライバベースからユーザモードフックベースに変更することにより、「窓使いの憂鬱」「のどか」ほど強力な置換はできなくなるものの、署名問題を回避する。現バージョンで64bitにも対応されているようだ。6月10日にSourceForge.JPに新規登録されたところなので、今後の開発に期待したい。

「英数(CapsLock)」「半角・全角」「ひらがな」などの単体キーの入れ替えについてはレジストリの Scancode Map による置き換えを併用(Change Keyが便利)。また、LLフックによる実現であるため、次の場合は機能しないと思われる。

  • LLフックを利用する他アプリとの共存
  • DirectInput を使ったプログラム
AutoHotkey

日本語解説はAutoHotkeyを流行らせるページを参照。LLフック型のキーボードカスタマイズソフトで、2ストロークを含む高度なカスタマイズに対応した強力なツール。ユーザモードで動作するため、署名が必要なくVista/Windows 7でも問題なく利用できる(ただし、ユーザモードフックであるため、yamyと同様の制限が存在する)。それほど自由度を必要としていないのならば、現時点では最初に考慮すべき選択肢だ。

yamyと同様、単体キーの入れ替えにはレジストリによるキーマップ変更(Change Keyが便利)を併用する必要がある。

XKeymacs

Emacs likeな操作性を実現するためのキーボードユーティリィティ。Emacsキーバインドが利用できればそれでよい人は、設定も簡単であり検討の価値がある。キー入力置換をメッセージフックで実現しているため、署名問題を回避できる。Vista/Windows 7でも動作。

関連エントリ

*1Windows Vista のカーネル モードのコード署名用 Microsoft クロス証明書参照

*2一時CrystalMark作者のひよひよ氏が個人によるデジタル署名取得に成功したが、現時点では個人による取得は出来なくなっている。

*3Vistaにおけるキーボードカスタマイズ問題で示したように、Vistaに対応させたバイナリを用いることで制限付きながら動かすことはできるが、無理矢理サポートされていない「窓使いの憂鬱」を動かすよりは本エントリで紹介する他の選択肢を検討した方が良いだろう。

*4窓使いの憂鬱 8の344に基づき作図。

*5:2008年11月の4.06のリリース時において、署名取得が2009年4月頃に早まる可能性が示唆されていたが、それ以降公式の発表はない。ところが、早速本エントリのコメント欄に作者のid:applet_at_hさんからコメントを頂いた。Windows 7発売までには対応したいと考えているとのこと。【2009年9月3日追記】10月22日までに署名取得できるよう推進中であるとご連絡を頂いた。【2009年10月18日追記】 Vista/Windows 7のキーボードカスタマイズ問題がついに解決 - A Successful Failureに記載のように、ついに署名取得が完了した。またx64への対応も併せて実施された。

applet_at_happlet_at_h 2009/06/14 21:21 こんにちは。

BDなどのプレミアムコンテンツを視聴する場合には、x86, x64に関係なく、Protected Media Path関連のデバイスドライバに署名が必要ですが、それ以外のカーネルモードデバイスドライバには署名は必須ではありません。

http://www.microsoft.com/japan/whdc/winlogo/drvsign/drvsign.mspx

Windows Vistaリリース前後では、確かに、署名無しドライバが存在すればダメとの報道、記述が見られましたが、実際に 署名無し のどか のデバイスドライバが動作中であっても、Windows Vista, Windows 7 RC上で、BDソフトの視聴は可能でした。

法人化、署名の件については、遅延しておりますが、あきらめていません。シェアウェアというだけで敬遠されていることも一因で、年明け以降芳しくありません。しかしながら Windows 7リリース日も決まり、遅くとも、それまではと考えています。

LM-7LM-7 2009/06/14 21:34 applet_at_h様
早速のコメントありがとうございます(とても早くて驚きです)。
BDの視聴が可能な点、ご指摘ありがとうございます。修正いたします。

のどかの方はやはりシェアウェアということで敬遠されますか。
個人的には倍額でも良いぐらいなのですが……。
必要としている人は大勢いるはずなので、なんとか受益者で応分の負担が出来る枠組みがあれば良いのですが、無い物ねだりですね。

Windows7に向けた対応、困難は多いと思うのですが、
無理をせず頑張ってください。

applet_at_happlet_at_h 2009/06/14 23:37 こちらこそ、どうもありがとうございます。
キーカスタマイズソフトという存在を知らない人も多いので、まだまだ広大な市場があるように思います。今後とも精進していきます。

applet_at_happlet_at_h 2009/09/03 21:31 こんにちは。10/22までに署名取得できるよう、会社設立へ向けて、一歩進めました。

LM-7LM-7 2009/09/03 21:34 おお、それはすばらしい朗報です。
一ユーザとして大変期待しておりますが、どうがご無理をなさいませんよう。

ShirubadappuruShirubadappuru 2012/02/04 16:48 はじめまして
興味深く記事を読ませていただきました。
Autohotkeyを利用する上で理解が深まりました。
MouseGesture - マウスジェスチャー総合 PukiWiki(続)
にこの頁のリンクを貼りたいのですが,差支えないでしょうか

LM-7LM-7 2012/02/04 20:10 Shirubadappuru様
リンクはどうぞご自由になさっていただければ幸いです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証