AutoHotKeyで、Opera10.60以降のタブ切り替えをホイールのみで可能にした+α。

 Ctrl+Tabで表示されるサムネイルを有効利用したくなったのでやってみた。なんかAHK祭りだな。

 「特定位置でホイールを回すとCtrl+Tabを出力してタブを切り替える」機能自体は相変わらず。ただ今回のは、ホイールを回してる間はタブ一覧が表示されっぱなしで、実際には切り替わらない。ホイールに触れず、しばらく放置すると切り替わる。これにより、「タブの切り替えにサムネイルを表示」設定にしておくと、軽快にタブを縦断できるって寸法よ。

;--------------------------------------------------
; Opera
;--------------------------------------------------
#IfWinActive ahk_class OperaWindowClass

OpTabCheck(){
  MouseGetPos, PosX, PosY, , Ctrl
  if (0 <= PosY) && (90 >= PosY)
    return 1
  return 0
}

OpTabRelease:
  OpTabSelect := 0
  send, {Ctrl Up}
return

$~WheelUp::
  if(OpTabCheck())
  {
    SetTimer, OpTabRelease, -800
    OpTabSelect := 1
    send, {Ctrl Down}+{Tab}
  }
return

$~WheelDown::
  if(OpTabCheck())
  {
    SetTimer, OpTabRelease, -800
    OpTabSelect := 1
    send, {Ctrl Down}{Tab}
  }
return

$^WheelUp::
  if (OpTabSelect)
  {
    SetTimer, OpTabRelease, -800
    send, +{Tab}
  }
  else
  {
    send, ^{WheelUp}
  }
return

$^WheelDown::
  if (OpTabSelect)
  {
    SetTimer, OpTabRelease, -800
    send, {Tab}
  }
  else
  {
    send, ^{WheelDown}
  }
return

 800のところを短くすれば、すぐに切り替わるようになる。逆に、もっと伸ばして、キー入力で切り替わるようにしてもいい。このままでも右クリックすれば行けるっぽい。ただその場合、「タイマー切れるまでCtrlは押しっぱなし」ということに注意。
 増やすにしろ減らすにしろ、ハイフンははずしちゃダメ。

 *WheelUp::とかにすればWheelUp::と^WheelUp::を分ける必要はないのだが、そうするとタブ切り替えたいだけなのにCtrl+ホイールでページの表示倍率変えちゃうことがあるなーという理由でやめた。――タブバー上からレンダリングペインまで、ホイール回しながら移動してこないとそんなことにはならないけど……。


[PR]
by lordnoesis | 2011-03-17 12:27 | テクノロジ | Trackback | Comments(0)

AutoHotKeyで、キー二連打にいろいろ割り当ててみた。2

 二連打は組み込み変数使えばもっとスマートにできるね。

PutEsc:
  Send,{Esc}
return

$Esc::
  WinGet, AWinHwnd, ID, A
  if (BefAWinHwnd == AWinHwnd) && (A_PriorHotkey == A_ThisHotkey) && (200 > A_TimeSincePriorHotkey) {
    SetTimer, PutEsc, OFF
    send, !{F4}
  } else {
    BefAWinHwnd := AWinHwnd
    SetTimer, PutEsc, -200
  }
  keywait, Esc
return

 以前書いたAHKスクリプトを改良。前回、少しあとで簡単にできることに気づいたんだけど、それほど切迫してないしと放置してるあいだにそのことを忘れるというありがちな罠。

; Esc二連打でウィンドウ閉じる(1回だけならEsc)
PutEsc:
  Send,{Esc}
return

$Esc::
  if A_TickCount < %EscDouble%
  {
    SetTimer, PutEsc, OFF
    EscDouble = 0
    send, !{F4}
    return
  }
  else
  {
    EscDouble = %A_TickCount%
    EscDouble += 400
    SetTimer, PutEsc, -400
  }
  KeyWait, Esc
return

 説明するまでもない。便利。他に応用すれば便利そうな予感はするが、特にこれといって思いつかない(ぐへー。


[PR]
by lordnoesis | 2011-03-17 11:41 | テクノロジ | Trackback | Comments(0)

MouseGesture.ahkで"半画面"してみた。5

 なんとなくほぼゼロから作り直してマルチモニタとタスクバーに対応させてみたver.2。
 マルチモニタ対応なら簡単かなーと思ったら、タスクバー避ける方が簡単だった罠。

 改めて説明すると、これはWindows7のAeroSnapのように「モニタの左右どちらかに最大化」できる「MouseGesture.ahk」用のジェスチャースクリプト。ウィンドウのタイトルバーをミドルクリック(ホイールクリック)することで"半画面化"でき、その状態でさらに同じ操作をすると逆側に移動する。
 ver.2からはマルチモニタ環境に対応。「タスクバーを自動的に隠す」設定でなくとも問題なく半画面化可能。そのほか、解像度によっては半画面化の切り替えができない問題とかも改善。

[TitleBar]
Custom=MG_HitTest()="Caption"

[MB__]
G=MB__
TitleBar=WinActivate【TAB】WinHC := MG_WinH() // 2 + MG_WinY()【TAB】WinWC := MG_WinW() // 2 + MG_WinX()【TAB】【TAB】Loop, 3【TAB】{【TAB】【TAB】Cnt := A_Index - 1【TAB】【TAB】SysGet, Mnt, MonitorWorkArea, %Cnt%【TAB】【TAB】if ((MntTop < WinHC) && (WinHC < MntBottom) && (MntLeft < WinWC) && (WinWC < MntRight))【TAB】【TAB】【TAB】break【TAB】}【TAB】MntWC := (MntRight - MntLeft) // 2【TAB】【TAB】offset := 0【TAB】if (MG_Win("MinMax") == 1) {【TAB】【TAB】if (MG_WinW() == MntWC) {【TAB】【TAB】【TAB】if (MG_WinX() == MntLeft + MntWC) {【TAB】【TAB】【TAB】【TAB】offset := 0 - MntWC【TAB】【TAB】【TAB】} else {【TAB】【TAB】【TAB】【TAB】if (MG_WinX() == MntLeft) {【TAB】【TAB】【TAB】【TAB】【TAB】offset := MntWC【TAB】【TAB】【TAB】【TAB】}【TAB】【TAB】【TAB】}【TAB】【TAB】}【TAB】} else {【TAB】【TAB】WinMaximize【TAB】}【TAB】【TAB】if (MG_WinY() < MntTop) {【TAB】【TAB】WinTY := MntTop【TAB】【TAB】WinTH := MntBottom - MntTop【TAB】} else {【TAB】【TAB】WinTY := MG_WinY()【TAB】【TAB】WinTH := MntBottom - MG_WinY()【TAB】}【TAB】【TAB】if (WinWC - MntLeft + offset >= MntWC) {【TAB】【TAB】WinMove, A, , MntLeft + MntWC, WinTY, MntWC, WinTH【TAB】} else {【TAB】【TAB】WinMove, A, , MntLeft, WinTY, MntWC, WinTH【TAB】}
CWEditor=Send,{LButton}{AppsKey}{Down}{Enter}{BS}

 実際やってみたらMonitorWorkArea使うだけでよかったので、もっと早くやっとけばよかったか。しかし、大して機能は増えてないくせに、処理とスクリプト量は増えたなぁ……。

 モニタが4つ以上ある環境では"Loop, 3"の数字を増やす。別に数字なくても(無制限でも)いいはずなんだが、安全策で。


[PR]
by lordnoesis | 2011-03-17 10:54 | テクノロジ | Trackback | Comments(0)

Twitter公式ウィジェットをCSSでカスタマイズしてみた。

 ニュース等に対するちょっとしたコメントははてブ経由でTwitterを使うようにしてみたら、案の定blogを更新するネタが枯渇した件(ぐへー。

 ともあれ、形式上はあくまでPOIを補完するものなので、POIからついーと見れるようにした。本当はもっと早くやりたかったのだが、エキブロのブログパーツ制限だとか、公式ウィジェットの無駄なデカさだとかで、延び延びに。

 そんなこんなで、150pxという限られたスペースを有効に利用すべく、Twitter公式ウィジェットをCSSで色々いじってみた。

.twtr-widget .twtr-tweet {
margin: 0px !important;
padding: 0px !important;
}
.twtr-tweet-wrap {
padding: 10px 3px !important;
}
.twtr-avatar {
margin: 0px !important;
padding: 0px !important;
height: 30px !important;
width: 30px !important;
float: none !important;
}
.twtr-tweet-text {
margin: 0px !important;
}
.twtr-join-conv {
display: none !important;
}

 変更点は「余白の調整」「アイコンのフロートを解除」「"Join the conversation"を非表示に」。これでアイコン表示しつつ、表示欄いっぱいに本文が表示される。
 アイコンいらない人は、".twtr-avatar"を"display:none;"で消す。ウィジェットの設定でアイコン非表示にするとユーザー名まで消えるので、自分のついーとなのか公式RTなのかわからない罠が。なんだそれ。
 前回試したときは埋め込みスタイルばっかだった気がしたが、今は外部CSSになってる? まあ念のため全部"!important"にしておいた。

 なお、ウィジェットのソースはwebデバッガを使えば簡単にわかる。IEならF12、OperaかChromeならCtrl+Shift+Iで呼び出せる。Fxはアドオンがあるが、このためだけに入れる必要性はない。

 気づいたらまーたウィジェット変わって表示されなくなってたので直した。webデバッガで調べてCSSで対処するのは変わらんので、記事は放置。


[PR]
by lordnoesis | 2011-03-13 22:44 | Web | Trackback | Comments(0)
ブログトップ | ファンになる