見出し画像

【AutoHotKey】Shiftを長押しせずに範囲選択するコード2【ahk】

1. はじめに ※必読

 【Shift】を長押しすることなく範囲選択するコードをオートホットキーで書いたので公開します。
 本稿には必読部分(前半)とそうではない部分(後半)があります(後半部は随時書き足していくつもりです)。お忙しい方も、必読部分は必ずすべて読んでからご使用・ご利用ください。
 また、この記事で紹介するのは改良版のコードです。改良前を見たい方はこちらをご覧ください。


2. 何をするためのコードなのか & 使い方 ※必読

2-1. 何をするためのコードなのか

 【Shift】を長押ししなくてもキーボードで範囲選択できるようにするためのコードです(英数字入力の際に使えば疑似的なCaps Lockとしても機能します)。

2-2. 使い方

  • 【無変換 + スペース】で範囲選択モード(私が勝手に命名した)を開始します。

  • 範囲選択モード中は、【Shift】を長押しすることなく、矢印キーやマウスカーソルだけで選択領域(青い部分)を変更できます。

  • もう一度、【無変換 + スペース】を押すと範囲選択モードを終了します。


3. コードを使用・利用するための条件 ※必読

 このコードを使用または利用した結果に関して、私(投稿主)は一切の責任を負わないことに同意したうえで、ご使用・ご利用ください。同意は使用・利用の必要条件とします。


4. 投稿主の環境 ※必読

 私の環境をごく簡単に紹介します。

  • Windows 11

  • AutoHotkey Unicode 64-bit (ver. 1.1.34.03)

 上記以外の環境での動作や影響は一切検証していませんので、ご注意ください。


5. 実際のコード ※必読

 下のコードをコピペして、スクリプトをリロードすれば、使えるようになります。ただし、「rs := 0」はスクリプトの上の方に置いてください。そうしないと、機能しない可能性があります。

#MaxThreadsPerHotkey 2


rs := 0


sc07B & Space::
If (Not GetKeyState("shift","P"))
{
  rs := 1 -rs
  If (rs)
  {
    CoordMode, ToolTip, Screen
    ToolTip, --RS_IN_EFFECT---RS_IN_EFFECT--`n--RS_IN_EFFECT---RS_IN_EFFECT--, 1670, 980
    Send, {shift down}
    Return
  }
  Else
  {
    Send, {shift up}
    ToolTip
    Return
  }
}
Return


#If (rs = 1)
Shift::
Send, {Shift Down}
Return
#If


6. 既知の問題と対処法 ※必読

 このコードの問題と対処法をいくつかお伝えします。

6-1. 万が一の暴走とその際の対処法

 万が一、範囲選択モードが暴走した時は、タスクバー上にある、このコードを含むスクリプトのオートホットキーアイコンを【右クリック】し、【Exit】を押してください。そのあと、2~3回ゆっくりと【Shift】を押せば、暴走も終わります。
 とはいっても、私の環境では今のところ暴走は一度もありません。

6-2. Chromeとの相性

 残念ながらこのコードはChrome(バージョン: 105.0.5195.102(Official Build) (64 ビット))とあまり相性が良くないようで、Chrome上での使用にいくつか問題があります。それらの問題を回避するために、Chrome上で範囲選択モードを使用するときには次の鉄則に従ってください;「選択範囲をキーボードショートカットでコピーまたは切り取りしたいときは、範囲選択モードを終了させてから、ショートカットを入力せよ!」。言い換えると、範囲選択モードの状態のままでショートカットを使用するな、ということです。この鉄則さえ守れば、Chrome上でも問題なく範囲選択モードを使用できるはずです。

6-3. 無変換キーの機能が失われる

 これは何かの不具合ではなく、オートホットキーの仕様です。「sc07B & Space::」の部分を「~sc07B & Space::」に置き換えることにより、無変換キーの機能は保持されますが、より厄介な問題が生じるのでお薦めできません。

 以上の3つが既知の問題とそれらへの対処法です。
 ちなみに、改良前のバージョンが抱えていた「範囲選択モードONとOFFの瞬間的な切り替え」の問題は、今回の改良で克服されました。


7. 記事の折り返し地点 ※必読

 この節が最後の必読部分です。お伝えしておきたいことをいくつか個別的に記します。

7-1. この記事のリンクの掲載について

 もしこの記事のリンクを、ご自身のブログやサイト等に掲載されたいという方がいらっしゃいましたら、私への連絡はせずに、ご自由に掲載してください。

7-2. 上記コードの、商売への利用について

 もし万が一、この記事のコードを何らか商売のためにご使用・ご利用したい方がいらっしゃったら、ご自由にどうぞ。その際も私への連絡はしないでください。

7-3. 記事の後半部分について

 この記事の後半部分では、コードの概説、Chrome以外のブラウザでも使う方法の紹介、無変換キーの機能と両立させる方法の紹介などをします。前半の必読部分では省略した情報を含んでいるので、このコードへの理解を深めたい方は読まれることをお薦めします。

 ※ここで必読部分は終わりです。読んでくださり、ありがとうございました。
 では後半に続きます。

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