テンキーをF13~F24にする



注意点(重要)

  • 以下を実行するとキーボードのテンキーもF13~F24に変更されます。
    これはあくまでペイントツールSAIがAutohotkeyよりもLowレベル(OSに近いところ)でキー情報を取得してしまい、ビュー系ショートカット(Shift+テンキー)が誤発動してしまうのを回避するために行う処置です。
  • SAIのビュー系ショートカットが誤発動する原因。
    Autohotkeyを使ってテンキーにShiftを割り当てると、SAIがAutohotkeyよりもLowレベル(OSに近いところ)でテンキーとして認識してしまい、Autohotkeyで割り当てたShiftとSAI側で認識しているテンキーの両方が押されたこととなり、SAIのビュー系ショートカット(Shift+テンキー)が誤発動します。これを回避するため、テンキーの基本割り当てをF13~F24へ変更し、SAIがShift+F13(~F24)と認識しても、このショートカットに何も割り当てられていないため何も起こらないということです。
  • SAIのような特殊なものを除き、一般的なアプリケーションソフト(PhotoshopやIllustrator等)はAutohotkeyよりもLowレベルでキー情報を取得することはありませんので、USBデバイス(USBキーボード、USBテンキー、USBコントローラー等)ごとの独立したキー割り当てはHID Macros と Autohotkey を連携させるの設定だけで大丈夫です。

(1)ChangeKey をインストールする

ChangeKeyをインストールする。

(2)ChangeKeyでテンキー(Numpad系)をF13~F24にする


  1. ChangeKeyを実行する。
  2. ChangeKeyのウィンドウが開いたら、テンキーの「1」キーを選択(クリック)。
  3. 「【1 】キーをどのキーに変更しますか?」というウィンドウが表示されるので右上の「Scan Code」をクリック。
  4. スキャンコードを直接入力するウィンドウが表示されるので「0064」(0x0064はF13のスキャンコード)を入力して「OK」。
  5. テンキーの「2」キーを選択(クリック)。
  6. 「【2 】キーをどのキーに変更しますか?」というウィンドウが表示されるので右上の「Scan Code」をクリック。
  7. スキャンコードを直接入力するウィンドウが表示されるので「0065」(0x0065はF14のスキャンコード)を入力して「OK」。
  8. 以下、下記表を参考にテンキーの3、4、6~9、0、ドット(.)、+、ー にF15~F24を割り当てる。
  9. 割り当てが完了したら「登録」→「現在の設定内容で登録します」を選択し、Windowsを再起動する。
USBテンキー
のキー
ChangeKeyで
割り当てるキー
スキャンコード
1 F13 F13 = 0x0064
2 F14 F14 = 0x0065
3 F15 F15 = 0x0066
4 F16 F16 = 0x0067
5 変更しない
6 F17 F17 = 0x0068
7 F18 F18 = 0x0069
8 F19 F19 = 0x006a
9 F20 F20 = 0x006b
0 F21 F21 = 0x006c
.(ドット) F22 F22 = 0x006d
Tab 変更しない
/
*
BackSpace
- F23 F23 = 0x006e
+ F24 F24 = 0x0076
Enter 変更しない

(3)「HID Macros と Autohotkey を連携させるの手順(1)から(7-2)」を行う。


(4)Saiがアクティブ時、且つUSBテンキー①ならキーカスタマイズ、それ以外なら通常のテンキーにするサンプル

USBテンキーを複数接続(①と②)している環境でSaiがアクティブなときだけキーカスタマイズし、その条件以外は通常のテンキー入力がされるサンプルです。

+ ←サンプルを表示する
#SingleInstance, Force
#Persistent
OnMessage(99999, "HidMacros")
Menu, Tray, Add , GetScript
return ; Autoexecセクション はここまで

GetScript: ; スクリプトをクリップボードにコピーする
    DetectHiddenWindows, On
    SetTitleMatchMode,RegEx
    Hwnd := WinExist(".*\\ahk_hidmacros.ahk\s-\sAutoHotkey.* ahk_class AutoHotkey")
    WinGetTitle, WinTitle, ahk_id %Hwnd%
    Clipboard = hWnd = FindWindow ( "AutoHotkey", `"%WinTitle%`" )
    Clipboard = %Clipboard%`nIf hWnd then`n    Call PostMessage(hWnd, 99999, 1, 1 )
    Clipboard = %Clipboard%`nEnd If
    msgbox, %Clipboard%`nをクリップボードにコピーしました。
    DetectHiddenWindows, Off
return

; HidMacros( [wParam, lParam, msg, hwnd] ) 引数は省略可
HidMacros(wParam, lParam) { ; 第三と第四引数は必要ないので省く。
    If ( wParam = 1 ) { ; USBテンキー① なら
        IfWinActive, ahk_class sfl_window_class ; Saiがアクティブなら
        {
            If ( lParam = 1 ) { ; F13(テンキー1) なら
                send, {space down} ; spaceを押し下げる ※Saiなら手のひらツール
                keywait, F13 ; F13(テンキーの1)を開放するまで待つ
                send, {space up} ; spaceを放す
            } Else If ( lParam = 2 ) { ; F14(テンキー2) なら
                send, {alt down} ; Altを押し下げる ※Saiならスポイト
                keywait, F14 ; F14(テンキー2)を開放するまで待つ
                send, {alt up} ; Altを放す
            } Else If ( lParam = 3 ) { ; F15(テンキー3) なら
                send, {alt down}{space down} ; AltとSpaceを押し下げる ※Saiならビュー回転
                keywait, F15 ; F15(テンキー3)を開放するまで待つ
                send, {space Up}{alt up} ; AltとSpaceを放す
            } Else { ; 他のキーは通常のテンキーにする
             Gosub, TenkeyMode
            }
        } Else { ; Saiが非アクティブなら
            Gosub, TenkeyMode
        }
    } Else If ( wParam = 2 ) { ; USBテンキー②なら
        Gosub, TenkeyMode
    } Else { ; 他USBデバイスなら
        Gosub, TenkeyMode
    }
    return

    TenkeyMode: ; 通常のテンキーにする
        tenkeys = Numpad1|Numpad2|Numpad3|Numpad4|Numpad5|Numpad6|Numpad7|Numpad8|Numpad9|Numpad0
        tenkeys = %tenkeys%|Numpaddot|Tab|NumpadDiv|NumpadMult|Bs|Numpadsub|Numpadadd|NumpadEnter
        Loop, Parse, tenkeys, |
        {
            If ( lParam = A_Index )
                send, {%A_LoopField%}
        }
    return
}
  • ファイル名やディレクトリがHID Macrosで設定したものと異なると動作(連携)しません。元ファイルを上書きコピーするか、中身だけを元の ahk_hidmacros.ahk にコピペして実行してください。
  • スクリプトファイルのファイルエンコーディングについて
    アップロードしているスクリプトサンプルは全てShift JIS形式で保存しています。そのままだとAutohotkey_L Unicode版(以後、L版)で動作しません。
    L版で利用するにはスクリプトサンプル(ahk_hidmacros.ahk)をテキストエディタ(NotePad等)で開き、 UTF-8 形式で保存(上書き保存)してから利用してください。
    参考サイト:テキストをUTF-8形式で保存する。






















 
最終更新:2012年03月25日 07:13