Vz resources : MACRO FAQ
2005-06-12T09:05:56+09:00

VZ Macro FAQ - キーアサイン

シフト起動で動作を分岐させるには

「シフト起動」というのは,設定してあるキーの他にいずれかのシフトキーを同時に押すことにより,通常のマクロ実行時とは別の動作をさせる方法を総称しています。つまり,「シフトキー」は[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(シフトキーフラグ)の値を示したものです。参考にしてください。

IBM-PC
[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
NEC-98
[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

何だか極端な表だなぁ…。


VZ Macro FAQ - keys
The VZ resources, valid XHTML 1.0 Strict. ©2005 by mezala.