見出し画像

【執筆作業の効率化!】AutoHotkeyでキーボードから手を離さず書き続けよう

 執筆をしていると、ここ漢字や言葉の使い方はこれで合っていたっけ? と調べたり、サイトに特化したルビタグを後から振ったりして、執筆が中断されることもしばしば。
 これ、結構時間を取られていたりしませんか? マウスに持ち替えたり、フルサイズキーボードだと遠いキーに手を伸ばしているのも中々無駄な時間です。

 そんなイライラや小さなストレスを『AutoHotkey(+ChangeKey)』というツールで解消してしまおうというのがこの記事の狙いです。

 このツールを使いこなせるようになると、

  • 選択した文字列をショートカットキーで検索にかける

  • どの画面からでも入力ボックスを出して、Google検索をする

  • 選択した文字にルビタグを振る

 という作業がめちゃくちゃ早くなります。

ルビ振り用の窓のサンプル。
アプリケーションを選ばず便利な機能が作れるのがAutoHotkeyの特徴です。

 常駐アプリのインストールと非常駐アプリの利用が必要ですので、適宜他サイトの情報も紹介しながら進めていきます。

AutoHotkeyって?

 AutoHotkeyはWindows上で動くスクリプトエンジンで、キーボードやマウスをカスタマイズしたり、ウィンドウ操作を自動化したりできます。
 簡単に言うとショートカットキーを自作してカスタムできるツールで、仕事で使っている方も多いのではないでしょうか?
 スクリプトを書くだけで様々なことが自動化できる強力なツールです。

 海外製のツールでリファレンスが英語ですが、有志の方が作成している日本語での説明サイトもあります。詳しく知りたい方は参照して下さい。

 ここではその恩恵が誰でも受けられるようにするべく、コピペすれば使えるようにスクリプトを記載していきます。

AutoHotkeyの準備

 まずはAutoHotkeyのインストールについてです。
 他の方が既に記事にしていることを繰り返し書いても仕方ない為、インストール方法については詳しく記載されたページを紹介させていただきます。

 ここで一点注意が必要なのですが、スクリプトから呼び出すGUI上や固定文として日本語を扱う場合はVer1.1以降(上記の記事の通りにすれば問題ないです)かつ、スクリプトファイルの文字コードが「UTF-8 with BOM」形式で保存されていないといけません。

Windows10以降のメモ帳では「UTF-8」が標準なので「UTF-8 with BOM」変更するのを忘れずに。
動作確認の前は「UTF-8 with BOM」になっているか確認しましょう。

 紹介先の記事には「UTF-8で保存」となっていますが、この記事に記載されている一部のスクリプトは日本語の対応が必要な為、文字コードの形式には十分注意して下さい。
 コードエディタを使ったことがある方(ゴリゴリスクリプトを書いていく方)はVS Codeに「AutoHotkey Plus」などの拡張機能を入れて編集すると便利です。

 インストールや利用方法などが把握できたら、次にCapslockキーのF13キー化です。

F13キーを作ろう

 たくさんのショートカットキーを使えるようにする為に、F13キーを作りましょう。
 一体何のこっちゃ? と思われるかも知れませんが、CtrlキーやAltキーは既にショートカットキーとして割り付けられているものが多いため、空きを見つけるのが難しかったりします。

 だから普段あまり使わないCapslockキーをF13キーとして認識させ、競合をなくします。そしてCapslock(F13)キーを押しながら別キーを押してショートカットを呼べるようにするのです。

 いやCapslockはたまに使うんだけど、という人も安心あれ。Shift+CapslockキーでCapslockのON/OFFを切り替えるスクリプトも後ほど紹介します。
※元々ある「かな入力中に半角入力にする」という機能は今回紹介するスクリプトでは実装できません。日本語キーボードを使用している方は「無変換」「変換」キーに日本語入力の切り替えを割り当てる等で代替した方が便利だと思います。

 ここでまた人頼みです。CapslockキーをF13キーとして割り付けるには下記のNoteを参考にして下さい。

※別の方のNote記事なので、コメント等での質問はお控え下さい。

各スクリプトの紹介

CapslockのON/OFF (Shift+Capslock)

 さあ、ようやく機能の紹介です。
 まずは無効化してしまったCapslockをShift+Capslockキーを押した時だけON/OFFを切り替えられるようにするスクリプトです。

;Capslock ON/OFF
  LShift & F13::
  GetKeyState, state, CapsLock, T	; CapsLockがONの場合はD、それ以外の場合はUが返される。
  If state = D
    SetCapsLockState, Off
  Else
    SetCapsLockState, On
  return

 これでCapslock状態を見てON/OFFしてくれるようになりました。
 このスクリプトでは左側のShiftにしか対応していませんので、右側のShiftにも対応させたい場合は「RShift」Verも作成する必要があります。

矢印キー (Capslock+JIKL)

 文章を書く上で一番よく使うのが、Enterキーを除けば矢印キーだという人もいるのではないでしょうか?
 右手の移動を最小限にする為に、Capslockキーを押しながら「J、I、K、L」を押せばカーソルを移動できるようにするスクリプトです。

;Capslock+文字キーが押されたら矢印キーが押されたことにする
F13 & j:: Send,{Blind}{Left}  ;左
F13 & i:: Send,{Blind}{Up}    ;上
F13 & k:: Send,{Blind}{Down}  ;下
F13 & l:: Send,{Blind}{Right} ;右

 Capslockキーを押しながら、

  • J で左

  • I で上

  • K で下

  • L で右

 に移動します。こうしておけばホームポジションから移動せずにカーソル移動ができます。

 「JIKL」ではなく「HJKL」を好む人もいますが、その場合は割当キーを変更して下さい。ただし、この記事で紹介するスクリプトとショートカットキーが競合しますので、変更した場合は割付けを変える対応が必要です。

Shiftキー (Capslock+A)

 上記のカーソル移動を追加したままだと、Shiftを押しても選択状態になってくれません。そこでCapslockとAを押している間はShiftが押されていることになるようにします。

;Capslock+A Shift
F13 & a::
  SetKeyDelay -1
  Send {Blind}{Shift Down}
  Return
F13 & a up::
  SetKeyDelay -1
  Send {Blind}{Shift up}
  Return

 Capslock+Sの方が分かりやすいのでは? と思うかも知れませんが、Capslockのすぐ隣にあるAの方が押しやすいです。

Deleteキー (Capslock+D)

 Deleteキーが遠いよ⋯⋯って時に使います。

;Capslock+D 削除
F13 & d:: Delete

Backspaceキー (Capslock+B)

 同じくBackspaceキーが遠かったり、Capslockを押しながら操作したい時に使います。

;Capslock+B BackSpace
F13 & b::Send,{Backspace}

コピー (Capslock+C)

 Ctrl+Cはそれほど大変ではないんですが、なるべくCapslockを使うようにした方が楽になります。

;Capslock+C コピー
F13 & c:: Send,^c

貼り付け (Capslock+O)

 貼り付けもCapslock+Vにしてもいいのですが、これは私の好みで「O」にしています。こちらの方が指の姿勢的に楽で、連打する必要がある時に負担が少ないからです。

;Capslock+O 貼り付け
F13 & o:: Send, ^v

 Vの方がいいという方は「F13 & o」の部分を「F13 & v」に変更して下さい。

Homeキー (Capslock+H)

 Homeキーも微妙に遠いんですよね。

;Capslock+H HOMEボタン
F13 & h:: Send,{Home}

Endキー (Capslock+N)

;Capslock+N ENDボタン
F13 & n:: Send,{End}

 なぜ割り付けるキーがEではなくNなのかと言うと、Capslockキーを押しながらHでHomeキーを押した後にCapslock+A(Shift押下状態)からNを押して一行選択をしたいからです。またキーの位置関係にも直感的に操作できます。

検索窓を出してGoogle検索 (Capslock+F)

小さい窓を出してキーワードを入力します。

 新しいタブを開いて検索するのすら面倒臭い(キーボードから手を離したくない)時に使うのがこちらです。

;Capslock+F インプットボックスからGoogle検索
F13 & f::
  InputBox, strGgl, WEB Search, WEB Search,,375110
  If ErrorLevel = 0
  {
    strURL := getURL(strGgl)     ;検索用URL作成
    Run, %strURL%                ;検索実行
  }
  Else{}
  Return

;選択肢した文字をクエリ文字列として結合
getURL(str)
  {
  if(str != "")
    {
		Return "http://www.google.com/search?q=" . str
    }
  Return "" 
  }

 getURLという関数は次の選択中の文字をGoogle検索にも使います。

選択中の文字をGoogle検索 (Capslock+G)

 執筆中に「この漢字の使い方で合っていたっけ?」と調べる時、検索したい文字を選択したままCapslock+Gを押せばGoogle検索をかけられるようになります。


;Capslock+G 選択した文字列の検索
F13 & g::
  buff = %ClipboardAll%
  Clipboard =
  Send,^{c}
  ClipWait, 3
  strURL := getURL(Clipboard)     ;検索用URL作成
  Run, %strURL%
  Clipboard = %buff%              ;クリップボードの内容を復帰
  return

 ちなみにブラウザを開いていない状態でメモ帳などから起動した場合は、デフォルトのブラウザからGoogle検索がかかります。
※上記のgetURL関数が同じスクリプト内に必要です。

選択中の文字にルビタグを振る (Capslock+R)

読み仮名を入力します。

 ルビを振りたい文字を選択したままCapslock+Rを押すと上図の窓が出るので、読み仮名を打ち込んでEnterキーかOKを押すだけです。

;Capslock+R ルビ振り
F13 & r:: ;好きなキーの組み合わせ
  buff = %ClipBoardAll%
  Clipboard =
    Send, ^{c}
    ClipWait, 51
  srtH = %Clipboard%
  Inputbox, ruby, RUBY, How to read %srtH%, , 375125
  If ErrorLevel = 0
  {
    ;ハーメルン用
    Clipboard = %srtH%%ruby%
    ;pixiv用
    ;Clipboard = [[rb:%srtH% > %ruby%]]
    ClipWait, 5
    Send, ^v
    Sleep, 100
  }
  Else{}
  srtH = 
  Clipboard = %buff%
  buff = 
  Return

 デフォルトではハーメルン用なので、pixivはハーメルン用をコメントアウトした後に下のpixiv用のコードのコメントアウト(「;」)を外して下さい。

 Clipboard変数はすり抜けと呼ばれる現象で中々思った通りの動きをしてくれない場合があります。動作がおかしい場合は「Sleep, 100」の数値を大きくする必要があるかも知れません。

 またClipboardに通常のキー送りでは実現できない文字(「|」や「《》」)を使っていますが、文字コードが「UTF-8 with BOM」でないとこのコードは動きませんので注意して下さい。

おまけ

左画面に移動して最大化 (Capslock+1)

 デュアルモニター用のショートカットキーです。トリプルモニター状態だと、ウインドウの位置によっては思った位置に来ない場合がありますが押す度にどんどん次の画面に映ります。

;Capslock+1 左側の画面に移動して最大化
F13 & 1::Send, {LWin Down}{Shift Down}{left}{Shift Up}{LWin Up}{LWin Down}{Blind}{Up}{LWin Up}

右画面に移動して最大化 (Capslock+2)

 上に同じく、デュアルモニター用です。

;Capslock+2 右側の画面に移動して最大化
F13 & 2::Send, {LWin Down}{Shift Down}{right}{Shift Up}{LWin Up}{LWin Down}{Blind}{Up}{LWin Up}

Ctrl+PageUp (Capslock+Y)

 意外によく使うのがCtrl+PageUpのショートカット。
 ブラウザでは左タブ移動に使いますし、Excelでも左シート移動に使います。
 フルサイズのキーボードでも微妙に押しにくいショートカットなので、割付を行います。

;Capslock+Y Ctrl+PageUp
F13 & y:: ^PgUp

Ctrl+PageUp (Capslock+U)

 直感的に操作できるようにする為、Capslock+Yで左側タブへ、その右隣のUで右側タブへ移動します。

;Capslock+U Ctrl+PageUp
F13 & u:: ^PgDn

全スクリプト一括コピー用スクリプト

 今までのコードをまとめたものがこちらです。

;Capslock ON/OFF
  LShift & F13::
  GetKeyState, state, CapsLock, T	; CapsLockがONの場合はD、それ以外の場合はUが返される。
  If state = D
    SetCapsLockState, Off
  Else
    SetCapsLockState, On
  return

;Capslock+文字キーが押されたら矢印キーが押されたことにする
F13 & j:: Send,{Blind}{Left}  ;左
F13 & i:: Send,{Blind}{Up}    ;上
F13 & k:: Send,{Blind}{Down}  ;下
F13 & l:: Send,{Blind}{Right} ;右

; Capslock+A Shift
F13 & a::
  SetKeyDelay -1
  Send {Blind}{Shift Down}
  Return
F13 & a up::
  SetKeyDelay -1
  Send {Blind}{Shift up}
  Return

;Capslock+D 削除
F13 & d:: Delete

;Capslock+B BackSpace
F13 & b::Send,{Backspace}

;Capslock+C コピー
F13 & c:: Send,^c

;Capslock+O 貼り付け
F13 & o:: Send, ^v

;Capslock+H HOMEボタン
F13 & h:: Send,{Home}

;Capslock+N ENDボタン
F13 & n:: Send,{End}

;Capslock+F インプットボックスからGoogle検索
F13 & f::
  InputBox, strGgl, WEB Search, WEB Search,,375110
  If ErrorLevel = 0
  {
    strURL := getURL(strGgl)     ;検索用URL作成
    Run, %strURL%                ;検索実行
  }
  Else{}
  Return

;選択肢した文字をクエリ文字列として結合
getURL(str)
  {
  if(str != "")
    {
		Return "http://www.google.com/search?q=" . str
    }
  Return "" 
  }

;Capslock+G 選択した文字列の検索
F13 & g::
  buff = %ClipboardAll%
  Clipboard =
  Send,^{c}
  ClipWait, 3
  strURL := getURL(Clipboard)     ;検索用URL作成
  Run, %strURL%
  Clipboard = %buff%              ;クリップボードの内容を復帰
  return

;Capslock+R ルビ振り
F13 & r::
  buff = %ClipBoardAll%
  Clipboard =
    Send, ^{c}
    ClipWait, 51
  srtH = %Clipboard%
  Inputbox, ruby, RUBY, How to read %srtH%, , 375125
  If ErrorLevel = 0
  {
    ;ハーメルン用
    Clipboard = %srtH%%ruby%
    ;pixiv用
    ;Clipboard = [[rb:%srtH% > %ruby%]]
    ClipWait, 5
    Send, ^v
    Sleep, 100
  }
  Else{}
  srtH = 
  Clipboard = %buff%
  buff = 
  Return

;Capslock+1 左側の画面に移動して最大化
F13 & 1::Send, {LWin Down}{Shift Down}{left}{Shift Up}{LWin Up}{LWin Down}{Blind}{Up}{LWin Up}

;Capslock+2 右側の画面に移動して最大化
F13 & 2::Send, {LWin Down}{Shift Down}{right}{Shift Up}{LWin Up}{LWin Down}{Blind}{Up}{LWin Up}

;Capslock+Y Ctrl+PageUp
F13 & y:: ^PgUp

;Capslock+U Ctrl+PageUp
F13 & u:: ^PgDn

最後に

 AutoHotkeyスクリプトの紹介はいかがだったでしょうか?
 使い方の説明ページにもありますが、スクリプトをコピペしたり書いた後はスクリプトを実行(またはリロード)するのを忘れないようにして下さい。

 特にJIKLキーでの移動は最初慣れないかも知れませんが、一週間ほど矢印キーを封印して使っていくと相当作業が早くなります。

 今回紹介したショートカットキーを使いこなせるようになれば、もう執筆中にマウスや矢印キーに手を伸ばさなくても書き続けられるはず。

 それでは、よい執筆ライフを!

この記事が気に入ったらサポートをしてみませんか?