🟩 もくじ
AutoHotkeyを使ったスクリプティング
- Windowsの世界では[AutoHotkeyを使ったスクリプティング]が、[ソフトウェア的なキーボード沼]の一種として存在する。
- Windows用のテンキー付き日本語キーボード〔REALFORCE/日本語 30g 静音 フルNキー〕にこそ、不要不急の余計なキー〔アサイン可能な予備ボタン〕がたくさん付いているので、[AutoHotkeyを使ったスクリプティング]で遊べる余地が大きい。
- AutoHotkeyを使ったキーマッピングの変更/キーへの独自アサインメントの一例。
- ■[無変換]は、[マウス左クリック]。
- ■[無変換+Space]は、[マウスによる選択範囲をクリップボードに読み込み、そのワードでGoogle検索]。
- ■[Caps]は[c]にしたから、[Ctrl+Caps]=[Ctrl+c]。
- ■[Ctrl+Tab]は、[すべてを選択+貼り付け]。
- ■[Ctrl+Back Space]は、[ブラウザーバック]。
- ■[Shift+Ctrl+Back Space]は、[ブラウザーフォワード]。
- ■[Windowsロゴボタン+w]は、[WZ EDITOR起動]。
- ■[Windowsロゴボタン+s]は、[サクラエディタ起動]。
- ■[Windowsロゴボタン+s〔二度押し〕]は、[ファイルAをサクラエディタで開く]。
- ■[Windowsロゴボタン+s〔長押し〕]は、[ファイルBをサクラエディタで開く]。
- ■[Scroll Lock]は、[クリップボードを使った、正規表現による文字置換〔AutoHotkey V2.1のみ〕]。
- そういう機能を、[AutoHotkey.ahk]というテキストファイルの中に、スクリプトとして書き込んでいく。
- こうしてキーボード操作だけで作業が完結する範囲が増えることによって、マウス操作が減るので効率的。
- こういう工夫の世界が面白いので、しょっちゅう[AutoHotkey.ahk]を書き換えている。これがキーボード沼。
; AutoHotkeyはWindows専用であり、Linux・macOSには非対応である。
; AutoHotkey.exe〔メイン実行ファイル〕とAutoHotkey.ahk〔デフォルトスクリプト〕の
; [AutoHotkey]というファイル名部分をリネームする場合は、
; 実行ファイルとスクリプトのベース名を必ず一致させる必要がある。
; 例:MyScript.exe と MyScript.ahk のように揃える。
; AutoHotkey.exeは、Windowsのログインセッションごとに
; 複数プロセスを起動できるが、
; 同一スクリプトの多重起動はデフォルトで排他制御され、
; 既存プロセスが優先され、新規プロセスは終了される。
; AutoHotkey.ahk〔スクリプトファイル〕は
; 文字コードを[UTF-8 with BOM:必須]、
; 改行コードを[CR+LF(Windows形式):推奨]で保存する。
; ■<a href="https://www.onlinemictest.com/ja/keyboard-test/" target="_blank" rel="nofollow">キーボードテスト – あなたのキーボードをテストしましょう</a><br>
; ●●●[AHK Quick Convertor V2]を使ってコードをコンバートしてある
; ■<a href="https://github.com/mmikeww/AHK-v2-script-converter?tab=readme-ov-file" target="_blank" rel="nofollow">GitHub - mmikeww/AHK-v2-script-converter: AHK v1 -> v2 script converter</a><br>
; 全角/半角|vkF3 または vkF4
; 変換|vk1C
; 無変換|vk1D
; カタカナ/ひらがな/ローマ字|vkF2
; windows|#
; Alt|!
; Ctrl|^
; Shift|+
; 左のモディファイアキーを使用(NT系専用)|<
; 右のモディファイアキーを使用(NT系専用)|>
; AutoHotkey 2.0:空白文字:\s = [ `t`r`n]
; AutoHotkey 2.0:空白文字以外:\S = [^ `t`r`n]
; グローバル変数は、最新のAutoHotkey 2.0以上では、何もしなくても、以下のように宣言するだけで常駐する
; global jpChars := "一-龯ぁ-ゖァ-ヶ0-9A-Za-z!-/:-@[-`{-~ 〜々〆〻「」『』【】《》〈〉“”‘’・…※"
; global Hankaku := "[!-~&&[^.?!]]"
global jpChars := "一-龯ぁ-んァ-ヶーA-Za-z0-9!-/:-@[-`{-~ 々〆〻「」『』【】《》〈〉“”‘’・…※〜"
global hankaku := "!-~"
; Shift + Alt + Tを押すと、Ctrl + Alt + 0〔更新時刻取得〕を押したことにする。
+!t::Send "^!0"
; Shift + Alt + Dを押すと、Ctrl + Alt + y〔Hugo実行〕を押したことにする。
+!d::Send "^!y"
; Shift + Alt + Cを押すと、Ctrl + Alt + 2〔LibreOffice Calc〕を押したことにする。
+!c::Send "^!2"
; Shift + Alt + Bを押すと、Ctrl + Alt + x〔BunBackup〕を押したことにする。
+!b::Send "^!x"
; Shift + Alt + Gを押すと、Ctrl + Alt + 7〔BlueGriffon〕を押したことにする。
+!g::Send "^!7"
; Shift + Alt + Sを押すと、Ctrl + Alt + 5〔サクラエディタでファイルを開く〕を押したことにする。
+!s::Send "^!5"
; Shift + Ctrl + 7 でバッククォート〔AutoHotkeyのエスケープ文字〕を入力
+^7::Send "{text}``"
; AutoHotkey v2.0で Shift + Alt + M を押した際にサクラエディタでのソートの後にマージする
+!m::
{
Send "{Ctrl Down}" ; Ctrlキーを押す
Send "v" ; vキーを入力
Send "a" ; aキーを入力
Send "{Ctrl Up}" ; Ctrlキーを離す
Send "{Alt Down}" ; Altキーを押す
Send "a" ; aキーを入力
Send "m" ; mキーを入力
Send "{Alt Up}" ; Altキーを離す
Send "{Enter}" ; Enterキーを入力
Send "{Ctrl Down}" ; Ctrlキーを押す
Send "a" ; aキーを入力
Send "c" ; cキーを入力
Send "{Ctrl Up}" ; Ctrlキーを離す
}
; ●●●Windowsキー + w キーを同時押ししてWZ Editor 10を起動する
#UseHook ; UseHookをOnにした状態で使用
#w::
{
key := "w"
ErrorLevel := !KeyWait(key, "T0.3")
If(ErrorLevel){ ; 長押しした場合
Run("C:\Program Files (x86)\sakura\sakura.exe C:\Users\" A_UserName "\Documents\note-archive.html")
ErrorLevel := !KeyWait(key)
return
}
ErrorLevel := !KeyWait(key, "D, T0.2")
If(!ErrorLevel){ ; 2度押しした場合
Run("C:\Program Files (x86)\sakura\sakura.exe C:\Users\" A_UserName "\Documents\bookmarkstoday.html")
ErrorLevel := !KeyWait(key)
return
}else{ ; 短押しした場合
Run("C:\Program Files\WZ EDITOR 10\wzeditor.exe")
ErrorLevel := !KeyWait(key)
return
}
}
; ●●●Windowsキー + s キーを同時押ししてサクラエディターを起動する
#UseHook ; UseHookをOnにした状態で使用
#s::
{
key := "s"
ErrorLevel := !KeyWait(key, "T0.3")
If(ErrorLevel){ ; 長押しした場合
Run("C:\Program Files (x86)\sakura\sakura.exe C:\Users\" A_UserName "\Documents\note-archive.html")
ErrorLevel := !KeyWait(key)
return
}
ErrorLevel := !KeyWait(key, "D, T0.2")
If(!ErrorLevel){ ; 2度押しした場合
Run("C:\Program Files (x86)\sakura\sakura.exe C:\Users\" A_UserName "\Documents\bookmarkstoday.html")
ErrorLevel := !KeyWait(key)
return
}else{ ; 短押しした場合
Run("C:\Program Files (x86)\sakura\sakura.exe")
ErrorLevel := !KeyWait(key)
return
}
}
^Tab::
{
if (KeyWait("c", "D T0.5") = 0) ; cキーが0.5秒以内に押されないのを待つ
{
; cキーが押された場合
Send "^a" ; すべてを選択
Send "^v" ; クリップボードの内容を貼り付ける
Send "{Enter}" ; [Enter]
}
else
{
; cキーが押されなかった場合
Send "^a" ; すべてを選択
Send "^v" ; クリップボードの内容を貼り付ける
}
}
^+Tab::
{
if (KeyWait("c", "D T0.5") = 0) ; cキーが0.5秒以内に押されないのを待つ
{
; cキーが押された場合
Send "^a" ; すべてを選択
Send "^v" ; クリップボードの内容を貼り付ける
}
else
{
; cキーが押されなかった場合
Send "^a" ; すべてを選択
Send "^v" ; クリップボードの内容を貼り付ける
}
}
; ●●●[Shift]+[Tab]で全選択貼り付け
+Tab::
{
Send "^a" ; すべてを選択
Send "^v" ; クリップボードの内容を貼り付ける
}
; ●●●[Alt]+[z]で読点[、]
!z::
{
Send "," ; 、
Send "{Space}" ; 変換
Sleep(80) ; 間をあける
Send "{Enter}" ; 確定
}
; ●●●[Alt]+[x]で句点[。]
!x::
{
Send "." ; 、
Send "{Space}" ; 変換
Sleep(80) ; 間をあける
Send "{Enter}" ; 確定
}
; ●●●[Ctrl]+[無変換]で全選択貼り付け
^vk1D::
{
Send "^a" ; すべてを選択
Send "^v" ; クリップボードの内容を貼り付ける
}
; ●●●[Alt]+[無変換vk1D]でハイライト箇所のワードでGoogle検索
!vk1D::
{
Send("^c")
Sleep(450)
ClipboardText := A_Clipboard
if (ClipboardText != "")
{
Run("https://www.google.com/search?q=" ClipboardText)
}
return
}
; ●●●[Alt]+[Space]でハイライト箇所のワードでGoogle検索
!Space::
{
Send("^c")
Sleep(450)
ClipboardText := A_Clipboard
if (ClipboardText != "")
{
Run("https://jp.mercari.com/search?keyword=" ClipboardText)
}
return
}
; ●●●[無変換vk1D]+[Space]でハイライト箇所のワードでAmazon検索
vk1D & Space::
{
Send("^c")
Sleep(450)
ClipboardText := A_Clipboard
if (ClipboardText != "")
{
Run("https://www.amazon.co.jp/s?k=" ClipboardText)
}
return
}
; ●●●[無変換vk1D]単独はマウス左クリック
vk1D::
{
MouseClick("left", , , , , "down")
KeyWait("vk1D")
MouseClick("left", , , , , "up")
return
}
; ●●●[Ctrl]+[Back Space]で[ブラウザ戻る]
^Backspace::
{
Send("{Browser_Back}")
return
}
; ●●●[Shift]+[Ctrl]+[Back Space]で[ブラウザ進む]
+^Backspace::
{
Send("{Browser_Forward}")
return
}
; ●●●ScrollLock 音声リーダー[音声および動画ファイルの自動文字起こし]の余計な空白などを除去し整える
; ●●●http://www7a.biglobe.ne.jp/~khh/ss/ss012.html
; ●●●http://ahkwiki.net/RegEx
ScrollLock::
{
A_Clipboard := ""
Send("^a")
Send("^x")
Errorlevel := !ClipWait(1)
if (ErrorLevel != 0)
{
return
}
; RegExReplaceの置換先の改行は[`r`n]
; 初期処理:クリップボードから読み込み
a01 := A_Clipboard
; 制御文字削除処理〔絵文字関連含む〕
a01 := RegExReplace(a01, "[\x00-\x08\x0B-\x1F\x7F-\x9F\x{200B}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{206F}\x{FE00}-\x{FE0F}\x{FEFF}]", "")
; 配列置換ループ
patterns := [
["\x{007E}", "~"], ; ~ 半角チルダ
["\x{02DC}", "~"], ; ˜ スモールチルダ
["\x{02F7}", "~"], ; ˷ ローチルダ
["\x{2053}", "~"], ; ⁓ スウォングダッシュ
["\x{223C}", "~"], ; ∼ チルダ演算子
["\x{223D}", "~"], ; ∽ リバースチルダ
["\x{223E}", "~"], ; ∾ インバーテッドレイジーS
["\x{223F}", "~"], ; ∿ サインウェーブ
["\x{3030}", "~"], ; 〰 ウェービーダッシュ
["\x{1FC0}", "~"], ; ῀ ギリシャ語周囲記号
["\x{301C}", "~"], ; 〜 波ダッシュ〔macOSでは から 変換で波ダッシュ(U+301C)が生成される〕
["( *)~( *)", "~"], ; ~ 全角チルダ〔Windowsでは から 変換で波ダッシュ(U+FF5E)が生成される〕の前後の半角スペースを除去
["", ""] ; 【エンドマーク】:
]
for each, pattern in patterns
a01 := RegExReplace(a01, pattern[1], pattern[2])
; ●●●[全角+半角]などの間の0個以上の半角スペースを削除・処理
a01 := jpChars_Hankaku_Space(a01)
; ●●●[全角+半角]などの間の0個以上の半角スペースを削除・関数定義
; jpChars_Hankaku_Space(str) {
; ; 正規表現パターンの最適化
; str := RegExReplace(str, "U)([" jpChars "]) +([" Hankaku "])", "$1$2") ; 全角+半角の間の1個以上の半角スペースを削除
; str := RegExReplace(str, "U)([" jpChars "]) +([" jpChars "])", "$1$2") ; 全角+全角の間の1個以上の半角スペースを削除
; str := RegExReplace(str, "U)([" Hankaku "]) +([" jpChars "])", "$1$2") ; 半角+全角の間の1個以上の半角スペースを削除
; str := RegExReplace(str, "m)^-+$", "") ; 【行頭】:行頭の[-]しかない行を削除
;
; ; 改行正規化の強化
; str := RegExReplace(str, "(\r\n|\n|\r)+", "`r`n")
;
; Return str
; }
jpChars_Hankaku_Space(str) {
global jpChars, hankaku
; 全角+半角
str := RegExReplace(str, "([" jpChars "]) +([" hankaku "])", "$1$2")
; 全角+全角
str := RegExReplace(str, "([" jpChars "]) +([" jpChars "])", "$1$2")
; 半角+全角
str := RegExReplace(str, "([" hankaku "]) +([" jpChars "])", "$1$2")
; 箇条書きハイフン+全角
str := RegExReplace(str, "m)^( *)- *([" jpChars "])", "$1- $2")
; 箇条書き数字+全角
str := RegExReplace(str, "m)^( *)(\d+\.) *([" jpChars "])", "$1$2 $3")
; 改行直前の半角スペース
str := RegExReplace(str, " +(?=\r\n|\n|\r|$)", "")
; 改行正規化
str := RegExReplace(str, "(\r\n|\n|\r)+", "`r`n")
return str
}
; ●●●カッコ整理・処理
a01 := ParenthesisTrimming(a01)
; ●●●カッコ整理・関数定義
ParenthesisTrimming(str) {
; 正規表現パターンの最適化
str := RegExReplace(str, "( *)\(( *)", "(") ; カッコ:半角カッコ起こしの前後半角スペースを取り除き全角化
str := RegExReplace(str, "( *)\)( *)", ")") ; カッコ:半角カッコ閉じの前後半角スペースを取り除き全角化
str := RegExReplace(str, "( *)\[( *)", "[") ; カッコ:半角ブラケット起こしの前後半角スペースを取り除き全角化
str := RegExReplace(str, "( *)\]( *)", "]") ; カッコ:半角ブラケット閉じの前後半角スペースを取り除き全角化
str := RegExReplace(str, "( *)([」)〉》〕】}]’”〟])( *)", "$2") ; カッコ:前後の半角スペースを取り除く
str := RegExReplace(str, "( *)([「(〈《〔【{[‘“〝])( *)", "$2") ; カッコ:前後の半角スペースを取り除く
str := RegExReplace(str, "((.*?))", "〔$1〕") ; 全角カッコを全角亀甲カッコに置換
str := RegExReplace(str, "「(.*?)」", "[$1]") ; 全角鍵カッコを全角ブラケットに置換
str := RegExReplace(str, "( *):( *)", ":") ; 半角コロン:前後の半角スペースを取り除き全角化
str := RegExReplace(str, "( *):( *)", ":") ; 全角コロン:前後の半角スペースを取り除く
str := RegExReplace(str, "(\d+):(\d+)", "$1:$2") ; 全角コロン:前後が半角数字ならコロンも半角スペースを取り除く
; 改行正規化の強化
str := RegExReplace(str, "(\r\n|\n|\r)+", "`r`n")
Return str
}
; ●●●句読点変換・処理
a01 := ConvertPunctuation(a01)
; ●●●句読点変換・関数定義
ConvertPunctuation(str) {
; 正規表現パターンの最適化
str := RegExReplace(str, "( *)。( *)", "。") ; 句点|前後の半角スペース除去
str := RegExReplace(str, "( *)、( *)", "、") ; 読点|前後の半角スペース除去
str := RegExReplace(str, "([" jpChars "])(\.)", "$1。`r`n") ; 全角直後の半角ピリオド→句点+改行
str := RegExReplace(str, "([" jpChars "])(,)", "$1、") ; 全角直後の半角カンマ→読点
str := RegExReplace(str, "([" jpChars "])(!)\s*", "$1! `r`n") ; 全角直後の半角エクスクラメーション→全角エクスクラメーション+全角スペース+改行
str := RegExReplace(str, "([" jpChars "])(\?)\s*", "$1? `r`n") ; 全角直後の半角クエスチョン→全角クエスチョン+全角スペース+改行
; 改行正規化の強化
str := RegExReplace(str, "(\r\n|\n|\r)+", "`r`n")
Return str
}
; ●●●装飾除去・処理
a01 := DecorativeRemoval(a01)
; ●●●装飾除去・関数定義
DecorativeRemoval(str) {
; 正規表現パターンの最適化
str := RegExReplace(str, "\*+(.*?)\*+", "$1")
str := RegExReplace(str, "([[\[])(\d+)([]\]])", "") ; 引用元を示す[1][1]を削除。
str := RegExReplace(str, "(\d+)(\.|。)(\r\n)+", "$2`r`n") ; 【行末】:引用元を示す行末のピリオドまたは句点の前の数字を消去
; 改行正規化の強化
str := RegExReplace(str, "(\r\n|\n|\r)+", "`r`n")
Return str
}
; ●●●崩れの修復・処理
a01 := RepairingCollapse(a01)
; ●●●崩れの修復・関数定義
RepairingCollapse(str) {
; 正規表現パターンの最適化
str := RegExReplace(str, "(\r\n)+。", "。") ; 【行頭】:行頭にある句点は前行に合体
str := RegExReplace(str, "m)^。+(.*?)$", "$1") ; 【行頭】:先頭に句点しかない行の先頭句点を除去。行頭の半角スペースを除去。
str := RegExReplace(str, "m)^(#+)[ \t]*+(?=\S)", "$1 ") ; Markdown記法の[### 見出し]の[###]の後ろを半角スペースを1つに統一。
; 改行正規化の強化
str := RegExReplace(str, "(\r\n|\n|\r)+", "`r`n")
Return str
}
; ●●●Markdown記法の箇条書きのためのインデント【開始】
; 人間が半角スペースでインデント〔4の倍数〕したときのエラーを直す【開始】
; 1. 行頭から地道に半角スペース4つごとに区切る
a01 := RegExReplace(a01, "m)^ (?=(?!\s))", "☆★【3スペース】")
a01 := RegExReplace(a01, "m)^ (?=(?!\s))", "☆★【2スペース】")
a01 := RegExReplace(a01, "m)^ (?=(?!\s))", "☆★【1スペース】")
a01 := RegExReplace(a01, "m)^ (?=\s)", " ☆★")
a01 := RegExReplace(a01, "m)^ ☆★ (?=\s)", " ☆★ ☆★")
a01 := RegExReplace(a01, "m)^ ☆★ ☆★ (?=\s)", " ☆★ ☆★ ☆★")
a01 := RegExReplace(a01, "m)^ ☆★ ☆★ ☆★ (?=\s)", " ☆★ ☆★ ☆★ ☆★")
a01 := RegExReplace(a01, "m)^ ☆★ ☆★ ☆★ ☆★ (?=\s)", " ☆★ ☆★ ☆★ ☆★ ☆★")
; 2-1. 残りのスペースを4の倍数にする準備|UNDOでログを取る
a01 := RegExReplace(a01, "☆★(\s{1})([^ ])", "☆★【1スペース】$2")
a01 := RegExReplace(a01, "☆★(\s{2})([^ ])", "☆★【2スペース】$2")
a01 := RegExReplace(a01, "☆★(\s{3})([^ ])", "☆★【3スペース】$2")
; 2-2. 残りのスペースを4の倍数にする
a01 := RegExReplace(a01, "☆★【1スペース】", "☆★")
a01 := RegExReplace(a01, "☆★【2スペース】", "☆★ ")
a01 := RegExReplace(a01, "☆★【3スペース】", "☆★ ")
; 3. 区切り記号を除去
a01 := RegExReplace(a01, "☆★", "")
; 人間が半角スペースでインデント〔4の倍数〕したときのエラーを直す【終了】
; ●●●Markdown記法の箇条書きのためのインデント【終了】
; 【漢字を開く】:
a01 := RegExReplace(a01, "([ぁ-ん])関([し])", "$1かん$2")
a01 := RegExReplace(a01, "([ぁ-ん])持([たちつてとっ])", "$1も$2")
a01 := RegExReplace(a01, "([ぁ-ん])呼([ばびぶべぼ])", "$1よ$2")
a01 := RegExReplace(a01, "([ぁ-ん])時([一-龠〃々〆〇])", "$1▼じ▲$2") ; 【1】待避
a01 := RegExReplace(a01, "([ぁ-ん])時", "$1とき") ; 【2】置換
a01 := RegExReplace(a01, "([ぁ-ん])▼じ▲([一-龠〃々〆〇])", "$1時$2") ; 【3】待避回収
a01 := RegExReplace(a01, "([ぁ-ん])際([一-龠〃々〆〇])", "$1▼さい▲$2") ; 【1】待避
a01 := RegExReplace(a01, "([ぁ-ん])際", "$1さい") ; 【2】置換
a01 := RegExReplace(a01, "([ぁ-ん])▼さい▲([一-龠〃々〆〇])", "$1際$2") ; 【3】待避回収
; 【活用グループ】:
a01 := RegExReplace(a01, "([ぁ-ん])行([わいうえおっ])", "$1行な$2")
a01 := RegExReplace(a01, "([ぁ-ん])行([かきくけこ])", "$1い$2")
a01 := RegExReplace(a01, "行く末", "【行く末】")
a01 := RegExReplace(a01, "【いく末】", "行く末")
a01 := RegExReplace(a01, "折(ら|り|る|れ|ろ|っ)" , "織$1")
a01 := RegExReplace(a01, "登(ら|り|る|れ|ろ|っ)" , "昇$1")
a01 := RegExReplace(a01, "おーきな", "大きな")
a01 := RegExReplace(a01, "おーいなる", "大いなる")
a01 := RegExReplace(a01, "オークの", "多くの")
a01 := RegExReplace(a01, "名刺", "名詞")
a01 := RegExReplace(a01, "大抵", "たいてい")
a01 := RegExReplace(a01, "([ぁ-ん])伴([わいうえおっ])", "$1ともな$2")
A_Clipboard := a01
Send("^v")
Send("^a")
Send("^c")
Errorlevel := !ClipWait(1)
if (ErrorLevel != 0)
{
return
}
}
; ●●●PrintScreen LaTeXでコンパイルする
PrintScreen::
{
Send("{Alt down}{Ctrl down}{,}{Ctrl up}{Alt up}")
return
}
; ●●●vk1C 変換キー=クリップボードを毎日がエブリデイファイルに追記する
vk1C::
{
Send("{Ctrl down}{Alt down}{t}{Alt up}{Ctrl up}")
Sleep(1800)
Send("{R}")
Sleep(200)
Send ("{Ctrl down}{PgDn}{Ctrl up}{Home}")
Sleep(200)
Send ("{Enter}")
Sleep(200)
Send ("●●●")
Sleep(200)
Send ("{Enter}")
Sleep(200)
Send ("{Ctrl down}{PgDn}{Ctrl up}{End}")
Sleep(200)
Send ("{Enter}")
Sleep(200)
Send ("{F2}")
}
; ●●●Pauseキー=クリップボードを毎日がエブリデイファイルに追記する
Pause::
{
Send("{Ctrl down}{Alt down}{t}{Alt up}{Ctrl up}")
Sleep(1800)
Send("{R}")
Sleep(200)
Send ("{Ctrl down}{PgDn}{Ctrl up}{Home}")
Sleep(200)
Send ("{Enter}")
Sleep(200)
Send ("●●●")
Sleep(200)
Send ("{Enter}")
Sleep(200)
Send ("{Ctrl down}{PgDn}{Ctrl up}{End}")
Sleep(200)
Send ("{Enter}")
Sleep(200)
Send ("{F2}")
}
; ●●●vkF2 ひらがな/カタカナキー=ドラッグしてハイライトされた文字列を引用する
vkF2::
{
Send("{Ctrl down}{.}{Ctrl up}")
Sleep(450)
Send("{Q}{Q}")
Sleep(450)
Send("{Ctrl down}{a}{c}{Ctrl up}")
Sleep(800)
Send("{Enter}")
Sleep(800)
Send("{Enter}")
return
}
; ●●●AppsKeyの押し方で動作を変える。
; ■<a href="https://pouhon.net/ahk-keywait/2848/" target="_blank" rel="nofollow">[AutoHotKey]1つのキーで3つの機能!長押しや2度押しに機能を割り当てる</a><br>
; ■<a href="https://ameblo.jp/hinatahugu29/entry-12842214165.html" target="_blank" rel="nofollow">【AutoHotKey】今のキーボードに合わせたカスタマイズに向けて【情報収集】 | ふぐのようす</a><br>
#UseHook ; UseHookをOnにした状態で使用
AppsKey::
{
key := "AppsKey"
ErrorLevel := !KeyWait(key, "T0.3")
If(ErrorLevel){ ; 長押しした場合:MIFES
Run('C:\Program Files\MIFES11\MIW.exe')
ErrorLevel := !KeyWait(key)
return
}
ErrorLevel := !KeyWait(key, "D, T0.2")
If(!ErrorLevel){ ; 2度押しした場合
Send("{Ctrl down}{.}{Ctrl up}") ; Firefox ShortcutKey2U
Sleep(500) ; 待て
Send("{G}{N}") ; ShortcutKey2URLに登
ErrorLevel := !KeyWait(key)
return
}else{ ; 短押しした場合
Send("{Ctrl down}{.}{Ctrl up}") ; Firefox ShortcutKey2U
Sleep(500) ; 待て
Send("{G}{G}") ; ShortcutKey2URLに登
Sleep(500) ; 待て
Send("{Ctrl down}{a}{c}{Ctrl up}{Enter}")
ErrorLevel := !KeyWait(key)
return
}
}
; ●●●
^Up::
{
MouseMove(0, -10, 0, "R")
return
}
; ●●●
^!Up::
{
MouseMove(0, -50, 0, "R")
return
}
; ●●●
^Down::
{
MouseMove(0, 10, 0, "R")
return
}
; ●●●
^!Down::
{
MouseMove(0, 50, 0, "R")
return
}
; ●●●
^Left::
{
MouseMove(-10, 0, 0, "R")
return
}
; ●●●
^!Left::
{
MouseMove(-50, 0, 0, "R")
return
}
; ●●●
^Right::
{
MouseMove(10, 0, 0, "R")
return
}
; ●●●
^!Right::
{
MouseMove(50, 0, 0, "R")
return
}
■「AutoHotKey」による作業効率化~その1~基本:That’s Done! - ブロマガ
■「AutoHotKey」による作業効率化~その2~実践:That’s Done! - ブロマガ
■AutoHotkeyを利用してマウスとお別れする | NETWIZ.JP
動画編集ソフトとAutoHotkey
- AutoHotkey.ahkのショートカットをスタートアップに登録しておき、Windows起動時にAutoHotkey.ahkを実行するので、ふだんは意識することなく、キーマッピング変更後の環境で、毎日PCが使える。
- ただし、本当のキーボード沼は、DaVinci Resolve Speed Editorの導入かもしれない。
- DaVinci Resolveでは、Pythonスクリプトを使えば、カット編集の自動化やバッチ処理が可能になるようである。
- DaVinci Resolveの制御をFFmpegで行なうこともできるようだ。
- なお、PerplexityにAutoHotkeyのスクリプティングを依頼すると、V2.1を指定しても、V1.0のスクリプトを返してくるので、[AHK-v2-script-converter|GitHubにある]で置換する必要がある。
- Google検索でヒットする[AutoHotkeyのスクリプト例]は、ほぼすべてがV1.0のスクリプト。
- [AHK-v2-script-converter]は必須だし、V2.1の細かい仕様をPerplexityなどに調べさせるのも必須。
- 長いマニュアルを読まなくても済むだけ、Perplexityでラクをさせてもらっている。
- Windowsの世界は、ユーザが多いだけに、いろいろと細かいところが発達している。
- 機械学習モデルを走らせる場合、CPUよりもGPUが働くようだ。
- ローカルで機械学習モデルを走らせることが、今後は増えていくことだろう。
- このとき、macOS環境よりも、Windows環境やLinux環境のほうが、グラフィックカードを取り替えて、演算能力を増強しやすい。
- その一方で、写真・動画・印刷・出版の世界では、macOS機が事実上の標準であるらしく、色彩に関係する仕事に携わるには、macOS機がないと困るようだ。
- 写真・動画の色彩を正確に調整するには、[Mac mini+EIZOのカラーマネジメントモニター]が必要かもしれない。
- 多くの人が、本当にやりたいことを自由にできるようになるためには、Windows機とmacOS機を両方とも買わなければならないのが、現状だろうと思う。
- スクリプト言語によるDaVinci Resolveのカット編集は可能か?