Asus ZenBook3 の US キーボードを便利に使う AutoHotKey スクリプトを試行錯誤しているがうまく行かず…

英字配列の Asus ZenBook3 を便利に使いたくて、久々に AutoHotKey スクリプトをイジり始めたが、色々難儀でうまく行かず…。

目次

fn キーのキーコードがない

ZenBook3 には Delete キーがあるものの、少し小さくて使いづらいので、Mac における fn + Delete のように、fn + BackSpace が Delete キーの動作をしたら使いやすくなるかな?と思った。

そこで AutoHotKey や Keymill でキーコードを調べてみたが、fn キー自体のキーコードが特定できなかった。fn + RCtrlAppsKey が直接押下されたことになっていたりと、ドライバ側でうまいことやっている様子。

何か fn キー自体のイベントを特定する方法があったら教えてほしい。

Alt 長押しで IME を切り替えたいが通常の押下時はコンビネーションも効くようにしたい

IME 切替は Ctrl + Space でやっているのだが、キーピッチが少し広めの ZenBook3 だとコレが少々面倒臭い。

そこで「Alt キーを長押しした時に Ctrl + Space を送るが、通常の場合は Alt キー標準の動作をさせる」というスクリプトを作ろうと思ったのだが、「通常の Alt キーの動作 = Alt + Tab などコンビネーションでの押下」をうまく残すことができなかった。

一応途中まで書いたのは以下のとおり。

; 常にフックを使う
#UseHook On

; LAlt を0.2秒長押しで Ctrl + Space (IME 切替) にする
LAlt::
  KeyWait, LAlt, T0.2
  If(ErrorLevel) {
    Send, ^{Space}
    KeyWait, LAlt
    Return
  }
  Send, {LAlt}
Return

; RAlt を0.2秒長押しで Ctrl + Space (IME 切替) にする
RAlt::
  KeyWait, RAlt, T0.2
  If(ErrorLevel) {
    Send, ^{Space}
    KeyWait, RAlt
    Return
  }
  Send, {RAlt}
Return

コレで「長押しで Ctrl + Space、それ以外は Alt」までは実現できている。LAltRAlt は別々に用意しないと動かなかった (Alt でまとめては書けなかった)。

2018-06-07 追記 : alt-ime-ahk が優秀だったので、コチラを使うことにした。

同様に、右 Ctrl 長押しでアプリケーションキーにするが、それ以外の時は通常の右 Ctrl キーとして使うという動きも考えたが、コチラもコンビネーション入力がうまく認識されず…。

; RCtrl を0.5秒長押しでアプリケーションキーにする
RCtrl::
  KeyWait, RCtrl, T0.5
  If(ErrorLevel) {
    Send, {AppsKey}
    KeyWait, RCtrl
    Return
  }
  Send, {RCtrl}
Return

その他…

あとは使用頻度が低く、コンビネーションでの利用がない CapsLock キーを Ctrl + Space (IME 切替) に当てるか、とか考えたのだが、あまりに標準外なキーバインドにすると普通のマシンが触れなくなるので、「Windows で Mac 標準風なバインドを少し取り入れる」程度に留めたい。そういう思いもあって、Alt 単独あたりでお茶を濁そうとしていたのだが、うまく行かず…。

うまいやり方があれば教えてください。

参照したサイト