Hatena::ブログ(Diary)

色々書くとこ(仮)

iroirokakutoko(kari)

2005-12-04

[][][] 離れ島キーの設定

今日も明日も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"@キー"を使用しているので初期キーのものが実行されます。 ただ、元々メニューバーを使っていなかったので、要らないかなと思ってはいます。わらい。なんとなく書いてしまったし、勿体無いのであげておきます。

[][][] *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;
}

書いたものが思ったとおりに動くとうれしいものですね。

[][][] 「直上のマークからカーソル位置までマーク」修正

早いけど、修正。ミスを直しました。 たぶん、もう問題ないと思います。強引なのは変わりませんけど。

//!*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;
}
}

*1:INS,DEL,HOME,END,PgUp,PgDnのことです。フルキーボードだと大抵離れた場所に島を作っているので、こう呼んでいます。あくまで個人的なものなので、一般的な呼び方だと思って使うと笑われます。