Hatena::ブログ(Diary)

Cherenkovの暗中模索にっき RSSフィード Twitter

2011-08-26

AutoHotkeyを使ってChromeのタブ周りの操作を快適にする

ダブル中クリックでchromeのタブを復元する設定を書いた。

AutoHotkeyを使ってChromeのタブ切り替えをマウスホイールで行う - Cherenkovの暗中模索にっき の設定と合わせて

#IfWinActive ahk_class Chrome_WidgetWin_0

;mouse wheel to tab switch
~WheelUp::
MouseGetPos, x, y
if (y < 45) {
  send, ^{PgUp}
}
return

~WheelDown::
MouseGetPos, x, y
if (y < 45) {
  send, ^{PgDn}
}
return


;double middle click to reopen closed tab
~MButton::
MouseGetPos, x, y
if (y < 45) {
  if ((A_PriorHotKey = A_ThisHotKey) && (A_TimeSincePriorHotkey < 300)) {
    send ^+t
  }
}
return

#IfWinActive

*1

*1:double middle mouse click 中クリック ミドルマウス ミドルクリック

2011-08-23

AutoHotkeyを使ってホイールクリックで貼り付け(Chrome等で)

Vista SP2, Chrome13, AutoHotkey 1.1.02.03 で動作確認。


;chromeでホイールクリックしたら貼り付け
;ホイールクリックしながらドラッグでスクロールする機能を生かすために、キーが離されたらコピペする動作
#IfWinActive ahk_class Chrome_WidgetWin_0
~MButton::
KeyWait, MButton
send, ^v
return
#IfWinActive

#IfWinActive ahk_class Chrome_WidgetWin_0のとこをとっぱらってchrome以外も汎用的に動作することもできるけど、不都合がでたり自分が求めてないので。

と思ってたけど、「middlemouse.pasteに相当するuserChrome.js」を使う必要がなくなったり、意外と便利だったので汎用的にしてしばらく使ってみる。

;chromeでホイールクリックしたら貼り付け
;ホイールクリックしながらドラッグでスクロールする機能を生かすために、キーが離されたらコピペする動作
~MButton::
KeyWait, MButton
send, ^v
return

ホイールクリックでタブを閉じる人は、inputにフォーカスがある状態でタブを閉じるとペーストされちゃいますね。どうしたもんか。


追記

コピーした画像やテキストを右ダブルクリックでペーストする方法 : ライフハッカー[日本版] を参考にすることにした。

;Double Right Click to paste (http://www.lifehacker.jp/2009/07/post_1009.html)
~RButton::
If ((A_PriorHotKey = A_ThisHotKey) && (A_TimeSincePriorHotkey < 300)) {
  Sleep 200
  Send {Esc}
  Send ^v
}
Return

参考

*1

AutoHotkeyを使ってChromeのタブ切り替えをマウスホイールで行う

Vista SP2, Chrome13, AutoHotkey_L 1.0.92.02, AutoHotkey 1.1.02.03 で動作確認。


;chromeのタブ切り替えをマウスホイールで行う
#IfWinActive ahk_class Chrome_WidgetWin_0
~WheelUp::
MouseGetPos, x, y
if (y < 45) {
  send, ^{PgUp}
}
return


~WheelDown::
MouseGetPos, x, y
if (y < 45) {
  send, ^{PgDn}
}
return
#IfWinActive

追記

ウィンドウの下の方(下から15%の高さ)でもタブ切り替えできるように改造した。普通のサイトだとスクロール位置がずれるけど主に画像ファイルで使うので気にしない。

#IfWinActive ahk_class Chrome_WidgetWin_0
~WheelUp::
MouseGetPos, x, y
WinGetActiveStats, title, width, height, winx, winy
if (y < 45) {
  send, ^{PgUp}
} else if ( y > height * 0.85 && y < height) { ;ウィンドウの下の部分でもタブ切り替えができるように。スクロール位置がずれたりするけど対応できなかった
  send, {click, WheelDown}^{PgUp}
}
return

~WheelDown::
MouseGetPos, x, y
WinGetActiveStats, title, width, height, winx, winy
if (y < 45) {
  send, ^{PgDn}
} else if ( y > height * 0.85 && y < height) {
  send, {click, WheelUp}^{PgDn}
}
return
#IfWinActive


参考

*1:中クリック middle click mouse ミドル マウス

2011-06-29

PCの時計を2011/02/15 00:00:00より前にするとはてなスターがバレンタイン仕様になる

どうでもいい。

HatenaStar.js

/* Valentine's Day */ 
try {
(function () {
    var valentine_end = new Date('2011/02/15 00:00:00');
    var now = new Date();
    if (now < valentine_end) {
        Hatena.Star.Star.ColorPallet.yellow.ImgSrc = Hatena.Star.BaseURL + 'images/valentine-star.gif';
        Hatena.Star.Star.ColorPallet.green.ImgSrc  = Hatena.Star.BaseURL + 'images/valentine-star-green.gif';
        Hatena.Star.Star.ColorPallet.red.ImgSrc    = Hatena.Star.BaseURL + 'images/valentine-star-red.gif';
        Hatena.Star.Star.ColorPallet.blue.ImgSrc   = Hatena.Star.BaseURL + 'images/valentine-star-blue.gif';
        Hatena.Star.Star.ColorPallet.purple.ImgSrc = Hatena.Star.BaseURL + 'images/valentine-star-purple.gif';
        Hatena.Star.Star.ColorPallet.temp.ImgSrc   = Hatena.Star.BaseURL + 'images/valentine-star-temp.gif';
    }
})()
} catch (e) {}


また、時計がズレた状態でFirefoxgmailなどを開くと「接続の安全性を確認できません」となって困る。

インターネット時刻で同期する際もある程度リアルな日時に仮設定しないとエラーがでて同期に失敗する。

2011-05-10

formヘルパーのfieldNameはモデル名を含めて書こう

コントローラ側:

$uses = array('UserMst', 'UserList');

ビュー側:

$form->text('nickname');

の場合、nicknameは$usesの先頭のモデルのフィールドと見なされて、送られるデータは

['UserMst']['nickname']

な形になる。


複数のモデルを使用してたりする場合は、以下のようにformヘルパーできちんとモデル名を含めたfieldNameにしておいたほうが、トラブルを避けることが出来る。

$form->text('UserMst.nickname');