2013年5月20日月曜日

TabでPPc-PPv間切り替え

通常Tabキーでの窓の切り替えはPPc間でしかできないが、それをPPvも含めて切り替えられるようにする。
 PPc[A]→PPc[B]→PPc[C]→PPv[A]→PPv[B]→PPc[A]… ということです。

PPcTab.js
//!*script

// 実行元のPPcIDを文字コードに変換
var useppc = PPx.Extract('%n').slice(1).charCodeAt(0) + 1;

// 実行元PPcよりアルファベット順で後のPPcがあればフォーカスを移す
for (var i = useppc; i < 91; i++) {
  ppcid = String.fromCharCode(i);
  if (PPx.Extract('%NC' + ppcid).match(/.+/)) {
    PPx.Execute("*focus C" + ppcid);
    PPx.Quit(-1);
  }
}

// 無ければPPvにフォーカス
for (var i = 65; i < 91; i++) {
  ppvid = String.fromCharCode(i);
  if (PPx.Extract('%NV' + ppvid).match(/.+/)) {
    PPx.Execute("*focus V" + ppvid);
    PPx.Quit(-1);
  }
}

// PPvが無ければ通常のTabの動作
PPx.Execute("%K\"@F6\"");

PPvTab.js
//!*script

// 実行元のPPvIDを文字コードに変換
var useppv = PPx.Extract('%n').slice(1).charCodeAt(0) + 1;

// 実行元PPvよりアルファベット順で後のPPvがあればフォーカスを移す
for (var i = useppv; i < 91; i++) {
  ppvid = String.fromCharCode(i);
  if (PPx.Extract('%NV' + ppvid).match(/.+/)) {
    PPx.Execute("*focus V" + ppvid);
    PPx.Quit(-1);
  }
}

// 無ければPPcにフォーカス
for (var i = 65; i < 91; i++) {
  ppcid = String.fromCharCode(i);
  if (PPx.Extract('%NC' + ppcid).match(/.+/)) {
    PPx.Execute("*focus C" + ppcid);
    PPx.Quit(-1);
  }
}

// PPcが無ければPPcを起動
PPx.Execute("*ppc -bootid:A -r");

次を編集して取込
KC_main = { ; PPcメイン窓
TAB ,*script %0\Script\PPcTab.js
}

KV_main = { ; PPvメイン窓
TAB ,*script %0\Script\PPvTab.js
}

0 件のコメント:

コメントを投稿