https://nlab.itmedia.co.jp/nl/articles/2406/10/news108.html
🍙👍
少し修正したので貼っておこー
https://ahkscript.github.io/ja/docs/v2/misc/Remap.htm
#SingleInstance Force
; ----------------------------------------
; helper function
; ----------------------------------------
; OS情報取得
GetWinOSVersion()
{
osVersion := StrSplit(A_OSVersion, ".")
major := osVersion[1]
minor := osVersion[2]
build := osVersion[3]
If (major == "10")
If (minor == "0")
If (build >= "20000")
Return 11
Return 10
}
; ディスプレイ情報取得
getDisplayInfo(&x, &y, &width, &height)
{
MonitorGetWorkArea(1, &Left, &Top, &Right, &Bottom)
x := Left
y := Top
width := Right - Left
height := Bottom - Top
}
; 画面位置取得
getWindowPosition(windowPosition, &x, &y, &width, &height)
{
; ディスプレイ情報取得
getDisplayInfo(&x, &y, &width, &height)
; 画面サイズ補正
; 画面の左,右,下に隙間が空くので補正する。
; ウインドスタイル「WS_SYSMENU」が設定されていない画面は補正なし。(例:VSCode)
edge := 0
if (GetWinOSVersion() == 11) {
style := WinGetStyle("A")
if (style & 0x00080000) { ; WS_SYSMENU
edge := 7 ; px
}
}
; 画面位置計算
if (windowPosition == 1) {
x := x - edge
y := y
width := width / 2 + edge * 2
height := height + edge
}
if (windowPosition == 2) {
x := width * 0.1
y := y
width := width * 0.8 + edge * 2
height := height + edge
}
if (windowPosition == 3) {
x := width / 2 - edge
y := y
width := width / 2 + edge * 2
height := height + edge
}
if (windowPosition == "q") {
x := x - edge
y := y
width := width / 2 + edge * 2
height := height / 2 + edge
}
if (windowPosition == "a") {
x := x - edge
y := height / 2 + y
width := width / 2 + edge * 2
height := height / 2 + edge
}
if (windowPosition == "w") {
x := width / 2 - edge
y := y
width := width / 2 + edge * 2
height := height / 2 + edge
}
if (windowPosition == "s") {
x := width / 2 - edge
y := height / 2 + y
width := width / 2 + edge * 2
height := height / 2 + edge
}
OutputDebug("x=" x " y=" y " width=" width " height=" height)
}
; 画面位置設定
setWindowPosition(windowPosition) {
getWindowPosition(windowPosition, &x, &y, &width, &height)
try {
hwnd := WinGetID("A")
WinMove(x, y, width, height, hwnd)
}
}
; ----------------------------------------
; main
; ----------------------------------------
; 矢印キー × 5
^Up::Send "{UP 5}"
^Down::Send "{Down 5}"
^Left::Send "{Left 5}"
^Right::Send "{Right 5}"
; 上下左右
^*i::Send "{UP}"
^*k::Send "{Down}"
^*j::Send "{Left}"
^*l::Send "{Right}"
^*u::Send "{Home}"
^*o::Send "{End}"
; 削除
^*h::Send "{BS}"
; 画面移動(左/中央/右)
!1::setWindowPosition("1")
!2::setWindowPosition("2")
!3::setWindowPosition("3")
; 画面移動(左上/左下/右上/右下)
!q::setWindowPosition("q")
!a::setWindowPosition("a")
!w::setWindowPosition("w")
!s::setWindowPosition("s")
; 音量調整
^F10::Send "{VOLUME_MUTE}"
^F11::Send "{VOLUME_DOWN}"
^F12::Send "{VOLUME_UP}"
Ctrl + 矢印キー:矢印キー5回連打
Ctrl + iキー :上キー*
Ctrl + kキー :下キー*
Ctrl + jキー :左キー*
Ctrl + lキー :右キー*
Ctrl + uキー :Homeキー*
Ctrl + oキー :Endキー*
Ctrl + hキー :BackSpace
Alt + 1キー :アクティブ画面左寄せ
Alt + 2キー :アクティブ画面中央寄せ
Alt + 3キー :アクティブ画面右寄せ
Alt + qキー :アクティブ画面左上寄せ*
Alt + aキー :アクティブ画面左下寄せ*
Alt + wキー :アクティブ画面右上寄せ*
Alt + sキー :アクティブ画面右下寄せ*
Ctrl + F10 :音量ミュート
Ctrl + F11 :音量Down
Ctrl + F12 :音量UP
*:機能追加
モニター1台の環境を前提としているため、別途修正するかもしれない。