最近の更新

関連


その他いろいろ

多機能フィードリーダSynapse製作中

2月までは目が回るほど忙しい

MODxでつくる! 最強のCMSサイト カバー
MODxでつくる! 最強のCMSサイト

タイトル通りのAutoHotKeyスクリプト。
カーソル移動、Home/End、Page Up/Down、Delだけ。ほかは自分で使わないので…

; Realforce86U で HHKBのFn風キー定義
; AppとWin(をAppにマップしたもの)を左右Fnとして使用
; Winは無いと困るので、新たにRCtrlをRWinにマップします。

#UseHook
; App(Winと入れ替わっている前提) で擬似Fn修飾
AppsKey & [::Send, {blind}{Up}
AppsKey & `;::Send, {blind}{Left}
AppsKey & '::Send, {blind}{Right}
AppsKey & /::Send, {blind}{Down}

AppsKey & k::Send, {blind}{Home}
AppsKey & ,::Send, {blind}{End}

AppsKey & l::Send, {blind}{PgUp}
AppsKey & .::Send, {blind}{PgDn}

AppsKey & BS::Send, {blind}{Del}

; スキャンコードリマップ
; 参考: http://uguisu.skr.jp/Windows/winCaps.html
; HKLMSYSTEMCurrentControlSetControlKeyboard LayoutScancode Map
; 00 00 00 00 00 00 00 00
; 04 00 00 00
; 1D 00 3A 00 ; Caps -> LCtrl
; 5C E0 1D E0 ; RCtrl -> RWin
; 5D E0 5B E0 ; LWin -> App
; 00 00 00 00

foobar2000のプレイリストサイドバーではD&Dによるプレイリストの並べ替えが出来ないようなので、キー操作で入れ替えられるようにしてみました。

Shift+上下で選択中のプレイリストを上下します。
最上/最下のプレイリスト選択時はコンテキストメニューのアクセスキーが変わるので動きませんが。


fb2k_playlistlist_move(key) {
 ControlGetFocus,p_ctrlid,A
 ControlGetText,p_ctrltext,%p_ctrlid%,A
 if (p_ctrltext="Playlist switcher") {
  Send,{AppsKey}%key%{Esc}
 }
}
#IfWinActive ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}
; プレイリストリスト Shift+上下で移動
+Up::fb2k_playlistlist_move("m")
+Down::fb2k_playlistlist_move("d")
#IfWinActive

FirefoxでファイルをDLしようとするときに表示される、「***.** を開く」ダイアログ。
右手マウスで使っていると、一々Enterまで手を伸ばすのが面倒です。

ということでSpaceキーでOKを押せるようにするAutoHotKeyスクリプト。

; ファイルを保存ダイアログでSpace=>Enter
#IfWinActive ahk_class MozillaDialogClass
Space::
WinGetTitle,win_title,A
if (RegExMatch(win_title, ".* を開く$")) {
 Send,{Return}
} else {
 Send,{Space}
}
return
#IfWinActive

普通のUS配列かJIS配列のキーボードを使い、左手だけで入力を可能にするAutoHotkeyスクリプト、RibbitPad v1.00を公開しました。

RibbitPad
コンパイル済みexeとahkが入手可能です。

スペースバーと右Altキー(または変換キー)を2種の修飾キーとして用います。
配列図は以下の通り。

配列

AutoHotkeyでWin + カーソルでウィンドウ移動、Win+Shift+カーソルでウィンドウサイズ変更するスクリプト。

; --------------------------------------------------
; Window Move
WinMoveStep(XD,YD) {
	WinGet,win_id,ID,A
	WinGetPos,x,y,,,ahk_id %win_id%
	Step := 24
	x := x + (XD * Step)
	y := y + (YD * Step)
	WinMove,ahk_id %win_id%,,%x%,%y%
	return
}
#Left::WinMoveStep(-1,0)
#Right::WinMoveStep(1,0)
#Up::WinMoveStep(0,-1)
#Down::WinMoveStep(0,1)

; --------------------------------------------------
; Window Size
WinSizeStep(XD,YD) {
	WinGet,win_id,ID,A
	WinGetPos,,,w,h,ahk_id %win_id%
	Step := 24
	w := w + (XD * Step)
	h := h + (YD * Step)
	WinMove,ahk_id %win_id%,,,,%w%,%h%
	return
}
+#Left::WinSizeStep(-1,0)
+#Right::WinSizeStep(1,0)
+#Up::WinSizeStep(0,-1)
+#Down::WinSizeStep(0,1)

今までHHKBはHHKモード(SW1, SW2 OFF)で使っていて、余った右◇キーを
AutoHotkeyでRWinにして

vkFFsc079::RWin

使っていました。

CraftLaunch起動に割り当てているWin+Aとか、標準のWin+EとかWin+Lでは問題ないんですが、
Win+Sでウィンドウシェードするスクリプトを入れたら問題発生。
◇+S -> シェード -> S離す -> ◇離す
でスタートメニューが開くんですね。ほかのキーでも試してみたところ、
どうやらRWinが本物ではないのが悪いようです。

どうしたものかと調べていると、Lite Ext.モードに行き当たりました。
これはFnキー押下時に細々とした違いが出るくらいのものと思っていたのですが、
◇をWinにするという重要な差違が。

これで解決。ついでに、間違ってWinを押してメニューが開くのは気持ち悪いので、

RWin::return
RWin & RWin::return

で単独Winを殺します。

今までの妙なWin Lock現象も起きないし、少し快適になりました。

QWERTYとDvorak間で切り替えを可能にしました。
Ctrl+Alt+A -> Toggle Mode
Ctrl+Alt+D -> Dvorak Mode
Ctrl+Alt+F -> QWERTY Mode
起動時はDvorak Modeです。

ダウンロード: dvorak_20080430.zip (.ahk)
dvorak_exe_20080430.zip (.exe)
詳細: AutoHotKey @ 7bit

PuTTYを使っていて、何かの間違いで大量のテキストをクリップボードに抱えたまま右クリック→運悪くsudo rm -rf /が含まれていたという事態を回避するためのAutoHotKeyスクリプト。

;-----------------------------------------------------------
; PuTTYで複数行の貼り付け前には確認する
on = 0
$RButton::
CoordMode,Mouse,Screen
MouseGetPos, x, y, win
WinGetClass, cls, ahk_id %win%
If(cls="PuTTY") {
	If (on=0) {
		StringSplit, strout, clipboard, `n
		If(strout0>1 or InStr(clipboard, "sudo")>0) {
			MsgBox, 308, PuTTY貼り付け警告, ---------------------`n%clipboard%`n---------------------`n`nを貼り付けますか?
			IfMsgBox, Yes
			{
				on = 1
				MouseClick, RIGHT, %x%, %y%, 1, 0
			}
		}
	} else {
		MouseClick, RIGHT, %x%, %y%, 1, 0
		on = 0
	}
} else
	MouseClick, RIGHT, %x%, %y%, 1, 0
return

クリップボードにsudoの文字列、もしくは改行が含まれる状態でPuTTYを右クリックすると警告ダイアログを表示します。

手許のHHKB Professional用に、英語キーボードの配列をQWERTYからDvorakに変更するスクリプトを書いてみました。Ctrl修飾は文字よりも位置が重要であることが多いので、透過します。(例えばCtrl+XCVがCtrl+QJKに変換されません)

ダウンロード: dvorak_100.zip(v1.00 .ahkファイルと.exeのセット )
詳細: AutoHotKey @ 7bit

emacs等のキーバインドはQWERTYとはまた別に体が覚えていて、そこまでDvorakで塗り替えるのは大変だと思いますが、Ctrl透過ならその辺切り離して覚えられるので良いかもしれません。(viはノーマルモードで不都合ですが)
まあまだ自分が練習中なので分からないですけど。

Linuxなら端末でF11すればタスクバー等も全部表示されない本物の全画面になりますが、Windows等でgVimを使っていると:FullScreenではタスクバーもタイトルバーも残って画面領域が無駄になります。

Vimのヘルプを眺めていたらguioptionsにキャプションバーを隠すCオプションを見つけたので、全画面最大化トグルスクリプトを書いてみました。

" fullscreen
"-----------------------------------------------------------
nnoremap <F11> :call ToggleFullScreen()<CR>
function! ToggleFullScreen()
  if &guioptions =~# 'C'
    set guioptions-=C
    if exists('s:go_temp')
      if s:go_temp =~# 'm'
        set guioptions+=m
      endif
      if s:go_temp =~# 'T'
        set guioptions+=T
      endif
    endif
    simalt ~r
  else
    let s:go_temp = &guioptions
    set guioptions+=C
    set guioptions-=m
    set guioptions-=T
    simalt ~x
  endif
endfunction

上のスクリプトをvimrcに加えればF11でメニュー・ツールバーは勿論、キャプションもタスクバーも隠した最大化が出来ます。
もう一度F11を押せばメニュー・ツールバーを(元々存在していれば)復元し、元に戻ります。

加えて


set guioptions-=T "ツールバーなし
set guioptions-=m "メニューバーなし
set guioptions-=r "右スクロールバーなし
set guioptions-=R
set guioptions-=l "左スクロールバーなし
set guioptions-=L
set guioptions-=b "下スクロールバーなし

も設定しておくと普段から広くて少し嬉しいかもしれません。

ちなみに自分はAutoHotKeyで普通のアプリケーションのF11最大化トグルを設定していますが、そのままでは今回のスクリプトと衝突するので回避するよう変更しました。

; F11で最大化トグル
F11::
  WinGetClass, className, A
  if(className="Vim") {
    Send,{F11}
    return
  }
  WinGet, State, MinMax, A
  if State != 0
    WinRestore, A
  else
    WinMaximize, A
  return
次のページ »