2019年1月15日火曜日

フォルダ履歴ジャンプメニュー(動的)




PPcでフォルダ履歴メニューを表示し、選択したらパス移動する。
5年前にも同じことをしていたようなのだが、今回はスクリプトを使い、メニューを動的にした。履歴がない場合はその項目を表示しない。

以下をScriptフォルダに保存。

dirhistorymenu.js

//!*script
// ディレクトリ履歴メニューを作成

PPx.Execute("*setcust -|M_hoehoe ="); // メニューの削除
for (var i = 0; i < 10; i++) {
  var name = PPx.Extract("%*dirhistory("+i+")");
  if (name){
    PPx.Execute("*setcust M_hoehoe:"+name.replace('\\t','\\\\t')+"="+name); // メニューの登録。\t は桁揃えになるので置換
    }
}

以下のコマンドを実行。

*script %0Script\dirhistorymenu.js %: *execute ,%%j%%M_hoehoe,%1

*executeをかませているのは、ショートカットにマクロ文字を使うため。

参考


フォルダ履歴ジャンプメニュー - つかさのほえほえ日記


2018年12月18日火曜日

PPxをもっとだいなファイラーっぽくする





コンセプト


  • PPxをできるだけだいなファイラーっぽくしてみる
  • 以前、見た目だけなんちゃってだいなっぽくしてみたが、今回はキーバインド、メニューを含めてだいなっぽくしてみた
  • ビューアは埋め込み表示にしている。埋め込まない方法についてはppxmemoの「2画面」以下のページを参照のこと
  • 多分ミスしている箇所あるからしばらくはちょくちょく修正するかも


具体的に


  • キーバインドは「だいなファイラーの紹介 - moewe」にあった「だいなまとめヘルプファイル」を参考にした
  • スクリプト等を使わないとできなさそうなものは未実装
  • メニューはコマンドがない箇所はクリックしても反応しない。オプションはクリックしたらカスタマイザーを起動するようにしている
  • Windowsの壁紙の変更の仕方がわからなかったので、それ関係は実装していない

やり方


  1. PPxをダウンロードし、インストールする。詳しくはppxmemoのintroを
  2. Window Module、Text Moduleをインストールする。詳しくは「ppxmemo - 機能拡張のためのソフトウェア」を
  3. 以下にあるコードをクリップボードにコピーする
  4. カスタマイザーを起動(PPCUSTW.EXEを実行するか、メニューバーから「ツール - カスタマイズ」を選択)し、ファイルタブから「編集して取込」をクリック
  5. クリップボードの内容をペーストした状態で「編集して取込」ウィンドウが開く。左下にある「追加する」のCHECKを外し、OKを押す
  6. PPxを再起動する




_Command = { ; ユーザコマンド・関数
allview = %Oi *ppv -bootid:L %*arg(1) %*name(CD,"%R","%1") %: *wait 100,1 %: *execute C,*capturewindow VL -pane:0 %: *execute C,*pane hide ~
halfview = *ifmatch /.+/,%NVY %: *ppvoption sync %: *stop
 %Oi *ppv -bootid:Y %*name(CD,"%R","%1") %: *ppvoption sync %: *wait 100,1 %: *capturewindow VY -pane:~ -selectnoactive
}
MC_celS = { ; エントリ表示 書式([;]メニュー)
だいな1 = M wF16,5 Z10 S1 T14 s1
だいな2 = M wF16,5 z10 S1 T14 s1
だいな3 = M wF16,5 zK10 S1 T14 s1
}
KC_main = { ; PPcメイン窓
B ,%"Binary menu" %M_bin
E ,%"JMTE|Text edit"%Orib,editor %FDC
I ,*ifmatch "option:e,attribure:d+" %: *countsize
L = @\L
N ,*makefile %${%1\%|%} %: %Ob notepad.exe %${%1\%|%}
P ,*pack "%2%\|%X|" %Or-
W = @F12
V ,*allview -hex
F4 = @D
F6 = @S
F7 = @F
F9 = @\L
F10 = @U
F11 ,*maximize %NC#
F12 ,*shownormal %NC#
ESC = @&F4
HOME = @\HOME
'@' ,%z
9 ,%j#18:\
LEFT ,*cursor 4, -1,6,B0100,6,B0100
RIGHT ,*cursor 4, 1,6,B0100,6,B0100
\ENTER = @Z
',' ,*RotateExecute dynastyle,*viewstyle だいな1,*viewstyle だいな2,*viewstyle だいな3
'~' ,*ifmatch "option:e,attribure:d+" %: *execute ~,*jumppath %FCD
\F1 = @A
\F2 = @I
\F3 = @M
\F8 ,%"JMTE|Text edit"%Orib,editor %FDC
\F9 ,*allview -hex
\F10 ,*pack "%2%\|%X|" %Or-
\HOME ,*unmarkentry
\RIGHT ,*cursor 8,1,13,0,13,0
\LEFT ,*cursor 8,1,12,0,12,0
\DOWN = @PDOWN
\UP = @PUP
^D ,*cursor 4, 1,6,B0100,6,B0100
^E = @UP
^F = @J
^M = @'+'
^S ,*cursor 4, -1,6,B0100,6,B0100
^X = @DOWN
^RIGHT ,*pairrate +1
^LEFT ,*pairrate -1
^DOWN ,*pairrate 50
^\RIGHT = @^RIGHT
^\LEFT = @^LEFT
}
KV_main = { ; PPvメイン窓
ENTER ,*ifmatch "!/VL/",%n %: *stop
 *ifmatch "/CA/",%*extract(C"%%n") %: *closeppx "VL" %: *execute C,*pane newpane CB %%: *focus CA %: *stop
 *ifmatch "/CB/",%*extract(C"%%n") %: *closeppx "VL" %: *execute C,*pane newpane CA %%: *pane swappane %%: *focus CB
SPACE ,*ifmatch "/VL/",%n %: %K-C"@DOWN@N"
BS ,*ifmatch "/VL/",%n %: %K-C"@UP@N"
F11 ,*maximize %NC#
F12 ,*shownormal %NC#
}
KV_page = { ; PPvテキスト(ページ)追加設定
B ,%K"@["
E ,%"JMTE|Text edit"%Orib,editor %FDC
I ,%K"@U"
L ,%K"@]"
T = @TAB
V ,%K"@C"
W ,%K"@;"
F3 = @']'
TAB ,*RotateExecute tbmode,*viewoption -hex,*viewoption -text
HOME ,%K"@^HOME"
\HOME ,%K"@^END"
\UP = @PUP
\DOWN = @PDOWN
^INS = @^C
}
KV_crt = { ; PPvテキスト(キャレット)追加設定
B ,%K"@["
E ,%"JMTE|Text edit"%Orib,editor %FDC
I ,%K"@U"
L ,%K"@]"
T = @TAB
V ,%K"@C"
W ,%K"@;"
F3 = @']'
TAB ,*RotateExecute tbmode,*viewoption -hex,*viewoption -text
HOME ,%K"@^HOME"
\HOME ,%K"@^END"
\UP = @PUP
\DOWN = @PDOWN
^INS = @^C
}
KV_img = { ; PPv画像追加設定
R ,%K-C"@R"
X = @L
Z = @K
HOME ,*RotateExecute id,*zoom 0,*zoom -1
}
E_cr = { ; [Enter]用判別
PNG ,*allview
:JPEG ,*allview
JPEG ,*allview
JPG ,*allview
:BMP ,*allview
BMP ,*allview
GIF ,*allview
TXT ,*allview
CPP ,*allview
H ,*allview
C ,*allview
L ,*allview
EL ,*allview
HTML ,*allview
HTM ,*allview
XYZZY ,*allview
EMACS ,*allview
SCM ,*allview
INI ,*allview
VBS ,*allview
JS ,*allview
PY ,*allview
PYW ,*allview
CFG ,*allview
LOG ,*allview
HOWM ,*allview
}

MC_menu = { ; PPc メニューバー、※指定すると初期メニューがなくなる
ファイル(&F) = %M_menuCFile
編集(&E) = %M_menuCEdit
ツール(&T) = %M_menuCTool
ウィンドウ(&W) = %M_menuCWindow
オプション(&O) = %K"CUSTOMIZE"
ヘルプ(&H) = %M_menuCHelp
}
M_menuCFile = { ** comment **
ドライブ情報...\t = %K"@I"
ドライブ移動(&W)...\t = %K"@\L"
ディレクトリサイズ\t = *countsize
}
M_menuCEdit = { ** comment **
すべて選択...\tK = *markentry
選択解除(&W)...\tShift+K = *unmarkentry
比較マーク\t = %K"@\O"
検索マーク\t = %K"@+"
壁紙に設定\t = 
機能一覧から\t = 
}
M_menuCTool = { ** comment **
ネットワークドライブの割当...\t = %K"NETUSE"
ネットワークドライブの切断(&W)...\t = %K"NETUNUSE"
ファイル検索\t = %K"@^W"
}
M_menuCWindow = { ** comment **
左右を均等にする...\tK = *pairrate 50
壁紙の更新(&W)...\tShift+K = 
}
M_menuCHelp = { ** comment **
目次...\tK = *help
about...\tShift+K = %K"ABOUT"
}

XC_stat = _AUTO,_AUTO,0,0,O"_GRE" R60 C / i"Marked" mn i"/" E0 S1 ms8 S1 i"Bytes" Df8 S1 i"Free" ; ステータス行
X_win = { ; 表示形式全般 *layout
CA = B001001001
CB = B001001001
}
F_mes = -16,0,0,0,400,0,0,0,128,3,2,1,17,MS 明朝 ; 汎用
C_entry = _WHI,_WHI,_CYA,_RED,_CYA, _MAG,_BLU,_GRE,_DWHI, _SBLU,_DBRO,_GRE,_RED,_MAG 
C_eInfo = _AUTO,_DRED,_AUTO,_DBLA,_DBLU,_DCYA,_DBLA,_BRO,_WHI,_WHI,_AUTO,_BLU,_AUTO, H404000,_BRO,_CYA,_GRE 
XC_celD = _AUTO,_AUTO,4,7 ; エントリ表示 文字,背景,カーソル,マーク 
X_inag = 0 ; 現在窓以外はグレー調に 0:しない 1:する
X_combo = 1 ; 複数 PPc を一体化 0:しない 1:する
X_combos = B0000000000001000010010000000000,B000 ; 一体化時の表示形式CC_log = _WHI,_BLA ; 共用ログ、アドレスバー(文字,背景)_AUTO可
X_mpane = 2,2 ; 一体化時の最大同時表示ペイン数,起動時のペイン数
XV_drag = 0,1,3,0 ; ドラッグ開始ボタン スクロール,選択,窓移動,ジェスチャ(右のみ)
  ; 0:使用しない 1:左 2:右 3:中/ホイール 4:左右同時 5:第4 6:第5
XC_dset = { 
* = B0000,0,0,0,-1,-1,B011111,B00000000000000000000000001,disp:"だいな1"
}


2018年12月14日金曜日

PPxでだいなっぽく画像表示(両窓に埋め込み)



前回は反対窓に埋め込み表示をした。今回は両窓にまたがって埋め込み表示をする。

やり方


二画面で、左にA、右にBがある状態を想定している。

_Command = {
allview = %Oi *ppv -bootid:L %*name(CD,"%R","%1") %: *wait 100,1 %: *execute C,*capturewindow VL -pane:0 %: *execute C,*pane hide ~
}

KV_main = { ; PPvメイン窓
ENTER ,*ifmatch "!/VL/",%n %: *stop
 *ifmatch "/CA/",%*extract(C"%%n") %: *closeppx "VL" %: *execute C,*pane newpane CB %%: *focus CA %: *stop
 *ifmatch "/CB/",%*extract(C"%%n") %: *closeppx "VL" %: *execute C,*pane newpane CA %%: *pane swappane %%: *focus CB
UP ,*ifmatch "/VL/",%n %: %K-C"@UP@N"
DOWN ,*ifmatch "/VL/",%n %: %K-C"@DOWN@N"
SPACE ,*ifmatch "/VL/",%n %: %K-C"@SPACE@N"
\SPACE ,*ifmatch "/VL/",%n %: %K-C"@SPACE@N"
}

E_cr = { ; [Enter]用判別
PNG ,*allview
:JPEG ,*allview
JPEG ,*allview
JPG ,*allview
:BMP ,*allview
BMP ,*allview
GIF ,*allview
TXT ,*allview
CPP ,*allview
H ,*allview
C ,*allview
L ,*allview
EL ,*allview
HTML ,*allview
HTM ,*allview
XYZZY ,*allview
EMACS ,*allview
SCM ,*allview
INI ,*allview
VBS ,*allview
JS ,*allview
PY ,*allview
PYW ,*allview
CFG ,*allview
LOG ,*allview
HOWM ,*allview
}


  • 画像ファイルやテキストファイルの上でEnterを押すと、PPvを両窓にわたって埋め込み表示
  • カーソル上下で表示エントリを切り替え
  • もう一度Enterを押すとPPvを閉じる


解説


  1. PPVを起動
  2. 左ペインでPPVを埋め込み表示
  3. 反対窓をhide

というやり方でPPV全画面表示を実現し、閉じるときには

  1. PPVを閉じる
  2. hideしていたタブをnewpaneで開く
  3. もともとの状態に戻るように、PPCのペインの位置をかえたりフォーカスをかえたりする

という手順。少々トリッキー。
起動PPVIDはLに固定。

2018年12月9日日曜日

PPxであふっぽく画像表示(反対窓に埋め込み)



PPXであふっぽく画像表示できるようにする。
何年か前にもしたことがあったが(PPxをさらにあふっぽくする)、そのときは反対窓の上にPPVを重ねて表示するだけだった。今回は埋め込みでやってみる。
埋め込みのメリットは、Alt+Tabの切り替えをしても配置がずれないこと。

やり方


当然一体化型でないと機能しない。試してみたい人は、窓オプションから一体化を選択しよう。

_others = { ; その他設定
SyncViewID = Y
}

_Command = {
halfview = *ifmatch /.+/,%NVY %: *ppvoption sync %: *stop
 %Oi *ppv -bootid:Y %*name(CD,"%R","%1") %: *ppvoption sync %: *wait 100,1 %: *capturewindow VY -pane:~ -selectnoactive
}

E_cr = { ; [Enter]用判別
PNG ,*halfview
:JPEG ,*halfview
JPEG ,*halfview
JPG ,*halfview
:BMP ,*halfview
BMP ,*halfview
GIF ,*halfview
TXT ,*halfview
CPP ,*halfview
H ,*halfview
C ,*halfview
L ,*halfview
EL ,*halfview
HTML ,*halfview
HTM ,*halfview
XYZZY ,*halfview
EMACS ,*halfview
SCM ,*halfview
INI ,*halfview
VBS ,*halfview
JS ,*halfview
PY ,*halfview
PYW ,*halfview
CFG ,*halfview
LOG ,*halfview
HOWM ,*halfview
}



  • 画像ファイルやテキストファイルの上でEnterを押すと、PPvが反対窓に埋め込まれ、連動ビューになる。
  • 連動ビュー時にもう一度Enterを押すと、連動ビューを解除し、PPvを閉じる。


備考


  • PPxスレを参考にした(https://egg.5ch.net/test/read.cgi/software/1476708638/180)。
  • 連動ビュー用のPPVはYに設定してある。
  • *ppvoption sync offのあとにコマンドを続けると、*ppvoption sync oと解釈するみたいなので*ppvoption syncにしている。
  • *waitを挟まないと思ったようにフォーカスがPPCに戻ってくれないようだ。




2018年11月28日水曜日

xyzzyで連番を振る



xyzzyで連番を振れるようにする。具体的には以下。

・Enterを押したときに作動
・行頭が・ならば次の行頭にも・を付ける
・行頭が数値+ピリオド(1.や1.)ならば次の行頭に連番を振る
・連番の後ろに文字列がない行でEnterを押せば、その連番を解除

;; ■ 連番を振る
;; 行頭が「・」あるいは「1.」「1.」の場合、Enterで連番にする
;; 連番しかないのにEnterを押した場合は連番を消す

;; 全角数字あるいは半角数字に1プラスして返す関数
(defun plus-1-string (str)
  (cond
   ((string-match "[0-9]+" str)
    (setf int (parse-integer str))
    (format nil "~d" (+ int 1)))
   ((string-match "[0-9]+" str)
    (setf str (map-to-half-width-string str :ascii t))
    (setf int (parse-integer str))
    (setf str (format nil "~d" (+ int 1)))
    (map-to-full-width-string str :ascii t))))

;; 本体
(defun insert-serial-numbers ()
  (interactive)
  (if (eolp) ;;行末のときのみ作動
    (save-restriction
      (narrow-to-region
       (progn (beginning-of-line) (point))
       (progn (end-of-line) (point)))
      (beginning-of-line)
      (cond
       ((scan-buffer "^・.+" :regexp t) (end-of-line)(insert "\n・"))
       ((scan-buffer "^・" :regexp t)  (replace-match ""))
       ((scan-buffer "^\\([0-9]\\|[0-9]\\)\\(\\.\\|.\\).+" :regexp t)
 (end-of-line)
 (let ((f (match-string 1)) (b (match-string 2)))
   (insert "\n" (plus-1-string f) (format nil "~A" b))))
       ((scan-buffer "^\\([0-9]\\|[0-9]\\)\\(\\.\\|.\\)" :regexp t) (replace-match "\n"))
       ( t (end-of-line) (insert "\n"))))
    (newline))) ;; 行末でなかったら普通の改行
;;(define-key *howm-create2dir-mode-map* '#\RET 'insert-serial-numbers)
(global-set-key '#\RET 'insert-serial-numbers)

僕の場合はhowm以外で使う予定はないので、自作のhowmモードでのみ作動するようにしている。

2018年11月21日水曜日

about My Machine


LIVAZ2-4/32-W10(N4100)(メイン機)


今月のはじめに入手。SSDを換装し、そこにOSをインストール。
PPxやxyzzyを動かしたり、Web閲覧したりくらいなら特に不都合はない。ファンレスなのがGood。

【CPU】Intel CPU Celeron N4100 1.10GHz
【メモリ】4GB SO-DIMM DDR4-2400
【SSD】Crucial CT240BX200SSD1 [SSD 240GB] ( SSD )
【OS】 Windows10 Home 64bit
【ディスプレイ】LG 23.8インチ AH-IPS 24EA53VQ-P
【マウス】Logitech M570 Wireless Trackball
【キーボード】マイクロソフト Comfort Curve Keyboard 3000 3TJ-00030

自作(ゲーム機)


2016年6月に自作。

【CPU】Intel CPU Core i5-6500 3.2GHz
【マザボ】ASUSTeK H110M-A
【メモリ】CORSAIR DDR4 8GB×2 CMK16GX4M2A2666C16
【電源】ANTEC NE650C
【光学ドライブ】DRW-1814BLT
【HDD】WD HDD 3.5インチ 1TB Blue WD10EZEX/N
【SSD】Crucial CT240BX200SSD1
【ケース】Define R5
【グラボ】PowerColor Red Devil Radeon RX 470 4GB
【OS】 Windows10 Home 64bit
【ディスプレイ】iiyama 19型ワイド液晶ディスプレイ ProLite E1902WS
【マウス・キーボード】LOGICOOL ワイヤレスコンボ mk270

Asus TransBook T90CHI-3775(モバイル)


2017年1月末に中古で入手。2in1タブレットだがノートとして使用。

【CPU】Intel CPU Atom Z3775 3.2GHz
【メモリ】2GB
【ストレージ】eMMC 64GB
【OS】 Windows10 Home 32bit

2018年11月17日土曜日

M570 Wireless Trackballで仮想デスクトップ切り替え


ロジクールのトラックボールマウスM570で仮想デスクトップ切り替えをできるようにしてみる。



準備


LogicoolサポートからSetPointをダウンロードし、インストール。

タスクを選択 - その他

のドロップダウンリストから、「デスクトップ(右)」「デスクトップ(左)」を選択すればいいのだが、デフォルトの状態ではこれらが出てこない。

設定項目は、

C:\Program Files\Logicool\SetPointP\default.xml

を編集することで調整できる。編集には管理者権限が必要。

default.xml


個々のボタンに応じて、設定項目が異なる。ドロップダウンリストに表示されるアイテムと、各行を照らし合わせて、該当する行を見つけ編集すればいい。
m570の場合、真ん中に2つあるキー(デフォルトでは「進む」「戻る」が割り振られている)に対応するのは、42行目のWindows8OthersTaskGroup。
ここの末尾に「,DesktopRight,DesktopLeft」を付け足せばいい。すなわち

<HandlerSetGroup Name="Windows8OthersTaskGroup" HandlerSetNames="MetroAppMenu,MetroCharms,MetroAppSwitch,MetroStartScreen,MetroShare,MetroSettings,MetroDevices" />



<HandlerSetGroup Name="Windows8OthersTaskGroup" HandlerSetNames="MetroAppMenu,MetroCharms,MetroAppSwitch,MetroStartScreen,MetroShare,MetroSettings,MetroDevices,DesktopRight,DesktopLeft," />

にする。

参考


ロジクールマウスM705tで「デスクトップの表示」と「仮想デスクトップ」切り替えを手に入れた! - daimobi