2005-12-04
■[diary][tools][ppx] 離れ島キーの設定
今日も明日もPPx。 だらだらとCFGをいじるのを楽しんでいます。わたしのやっていることは「便利にするためのカスタマイズ」というよりは「ジグソーパズルに近いカスタマイズ」だと思えてきました。一枚だったものをわざわざバラバラにし、それを組み立てて完成を目指すようなカスタマイズ。言ってしまえばまったくの無意味な行為。しかし、それを楽しんでいます。「ジグソーなカスタマイズ」が好きなあなたにお勧めしたいファイラ、PPxです(宣伝?)
今日は離れ島*1キーとカーソルキー設定をいじりました。
いじったといっても、多くの場合は「機能の確認」いらなければ「機能の削除(NULL割り当て)」別キーのほうがいい場合は「別機能の割り当て」をしただけなんですけどね。こんな感じに編集しました。(20051204.txt)TAB幅4
主な内容としては、Ctrl+LeftやCtrl+Rightに割り当てられていた「前に戻る」「次に進む」はAlt+Left,Alt+Rightに割り当てました。こちらの方が一般的なキーですし、入れ替えてもほとんど問題がでないと判断しました。あとはHOME、ENDなどの動作をあふっぽく。あくまで「ぽく」なんですけど、変更しました。
もう一つ、大きな変更点としてメニューを変更しました。デフォルトメニューです。デフォルトのメニューで使用しているのはHelpだけなんですけど、ファンクションキーを全部無効にしたところきかなくなりまして。 どうやら、デフォルトのキーではなくそのときのキーが割り当てられているみたいなんです。
というわけで、デフォルトのメニューっぽいものを作りました。(ppx_defaultmenu.txt)TAB幅4 こちらは%K"@キー"を使用しているので初期キーのものが実行されます。 ただ、元々メニューバーを使っていなかったので、要らないかなと思ってはいます。わらい。なんとなく書いてしまったし、勿体無いのであげておきます。
■[diary][tools][ppx] *fitwindowRなんて作ってみた。
Window ModuleやScript Moduleを入れて遊んでます。
Window Module の*fitwindowは「指定したPPx位置に指定したPPxをあわせる」というもので、まとめサイトなどを見るとこれを利用して反対窓位置にビューアをあわせたりして、「あふっぽいPPv」とやってるみたいなんですが、二画面を連結していないわたしからすると、まったく見当違いの位置に「ひょっこり現れるPPv」
仕方ないので、くっついて配布されてたWindow Moduleのソースをのぞいたら、MoveWindowで動かしてるだけっぽかったので、以下のようにいじったものをFITWINDOWRという名前で追加。
(略) GetWindowRect((HWND)sparam[0],&box); x = box.left; y = box.top; width = (box.right - box.left); height = (box.bottom - box.top); MoveWindow(hTargetWnd, x + width, y, width, height, TRUE); (略)
「指定したPPxの右隣に指定したPPxをあわせる」コマンド、*fitwindowrの完成なわけです。 言語に詳しくないので、果たしてこんな適当なコピペでいいのかは別として、それっぽく動くので満足してます。ふぃー。
Script Moduleでは、先日やりたいのにできないと言っていた、「上のマークから、現在のカーソル位置までマーク」を強引に実現しました。 以下のものを〜.jsで保存、*script コマンドから実行すると動くと思われます。 ただ、かなり強引にやってる気がするので、もっと素晴らしいもの書ける偉い方、書いてください。お願いします。
//!*script
centry = PPx.EntryIndex;
if ( PPx.EntryFirstMark ) {
PPx.Execute('*cursor 0,1,3,B000,0,B010');
while ( PPx.EntryIndex < centry ) {
PPx.Execute('%K"@SPACE"');
}
PPx.Execute('%K"@^\\A"');
} else {
PPx.EntryIndex = centry;
}
書いたものが思ったとおりに動くとうれしいものですね。
■[diary][tools][ppx] 「直上のマークからカーソル位置までマーク」修正
早いけど、修正。ミスを直しました。 たぶん、もう問題ないと思います。強引なのは変わりませんけど。
//!*script
// 直上のマークからカーソル位置までマーク
icursor = PPx.EntryIndex;
if ( PPx.EntryFirstMark ) {
istart = PPx.EntryIndex;
if ( istart < icursor ) {
PPx.EntryIndex = icursor;
while ( (PPx.EntryIndex != istart) && (PPx.EntryMark == 0) ) {
PPx.Execute('*cursor 0,-1,3,B000,0,B010');
}
PPx.Execute('*cursor 0,1,3,B000,0,B010');
while ( PPx.EntryIndex < icursor ) {
PPx.EntryMark = 1;
PPx.Execute('*cursor 0,1,3,B000,0,B010');
}
PPx.Execute('%K"@^\\A"');
} else {
PPx.EntryIndex = icursor;
}
}