#KEY、又は、#KEYSETで始まるセクションです。指定したキーの動作をここで定義します。
ver 3.xxまで存在してきた単純キーはver 4.00で廃止されました。
定義のしかたは以下の通りです。
#KEY 複合キーまたはイベントキー 複文 #KEYSET = 文字列定数 複合キーまたはイベントキー 複文 (文字列定数は60文字以内)
ver 3.xxまで使用されていましたが、ver 4.00にて廃止されました。ver 4.00以降では複合キーを使用してください。
| 旧単純キー | 新規複合キー |
|---|---|
| K* | SHIFT+OEM1 (JP KBDの場合) |
| K+ | SHIFT+PLUS |
| , | COMMA |
| K- | MINUS |
| K. | PERIOD |
| K/ | OEM2 |
| = | SHIFT+MINUS (JP KBDの場合) / SHIFT+PLUS (US KBDの場合) |
| : | OEM1 (JP KBDの場合) / SHIFT+OEM1 (US KBDの場合) |
| ; | PLUS (JP KBDの場合) / OEM1 (US KBDの場合) |
| < | SHIFT+COMMA |
| > | SHIFT+PERIOD |
| ? | SHIFT+OEM2 |
| @ | OEM3 (JP KBDの場合) |
| [ | OEM4 |
| \ | OEM5, OEM102(JP KBDの場合) |
| ] | OEM6 |
| ^ | OEM7 (JP KBDの場合) |
| _ | SHIFT+OEM102 (JP KBDの場合) / SHIFT+MINUS (US KBDの場合) |
| ` | SHIFT+OEM3 |
| { | SHIFT+OEM4 |
| | | SHIFT+OEM5 |
| } | SHIFT+OEM6 |
| ~ | SHIFT+OEM7 (JP KBDの場合) / SHIFT+OEM3 (US KBDの場合) |
例) #KEY K* { ShowMessage('Wowow','test'); } → #KEY SHIFT+OEM1 { ShowMessage('Wowow','test'); }
#KEY \ { AboveDir(); } → #KEY OEM5 { AboveDir(); } 又は #KEY OEM102 { AboveDir(); }
複合キーはSHIFTキー、CTRLキー、ALTキーとのコンビネーションが使用できるキーのことを指します。
| BS | バックスペース |
| TAB | タブ |
| CLEAR | JP & US n/a (ver 4.00で導入 *注意) |
| ENTER | RETURN又はENTERキー |
| ESC | エスケープキー |
| SPACE | スペースキー |
| PRIOR | PageUpキー |
| NEXT | PageDownキー |
| END | ENDキー |
| HOME | HOMEキー |
| LEFT | カーソルキー左 |
| UP | カーソルキー上 |
| RIGHT | カーソルキー右 |
| DOWN | カーソルキー下 |
| INS | INSERTキー |
| DEL | DELETEキー |
| HELP | HELPキー |
| K0~K9 | メインキーボードの0~9 |
| A~Z | A~Z |
| T0~T9 | テンキーの0~9 |
| T* | テンキーの* |
| T+ | テンキーの+ |
| T- | テンキーの- |
| T. | テンキーの. |
| T/ | テンキーの/ |
| F01~F24 | ファンクションキー(F13~F24はVer 4.00で導入) |
| MINUS | JP -= / US -_ (ver 4.00で導入) |
| PLUS | JP ;+ / US =+ (ver 4.00で導入) |
| COMMA | ,< (ver 4.00で導入) |
| PERIOD | .> (ver 4.00で導入) |
| APPS | APPS (ver 4.00で導入) |
| OEM1 | JP :* / US :; (ver 4.00で導入) |
| OEM2 | /? (ver 4.00で導入) |
| OEM3 | JP @` / US `~ (ver 4.00で導入) |
| OEM4 | [{ (ver 4.00で導入) |
| OEM5 | \| (ver 4.00で導入) |
| OEM6 | ]} (ver 4.00で導入) |
| OEM7 | JP ^~ / US '" (ver 4.00で導入) |
| OEM8 | JP & US n/a (ver 4.00で導入 *注意) |
| OEM102 | JP \_ / US n/a (ver 4.00で導入) |
| LCLICK | マウスの左ボタンクリック |
| LDBLCLICK | マウスの左ボタンダブルクリック |
| LDOWN | マウスの左ボタンのダウン |
| MCLICK | マウスの中ボタンクリック |
| MDBLCLICK | マウスの中ボタンダブルクリック |
| MDOWN | マウスの中ボタンのダウン |
| RCLICK | マウスの右ボタンクリック |
| RDBLCLICK | マウスの右ボタンダブルクリック |
| RDOWN | マウスの右ボタンのダウン |
| X1CLICK | マウスの第4ボタンクリック |
| X1DBLCLICK | マウスの第4ボタンダブルクリック |
| X1DOWN | マウスの第4ボタンのダウン |
| X2CLICK | マウスの第5ボタンクリック |
| X2DBLCLICK | マウスの第5ボタンダブルクリック |
| X2DOWN | マウスの第5ボタンのダウン |
| WHEELUP | WHEELMOUSEで上に回転 |
| WHEELDOWN | WHEELMOUSEで下に回転 |
| WHEELLEFT | WHEELMOUSEで左移動 |
| WHEELRIGHT | WHEELMOUSEで右移動 |
これらのキーと、SHIFT+ CTRL+ ALT+を組み合わせて使用します。
例) #KEY T1 { ChDir('A:'); }
#KEY SHIFT+D { DustBoxEx(); }
#KEY ALT+CTRL+Q { QuitSASF(0); }
なお、キーの組み合わせによっては、定義はできるが実際には使用できないものがあります。SHIFT+ESCとかCTRL+ESC、ALT+TAB、ALT+SHIFT+TABなどのOSで予約されているものなどがそれにあたります。また作者の環境ではCTRL+SHIFT+(ALT+)F01、SHIFT+T0~T9もだめです。CTRL+SHIFT+S,+W,+Xもだめです。
CLICKおよびLDOWNを使用する場合はSASF.INIの[CONFIG]セクションのUseLClickを1にしてください。
!!!注意!!!
なお、上記設定を行った場合、従来のようにLCLICKにてフォーカスが移動しません!! フォーカスの移動やカーソルの移動もSTLにて記述することになります。
!!!注意!!!
xDOWN、xCLICK、xDBLCLICKの発生順位はxDOWN -> xCLICK -> xDBLCLICKです。手前の動作で使用者に入力を促すようなダイアログ等と表示させると、次の動作は実行することができませんので注意してください。
!!!注意!!!
使用しているマウスユーティリティによっては、WHEELLEFTやWHEELRIGHTの挙動がおかしくなる場合があります。(例:LogiCoolのSetPointが常駐していると、WHEELLEFT/RIGHTが1クリック辺り2回呼ばれる)
!!!注意!!!
CLEARキーに関して、JPキーボードやUSキーボードでは普通は入力できないと思われます。Realforce connectなどでカスタマイズすると使えたりします。
!!!注意!!!
OEM8キーに関して、JPキーボードやUSキーボードでは普通は入力できないと思われます。UKキーボードやFRキーボードーで使われるようです。
イベントキーは上記のキーとは違い、主にマウスによって引き起こされるアクションを定義します。
| Resize | SASFのサイズが変更された |
| SplitMoved | スプリッタを移動した |
| Active | SASFがアクティブになった |
| Deactive | SASFが非アクティブになった |
| ChangeWindow | アクティブな窓が変更された |
| Moved | SASFが(CAPTION DRAGやSysCommandの移動で)移動し終わった |
| DPIChanged | SASFが存在するデスクトップのDPIが変更された(Windows 8.1以降のみ有効) |
なお、イベントキーはDPIChangedを除き、『マウス操作』でこれらの動作が引き起こされたときにのみ呼ばれます。後述するSTLの手続き(ChangeActiveWindowやMoveSplitなど)を呼び出して上記の変更が起きたときは『呼ばれない』ので注意してください。
Windows 8.1以降の所謂「Per-Monitor」によるデスクトップ毎のDPI差に関しては、ResizeイベントやMovedイベントが起こるタイミングではDPIChangedイベントは起動しません。必要ならばResizeやMovedの中でGetCurrentDPI手続きを呼び出して確認して下さい。
ジェスチャーは、マウスジェスチャーによって引き起こされるアクションを定義します。
ジェスチャーの記述は ボタン_移動方向 という形式で記述し、ALT・CTRL・SHIFTとは組み合わせては使えません。
| ボタン | 記号 |
|---|---|
| 左ボタン | (使用不可) |
| 中ボタン | M |
| 右ボタン | R |
| 第4ボタン | X1 |
| 第5ボタン | X2 |
| 移動方向 | 記号 |
| 上 | U |
| 下 | D |
| 左 | L |
| 右 | R |
たとえば、右ボタンによる↓→というジェスチャーは R_DR と記述します。
例)
#KEY R_DR { ... }
#KEYSET='grph' X1_RLR { ... }
なお、移動方向の組み合わせに上限はありませんが、多くても4~5くらいにしておいた方がいいと思われます。
#KEYSETは、後述するプレビューキーセクションとChangeKeySet手続きとを併用することで、1つのキーに対する動作の定義を複数規定するために使用します。
例)
#KEY U { ... } .... (1)
#KEYSET='SetName' U { ... } .... (2)
(1)は、デフォルトで使用されるキーの定義となります。
(2)は、「#PREKEYセクションの中でChangeKeySet手続きを使用する」ことで、デフォルトのキー定義の代わりに使用できるようになります。
例)
#PREKEY
{
var #chk;
CheckVMode(#chk);
IF (#chk==1) THEN {
ChangeKeySet('SetName'); // ここで使用するキー定義を変更
};
}
ChangeKeySetに渡す文字列は、#KEYSET=の次に指定した文字列を渡します。この文字列のことを「定義セット名」と呼びます。定義セット名は、大文字・小文字を区別しません。定義セット名の長さは60文字までです。
!!!重要!!!
ChangeKeySetによる変更は、そのキーの実行が終了した時点で無効になります。
#KEYSET='ALL'で指定されたKEYSETは、全てのキー定義セットに共通なものとして扱われます。ただし、他のキー定義セットと'ALL'で同じキー定義があった場合は、他のキー定義の方が有効となります。
#KEYSET='DEFAULT' は #KEY と同等になります。