Next: , Previous: , Up: Microsoft Windows   [Contents][Index]


G.6 MS-Windowsでのキーボードの使用方法

このセクションでは、Emacsでのキーボード入力に関するWindows固有の機能について説明します。

MS-Windowsプログラムで慣習的に使用されるキー組み合わせ(“キーボードショートカット”として知られる)の多くが、伝統的なEmacsのキーバインドと衝突します(これらEmacsのキーバインドは、Microsoftが設立される数年前には確立されていました)。衝突の例にはC-cC-xC-zC-aW-SPCが含まれます。CUAモード(CUA Bindingsを参照してください)を有効にすることにより、これらのいくつかの意味をMS-Windowsでの意味に近づけるよう再定義できます。他のWindowsのようにEmacsを振る舞わせる他のオプション機能として、Delete Selectionモード(Using Regionを参照)があります。

デフォルトでは、Altとラベルされたキーは、Metaキーにマップされます。かわりにAlt修飾を生成したい場合は、変数w32-alt-is-metanilをセットしてください。

MS-Windowsでは、Alt-TAB、およびWindowsキーと組み合わされたいくつかのキーのような特定のキー組み合わせは、Windowsが使用するために予約済みです。これらのキー組み合わせは、Emacsがそれを読み取る前に、システムにより解釈されます。さらにWindows 10では、たとえその時点で特定のキー組み合せがホットキーとして定義されていなくても、すべてのWindowsキーと組み合わされたキーは、アプリケーションに決して渡されないように、システムにより予約済みです。関数w32-register-hot-keyを使用して、Windowsに横取りされることなく、Emacsがキーシーケンスを取得できます。ホットキー(hot key)として登録した場合、そのキー組み合せはWindowsが処理する前にシステムの入力キューから取り出され、そのシーケンスがもつWindowsにたいする特別な意味を、効果的にオーバーライドします。これはEmacsがアクティブなときだけオーバーライドされ、他のアプリケーションがフォアグラウンドのときには、そのキーは通常どおり振る舞います。

w32-register-hot-keyに指定する引数は、1つの修飾キー、1つのキーを指定しなければなりません。control修飾とshift修飾は、引数に影響を与えません。w32-alt-is-metat(デフォルト)の場合、meta修飾はAltキーと解釈され、super修飾とhyper修飾はそれぞれ、w32-lwindow-modifierw32-rwindow-modifierのバインディングに解釈されます。さらにキーがなく末尾がダッシュの修飾は、Emacs用にその修飾にたいしてるWindowsが定義するすべてのホットキーをオーバーライドすることを示します。

たとえば(w32-register-hot-key [M-tab])により、(たとえばトップレベルのポイント位置の単語やシンボルを補完したり、インクリメンタル検索において以前に検索した文字列で現在の検索文字列を補完したり等)、Emacsで通常使用するようにM-TABを使用できます。(w32-register-hot-key [s-])w32-lwindow-modifierを併用すると、WindowsキーにもとづくWindowsのすべてのショートカットを無効にします。26

w32-register-hot-keyは、関数呼び出し時にw32-[lr]window-modifierの値をチェックすることに注意してください。したがって、w32-lwindow-modifiersuperとしてセットしてから(w32-register-hot-key [s-r])を呼び出し、最後に同じようにw32-rwindow-modifiersuperとしてセットできます。その結果、左WindowsキーとRの組み合せは、その組み合せにたいしてEmacsでバインドした関数を呼び出し、右WindowsキーとRの組み合せはWindowsのRunダイアログをオープンします。

ホットキーの登録には常に、与えられたホットキーにたいするshift修飾とcontrol修飾による組み合せのすべてが含まれます。つまり、s-aをホットキーとして登録すると、同様にS-s-aC-s-aC-S-s-aが登録されます。

Windows 98、およびWindows MEではホットキーの登録はより制限されます。ホットキーが常に完全指定されねばなりません。望む結果を得るために、w32-phantom-key-codeをカスタマイズできます。

関数w32-unregister-hot-keyは、引数となるキーシーケンスにたいして、w32-register-hot-keyと逆のことを行ないます。

デフォルトでは、CapsLockキー(このキーは小文字を大文字に変換します)は通常の文字キーだけに効果をもちます。しかし変数w32-capslock-is-shiftlockを非nil値にセットした場合、CapsLockは非文字キーにも同様に効果をもつようになり、その非文字キーをタイプするとき、あたかもSHIFTキーが押されたかのようになります。

変数w32-enable-caps-locknil値をセットした場合、CapsLockキーは、タイプされた文字にたいするシフトが押されたバージョンのキーではなく、かわりにシンボルcapslockを生成します。デフォルト値はtです。

同様にw32-enable-num-locknilの場合、NumLockキーはシンボルkp-numlockを生成します。デフォルトはtで、これはNumLockに期待された動作、すなわちテンキー上のキーのもつ意味の切り替えを行ないます。

変数w32-apps-modifierは、Appsキー(通常は右Altキーと右Ctrlキーの間にあります)の効果を制御します。変数の値には、対応する修飾キーを示すシンボルhypersupermetaaltcontrolshiftのどれか1つを指定するか、nilを指定してそれをキーappsとして扱います。デフォルトはnilです。

変数w32-lwindow-modifierは、左Windowsキー(通常はstartとWindowsのロゴのラベル)の効果を決定します。この変数の値がnil (デフォルト)の場合、このキーはシンボルlwindowを生成します。シンボルhypersupermetaaltcontrolshiftのうち、どれか1つをセットした場合は、対応する修飾が生成されます。これと似た変数w32-rwindow-modifierは、右Windowsキーの効果を制御し、w32-scroll-lock-modifierScrLockと同様のことを行います。これらの変数がnilにセットされている場合、右WindowsキーがシンボルrwindowScrLockがシンボルscrollを生成します。たとえばキーボード上のScroll Lock LED標示を切り替える等、他のアプリケーションのときと同様の効果をScrLockに生成させたい場合は、w32-scroll-lock-modifierの値に上記の修飾シンボルではなくtか、任意の非nilをセットしてください。

EmacsがネイティブのWindowsアプリケーションとしてコンパイルされていると、Windowsメニューを呼び出すAltをタップ(tapping: 覗き見)するWindows機能をオフに切り替えます。これはEmacsではMetaとして用いられるからです。Emacsを使用するとき、ユーザーが1度Metaキーを押して、後で気が変わることがあります。もしこのキーがWindowsメニューを立ち上げる効果をもつ場合、それに続くコマンドの意味が変更されてしまいます。多くのユーザーは、これにイライラするでしょう。

w32-pass-alt-to-systemを非nil値にセットすることにより、Altキーの覗き見にたいするWindowsのデフォルトの処理を再び有効にできます。

変数w32-pass-lwindow-to-systemw32-pass-rwindow-to-systemは、左Windowsキーと右Windowsキーが、Windowsに渡されるか、Emacsに渡されるかを決定します。値がnilの場合、これらのキーはEmacsに渡され、それ以外の場合はWindowsに渡されます。両方の変数のデフォルトはtです。これらのキーをWindowsに渡すことにより、たとえばLwindowStartメニューを開くなどの、通常の効果が生成されます。

変数w32-recognize-altgrは、(もしそれがキーボードにあれば)AltGrキー(またはそれと同種のキー)が右Altと左Ctrlキーを一緒に押したときの組み合わせとするか、それともそれをAltGrキーとして認識するかを制御します。デフォルトはtで、これはそれらのキーがAltGrを生成することを意味します。これをnilにセットすることにより、AltGrキー(またはそれと同種のキー)との組み合わせは、Ctrl修飾とMeta修飾の組み合わせとして解釈されます。


Footnotes

(26)

これには既知の例外が1つあります。ワークステーションをロックするWindows-Lの組み合せは、システムのより低レベルで処理されます。この理由により、w32-register-hot-keyはこのキー組み合せをオーバーライドできません。これは常にコンピューターをロックします。