<mouse_is>
}{<win_activate>
}{2023-12-27}{2023-12-26}(20)サウンドやマイクのボリュームをタスクバー上でコントロールするとの競合が発生してしまったため、タスクバーにマウスカーソルがある場合は無効化する──該当機能を優先させる──ようにした。
競合が発生するソースのファイルを別々に分けたままにしておきたくないけど、いったんそのままにしておく……
#Requires AutoHotkey v2.0
#SingleInstance Force
#include <win_activate>
#Include <mouse_is>
;--------------------------------------------------------------------
; ここからイベント毎の動作定義
;--------------------------------------------------------------------
; Alt+Ctrlキーを押して離す
~!Ctrl Up::
{
MouseOverWinActivate()
return
}
; マウスホイールを押し込む
; ただし、タスクバーにマウスカーソルがない場合に限る。
#HotIf !MouseIsOver("ahk_class Shell_TrayWnd")
MButton::
{
BackgroundWinActivateOrPassThrough("{MButton}")
return
}
<win_activate>
}{<multi_monitor>
}{アクティブ}{ウィンドウ}{マウスカーソル}{Ctrl}{Win}{移動}(10)#SingleInstance Force
#Include <win_activate>
#Include <multi_monitor>
;--------------------------------------------------------------------
; アクティブなウィンドウの中心にマウスカーソルを移動する
; ただし、デスクトップがアクティブの場合は実行しない
;--------------------------------------------------------------------
#HotIf !WinActive("ahk_class Progman")
; 各種操作をすると起動
; ・Ctrlキーを押しながらWindowsキーを押す
; ※Windowsキーを押しながらCtrlキーを押す組み合わせはタッチパッド操作に影響が出てしまうので不採用
; ・Windowsキーを押しながらマウスホイールを押す
;A_MenuMaskKey := "vkFF" ; 不要っぽい
^~LWin Up::
^~RWin Up::
#MButton::
{
SetMouseToActiveWindow(MouseSetPosInMultiMonitor)
return
}
::
の直前には修飾キー指定ができない<multi_monitor>
}{ブレさす}{マウスカーソル}(4)アイドル状態でも画面がスリープしないようにしたかったが、上手くいかない。物理的なキーボード入力信号を経由しないとダメそうだ。
#Requires AutoHotkey v2.0
#SingleInstance Force
#Include <multi_monitor>
;--------------------------------------------------------------------
; ユーザー操作が途絶えてから約10分後にマウスカーソルをブレさす
; なお、一度マウスカーソルをブレさせた場合、ユーザー操作が行われたものとする
;--------------------------------------------------------------------
TimerIntervalSec := 1 * 60
IdleTimeSec := 10 * 60
PixelMoving := 100
SetTimer ShakeMouse, TimerIntervalSec * 1000
ShakeMouse()
{
; ユーザー操作が途絶えてからの時間を確認する
if A_TimeIdle < IdleTimeSec * 1000 {
return
}
; マウスカーソルの位置を取得する
MouseGetPosInMultiMonitor(&x, &y)
; マウスカーソルを移動する(プラスの相対位置)
; ※マルチモニター環境だと正しい位置が取得できない可能性があるが、一時的にカーソルを動かすだけなので問題なし
MouseMove(PixelMoving, PixelMoving, , "R")
; マウスカーソルを移動する(マイナスの相対位置)
; ※マルチモニター環境だと正しい位置が取得できない可能性があるが、一時的にカーソルを動かすだけなので問題なし
MouseMove(0 - PixelMoving, 0 - PixelMoving, , "R")
; マウスカーソルを元の位置に戻す
MouseSetPosInMultiMonitor(x, y)
; Ctrlキー入力
Send "{Ctrl}"
return
}
キーボードでのカーソル移動はシーケンシャルアクセスに近いので、マウスカーソルでの移動も組み合わせた方が効率が良いのではないか。
タッチパネルも惜しみなく使えるようにしたい。
でもモニターに手がなかなか届かない。
PCがペンと紙に負けてる部分。
マウスを上に払うと当然そこには知名欄があるので、マウスカーソルが知名欄に重なり、フォーカスが描写欄から外れてしまうのだ。
また、マウスカーソルが当たってフォーカスが変わるのは知名欄だけではなく、引き入れ・引き入れられた輪郭のリンクにも言えることだった。
それにもかかわらず、知名欄だけが問題のように思えたのは、自分自身の手癖と知名欄の位置の相性が良くなかったからだ。
もし、手癖がマウスを下に払うものであったら、引き入れの輪郭リンクを槍玉に挙げていたのだろう。
修正すべきは自分の手癖だった。