« ブログ書きは脳内開放であり脳ストレッチかなー | メイン | 犯罪者になる確率51% »

あまりにネタがないから最近自分がキーバインドにはまった流れと最近使っているAutoHotKeyスクリプトを晒してみる

さて、以前の「昼間のパパはちょっと違う的な話とブログの方向性についての悩み」 で話したような、わかる人にしかわからないエントリ第一号。専門用語の説明は省きます。

ネタがないので、最近いじり倒しているキーバインドなどについての話。

前からキーボード配置換えを色々やりたいとは思っていて、思い悩んでいたけど手を出していませんでした。その理由として

  • EmacsキーバインドやVimキーバインドに入れ替える(via:はてなCTO伊藤直也氏)という手も考えたのだけど、 Windowsのdefaultショートカットキーとぶつかる。
  • ていうかそもそも俺はEmacs/Vim使いではない為、導入しても覚える手間があり気が引ける。
  • さらには一度導入してしまったら、それが導入されてないパソコンでは作業がしづらくなっちゃうんじゃないの?

などの理由でおっかなびっくりでした。せいぜいいらない子といわれがちなCAPSLOCKをIMEon/offにするぐらい。 (これはIMEの設定で簡単に出来るのでお勧め)

で、そんなときejanの24/7 | キー配置を変更する:その4という記事をみてやる気が起こってしまいました。なぜかというと

  • その1、その2、その3、 と順を踏んでキーバインドにはまっていきemacs/vimキーバインドではない独自のキーバインドを開発したejanさんに共感できた
  • この記事は「無変換」キーをモディファイアキーにすることで、 windows既存のショートカットキーとの重複を避けることが出来る。
  • Autohotkeyを利用しているので、様々なPCへのキーバインド適用が容易であり、導入の手間が無い。

ということでキーバインドにはまって行きましたとさ。

 


 

そして色々自分なりにいじりながらとりあえず安定しました。現状の感想としては以下の通り。

  • 超指が疲れない。BSとかEnterとかなんでいままで指伸ばして打てていたか不思議。
  • 色んな作業がかなりストレスフリーになった。当たり前にやっていたことでも無意識にストレスになっているのだと知った (AltTabやAltF4で指伸ばしたりしなくてもよくなった)
  • 問題点として、範囲選択がやや大変(無変換+Shift+αの3キーだから)あとHOME/ENDがスパッと出てこない。

で、以下に自分の作っているスクリプトを晒すことに。あと前提として、CapsLockをCtrlにしてます。 やり方はGoogleで調べればいくらでものっているので省略。具体的にはレジストリいじり。さらには既存CTRLはそのままなので、 つまりCAPSLOCKは消滅です。

特徴としてはejanさんところのスクリプトが基本。変更点はいくつか。

  • 変換は[enter]->[BS],セミコロンキーは[BS]->[enter]に。 なぜならEnterの方が使用頻度高いし、そして変換キーよりセミコロンキーのほうが打ちやすいから。
  • セミコロンを打ちたいときは無変換+セミコロンキー
  • IMEOFFをCTRLに。なぜなら上記の通りCAPSLOCKをレジストリでCTRLに入れ替えてるから。
  • Shift+変換キーでDEL
  • カットペースト関連の機能は削除。CtrlキーをCAPSLOCKに割り当ててるので。
  • AutoHotKey - falls wanking to the floorさんのところから一部拝借

  • その他Esc、Tab、Alt+Tab、Alt+F4などを割り当て。

;#NoTrayIcon
;↑トレイアイコンがなくなります。最初は表示をおすすめ。
#UseHook
GetKeyState, state, Shift

;【1.上下左右】
;vk1Dsc07Bってのは無変換キーのことね。好きなキーに書き換えてください。
vk1Dsc07B & i::
If (state = D)
{
send +{Blind}{up}
}
else
{
send {Blind}{up}
}
return

vk1Dsc07B & k::
If (state = D )
{
send +{Blind}{down}
}
else
{
send {Blind}{down}
}
return

vk1Dsc07B & j::
If (state = D )
{
send +{Blind}{left}
}
else
{
send {Blind}{left}
}
return

vk1Dsc07B & l::
If (state = D )
{
send +{Blind}{right}
}
else
{
send {Blind}{right}
}
return


;【2.home,end】
vk1Dsc07B & h::
If (state = D )
{
send +{Blind}{home}
}
else
{
send {Blind}{home}
}
return

vk1Dsc07B & n::
If (state = D )
{
send +{Blind}{end}
}
else
{
send {Blind}{end}
}
return

;【3.pageup,pagedown】
vk1Dsc07B & o::
If (state = D )
{
send +{Blind}{pgup}
}
else
{
send {Blind}{pgup}
}
return

vk1Dsc07B & .::
If (state = D )
{
send +{Blind}{pgdn}
}
else
{
send {Blind}{pgdn}
}
return


;【4.Ctrl+上下左右】
vk1Dsc07B & e::
If (state = D )
{
send +{Blind}^{up}
}
else
{
send {Blind}^{up}
}
return

vk1Dsc07B & d::
If (state = D )
{
send +{Blind}^{down}
}
else
{
send {Blind}^{down}
}
return

vk1Dsc07B & s::
If (state = D )
{
send +{Blind}^{left}
}
else
{
send {Blind}^{left}
}
return

vk1Dsc07B & f::
If (state = D )
{
send +{Blind}^{right}
}
else
{
send {Blind}^{right}
}
return

;【4.5.ctrl+pageup,pagedown】
vk1Dsc07B & w::
If (state = D )
{
send +{Blind}^{pgup}
}
else
{
send {Blind}^{pgup}
}
return

vk1Dsc07B & x::
If (state = D )
{
send +{Blind}^{pgdn}
}
else
{
send {Blind}^{pgdn}
}
return


;【5.Ctrl+home,end】
vk1Dsc07B & g::
If (state = D )
{
send +{Blind}^{home}
}
else
{
send {Blind}^{home}
}
return

vk1Dsc07B & b::
If (state = D )
{
send +{Blind}^{end}
}
else
{
send {Blind}^{end}
}
return

;【6.Enter】
vkBBsc027::
If (state = D )
{
send +{Enter}
}
else
{
send {Enter}
}
return
;vkBBsc027は日本語キーボードのセミコロンキーのことね。

;【7.Backspace&Delete】
vk1Csc079::send {BS}
+vk1Csc079::send {Del}

;【7.5 無変換+セミコロンでセミコロンを出力】
vk1Dsc07B & vkBBsc027::send {;}

;【8.IMEをONにする】
;AutoHotKey - IMEを特定のホットキーで操作をみてね。
#include ime_func.ahk
vk1Dsc07B::
howime := IME_CHECK("A")
if (%howime% = 0)
{
IME_ON("A")
return
}
else
{
howimemode := IME_GetConvMode("A")
if (%howimemode% = 25)
{
return
}
else
{
IME_SetConvMode("A",25)
return
}
}

;【8.5.IMEをOFFにする】
Ctrl::
IME_OFF("A")
return

;【9.Tabを無変換+A,Shift+Tabを無変換+zに割り当てる】
vk1Dsc07B & a::
If (state = D)
{
send +{Tab}
}
else
{
send {Tab}
}
return

vk1Dsc07B & z::send +{Tab}

;【10.ESCを無変換+Qに割り当てる】
vk1Dsc07B & q::
If (state = D)
{
send +{Esc}
}
else
{
send {Esc}
}
return

;【11.Alt+F4を無変換+Rに割り当てる】
vk1Dsc07B & r::
If (state = D)
{
send +!{F4}
}
else
{
send !{F4}
}
return

;【12AltTabを無変換+Uに、ShiftAltTabを無変換+Mに割り当てる】
vk1Dsc07B & u::AltTab
vk1Dsc07B & m::ShiftAltTab

;【13.Ctrl+Nキーにてコモンダイアログで新規フォルダを作る】
^n::
IfWinActive,ahk_class #32770
{
PostMessage, 0x111, 40962
}
Else
IfWinActive, 名前を付けて保存
{
Send,!l{LEFT 2}{ENTER}
}
Else
IfWinActive, ファイルを開く
{
Send,!l{LEFT 2}{ENTER}
}
Else
send ,^n
return


;【14.無変換+vにてAutoHotKeyリロード】
vk1Dsc07B & v::Reload
return

#UseHook off

トラックバック

このエントリーのトラックバックURL:
http://nishioka-blog.com/mt-tb.cgi/262

コメントを投稿

このサイトについて

mail: nishioka.blog at gmail.com

このサイトは携帯に対応しています。http://nishioka-blog.com/に携帯からアクセスして頂ければOKです。

2009年12月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
西岡の最近読んだ本

最近のコメント

About

2008年06月03日 20:47に投稿されたエントリーのページです。

ひとつ前の投稿は「ブログ書きは脳内開放であり脳ストレッチかなー」です。

次の投稿は「犯罪者になる確率51%」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。