「シフト起動」というのは,設定してあるキーの他にいずれかのシフトキーを同時に押すことにより,通常のマクロ実行時とは別の動作をさせる方法を総称しています。つまり,「シフトキー」は[Shift]だけでなく,[Alt]や[Ctrl]も含むことに注意してください。もちろん[Shift]が主役であることに変わりはありませんが,使い方によっては幾通りもの分岐を行わせることが可能です。
まず,どんなキーでシフト起動ができるか整理してみましょう。
1ストロークキー | ^A @A など | 3キー同時押し | [Shift]分岐可能 |
2ストロークキー | ^QA [ESC]A など | 第2ストローク目にシフトキー押し | 4通りの分岐可能 |
特殊キー | [Home] [Down] など | 別のキーアサインとなる | 分岐不可 |
最も便利に使えるのが2ストロークキーということになります。逆に言うと,2ストロークキーでシフト分岐をまったく利用しないのはもったいない,とも言えます。あまり設定しすぎても覚えきれませんから,逆の動作をさせるようなときにシフト起動を効果的に使うとよいでしょう。
例えば,上村さんの古典TabSpace.defでは,次のように2個のキーを使用しています。
51 ^KM "タブ→スペース変換" r=9, >01 ; タブ…10進数:9/16進数:$9 52 ^KN "スペース→タブ変換" r=32, >01 ; 半角スペース…10進数:32/16進数:$20 1: ;共通ルーチン
これを,通常実行でタブ→スペース変換/シフト実行でスペース→タブ変換…のように設定すると以下のようになります。
53 ^KS "TAB⇔SPC[\]" ;Ikuo ;[\] H_ear
?. (ks&1)?r32, ?r9, >>
1: ;共通ルーチン
このようにして,限りあるキーを節約することができますし,キーアサインを覚えるのも楽になるでしょう。この例は2分岐の比較的単純なものですが,キーの組み合わせ方で幾通りもの分岐が可能になります。次の表はキー押下時の変数ks(シフトキーフラグ)の値を示したものです。参考にしてください。
右[Shift](1) | 左[Shift](3) | [Ctrl](4) | [Alt](8) | ksの値 |
○ | 1 | |||
○ | 3 | |||
○ | 4 | |||
○ | (○) | ○ | 5(7) | |
○ | 8 | |||
○ | (○) | ○ | 9(11) | |
○ | (○) | ○ | ○ | 13(15) |
[SCRL] | [NUM] | [CAPS] | [INS] | ksの値 |
○ | 16 | |||
○ | 32 | |||
○ | 64 | |||
○ | 128 |
[Shift] | [CAPS] | [カナ] | [Graph] | [Ctrl] | ksの値 |
○ | 1 | ||||
○ | 2 | ||||
○ | ○ | 3 | |||
○ | 4 | ||||
○ | ○ | 5 | |||
○ | ○ | 6 | |||
○ | ○ | ○ | 7 | ||
○ | 8 | ||||
○ | ○ | 9 | |||
○ | ○ | 10 | |||
○ | ○ | ○ | 11 | ||
○ | ○ | 12 | |||
○ | ○ | ○ | 13 | ||
○ | ○ | ○ | 14 | ||
○ | ○ | ○ | ○ | 15 | |
○ | 16 | ||||
○ | ○ | 17 | |||
○ | ○ | 18 | |||
○ | ○ | ○ | 19 | ||
○ | ○ | 20 | |||
○ | ○ | ○ | 21 | ||
○ | ○ | ○ | 22 | ||
○ | ○ | ○ | ○ | 23 | |
○ | ○ | 24 | |||
○ | ○ | ○ | 25 | ||
○ | ○ | ○ | 26 | ||
○ | ○ | ○ | ○ | 27 | |
○ | ○ | ○ | 28 | ||
○ | ○ | ○ | ○ | 29 | |
○ | ○ | ○ | ○ | 30 | |
○ | ○ | ○ | ○ | ○ | 31 |
何だか極端な表だなぁ…。