|
レンダリング枠を使った補完処理のような時に、選択の操作などを横取りしたいわけ
ですが、
以下のようなマクロを [Down] [PageDown] [ESC] [Enter] にキー割り当てたとして
なめらか、各種解除(ESC) など挙動がまるで変ってしまってしまうのを防止したい、
カーソル移動後タイマー、編集後タイマー、のシチュエーション側に設定したロジッ
クに自然に流したい、
というフローを何とか解決したいのです
```
#notHintMode = (getstaticvariable("hintmode", 0) == ""); // 特殊なモード判定
if (#notHintMode) { // 特殊なモードではない
if (iskeydown(0x28)) { // <Down>
down; // 標準動作の down; を実行して終わる (移動後タイマーに、移動時のロジ
ックを委託したい)
endmacro;
}
else if (iskeydown(0x21)) { // <33:PageUp>
prevpage; // なめらかスクロールさせたい (動作環境に設定された「1ページ/
半ページ/n行残し」にも対応して)
endmacro;
}
else if (iskeydown(0x1B)) { // <27:ESC>
escape;
clearcolormarkerallfound;
deletecolormarkerall findmarker;
deletecolormarkerall diff;
// ... ESC の代替処理を可能な限り列挙 (状況で分岐も必要?)
endmacro;
}
else if (iskeydown(0x0D)) { // <13:Enter>
insertreturn; // 改行する (編集後タイマーに、編集時のロジックを委託したい)
endmacro;
}
endmacro; // 設定されてないキーの処理は出来ない
}
// 以下 hintmode 有効時の時の処理が続く
...
...
```
マクロにキー割り当てした処理で、標準の動作に流したいマクロは上記のような
分岐に必要な状態取得の getstaticvariable updatecount iskeydown を使って
そのまま if 分岐して endmacro; するだけのパターンとなるので、
それくらい制限ガチガチで可能性があるなら、それでも充分です。
|
|