このセクションでは、Emacsでのキーボード入力に関するWindows固有の機能について説明します。
MS-Windowsプログラムで慣習的に使用されるキー組み合わせ(“キーボードショートカット”として知られる)の多くが、伝統的なEmacsのキーバインドと衝突します(これらEmacsのキーバインドは、Microsoftが設立される数年前には確立されていました)。衝突の例にはC-c、C-x、C-z、C-aが含まれます。CUAモード(CUAバインドを参照してください)を有効にすることにより、これらのいくつかの意味をMS-Windowsでの意味に近づけるよう再定義できます。他のWindowsのようにEmacsを振る舞わせる他のオプション機能として、Delete Selectionモード(リージョンを操作するを参照)があります。
デフォルトでは、Altとラベルされたキーは、Metaキーにマップされます。かわりにAlt
修飾を生成したい場合は、変数w32-alt-is-meta
にnil
をセットしてください。
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-meta
がt
(デフォルト)の場合、meta修飾はAltキーと解釈され、super修飾とhyper修飾はそれぞれ、w32-lwindow-modifier
とw32-rwindow-modifier
のバインディングに解釈されます。さらにキーがなく末尾がダッシュの修飾は、Emacs用にその修飾にたいしてるWindowsが定義するすべてのホットキーをオーバーライドすることを示します。
たとえば(w32-register-hot-key
[M-tab])
により、(たとえばトップレベルのポイント位置の単語やシンボルを補完したり、インクリメンタル検索において以前に検索した文字列で現在の検索文字列を補完したり等)、Emacsで通常使用するようにM-TABを使用できます。(w32-register-hot-key
[s-])
とw32-lwindow-modifier
を併用すると、WindowsキーにもとづくWindowsのすべてのショートカットを無効にします。31
w32-register-hot-key
は、関数呼び出し時にw32-[lr]window-modifier
の値をチェックすることに注意してください。したがって、w32-lwindow-modifier
をsuper
としてセットしてから(w32-register-hot-key
[s-r])
を呼び出し、最後に同じようにw32-rwindow-modifier
をsuper
としてセットできます。その結果、左WindowsキーとRの組み合せは、その組み合せにたいしてEmacsでバインドした関数を呼び出し、右WindowsキーとRの組み合せはWindowsのRun
ダイアログをオープンします。
ホットキーの登録には常に、与えられたホットキーにたいするshift修飾とcontrol修飾による組み合せのすべてが含まれます。つまり、s-aをホットキーとして登録すると、同様にS-s-a、C-s-a、C-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-lock
にnil
値をセットした場合、CapsLockキーは、タイプされた文字にたいするシフトが押されたバージョンのキーではなく、かわりにシンボルcapslock
を生成します。デフォルト値はt
です。
同様にw32-enable-num-lock
がnil
の場合、NumLockキーはシンボルkp-numlock
を生成します。デフォルトはt
で、これはNumLockに期待された動作、すなわちテンキー上のキーのもつ意味の切り替えを行ないます。
変数w32-apps-modifier
は、Appsキー(通常は右Altキーと右Ctrlキーの間にあります)の効果を制御します。変数の値には、対応する修飾キーを示すシンボルhyper
、super
、meta
、alt
、control
、shift
のどれか1つを指定するか、nil
を指定してそれをキーapps
として扱います。デフォルトはnil
です。
変数w32-lwindow-modifier
は、左Windowsキー(通常はstartとWindowsのロゴのラベル)の効果を決定します。この変数の値がnil
(デフォルト)の場合、このキーはシンボルlwindow
を生成します。シンボルhyper
、super
、meta
、alt
、control
、shift
のうち、どれか1つをセットした場合は、対応する修飾が生成されます。これと似た変数w32-rwindow-modifier
は、右Windowsキーの効果を制御し、w32-scroll-lock-modifier
はScrLockと同様のことを行います。これらの変数がnil
にセットされている場合、右Windowsキーがシンボルrwindow
、ScrLockがシンボル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-system
とw32-pass-rwindow-to-system
は、左Windowsキーと右Windowsキーが、Windowsに渡されるか、Emacsに渡されるかを決定します。値がnil
の場合、これらのキーはEmacsに渡され、それ以外の場合はWindowsに渡されます。両方の変数のデフォルトはt
です。これらのキーをWindowsに渡すことにより、たとえばLwindowはStart
メニューを開くなどの、通常の効果が生成されます。
変数w32-recognize-altgr
は、(もしそれがキーボードにあれば)AltGrキー(またはそれと同種のキー)が右Altと左Ctrlキーを一緒に押したときの組み合わせとするか、それともそれをAltGrキーとして認識するかを制御します。デフォルトはt
で、これはそれらのキーがAltGr
を生成することを意味します。これをnil
にセットすることにより、AltGrキー(またはそれと同種のキー)との組み合わせは、Ctrl修飾とMeta修飾の組み合わせとして解釈されます。
MS-Windowsのいくつかのバージョン、典型的には東アジア向けにローカライズされたWindowsでは、アプリケーションがWindowsのネイティブな入力メソッドサービスである入力メソッドエディター(IME:
Input Method Editor)と対話できるように入力メソッドマネージャー(IMM: Input Method
Manager)が有効になっています。Emacsはユーザーが東アジアの非ASCII文字を入力できるように、利用可能な際にはEmacsのビルトインの入力メソッド(インプットメソッドを参照)と同様にIMEを使用します。しかしある状況においては、IMEが単なるASCIIキーを非ASCII文字を指定するキーシーケンスの一部として解釈することが妨げになる場合があります。w32-set-ime-open-status
を使用することによりIMEを一時的にオフにして、再びオンに切り替えることができます。
これには既知の例外が1つあります。ワークステーションをロックするWindows-Lの組み合せは、システムのより低レベルで処理されます。この理由により、w32-register-hot-key
はこのキー組み合せをオーバーライドできません。これは常にコンピューターをロックします。