あるもので済ませる。左手デバイスのすすめ

イラストを作成している方であれば一度は「左手デバイス」なるものを聞いたことがあるのではないでしょうか?
その便利さにあこがれていざAmazonやヨドバシカメラで検索された方も多いかと思います。

そして、みなさんこのように思われたでしょう。
「た、高ぇ……」
今回はそんな高い左手デバイスを買わずに、安いありあわせもので代用しよう、という記事になります。

※最近はeスポーツの影響もあり、キーボードの左手で触る部分だけを搭載した「左手用キーボード」が昔よりも安値で売られています。これを買ってもいいですが「もっと小さいものがほしい」「ありあわせで済ませたい」「自分でカスタマイズしたい」という人向けです。

左手デバイスの理想と要望

左手デバイスを導入するにあたり、私の希望はこのようなものでした。

・値段が高くないこと
・液タブの横におけるような小さな物であること
・かといって小さすぎてボタンを押し間違えるのはNG
・(可能であれば)イラスト作成用専用にするのはもったいない。アプリごとに機能の切り替えを自動で行いたい。
・Windowsで動くこと。MacやiPadは考慮しない。

かなり面倒な要望でしたが、雛形が完成しましたのでご紹介します。

最終的に作るもの

結論を先に書きますと「外付けテンキーを左手デバイス化」します。
具体的には、テンキーの0~9や記号のキーを別のキーを押したことにするように設定することで、アプリのショートカットキーを押したことにします。

テンキーの1,2,3をN,X,Eと対応付けることで、テンキーの1,2,3で「鉛筆、色切り替え、消しゴム」に切り替えるようにする。
(ショートカットはsai基準) 
テンキーの0を押すことで「保存(Ctrl+S)」を押したことにする、なんて動作も可能です。もっと複雑な動作も原理さえわかれば実現できます。

つまり、テンキーの数字や記号を潰して「他のキーを押した時のキーコード」を送ることで、自身の都合の良いようにアプリを動かします。

※ただし、動作環境はWindows固定です

なんとなく察した人向けに要点解説

ご自身で左手デバイスを探した方はなんとなく推測がついたかと思いますが、今回は「AutoHotKey」を利用してテンキーを左手デバイス化します。

この記事のポイントは、テンキーでAutoHotKeyを利用した際に問題になる以下の2つの点を解決したことです。
・キーを長押ししていると離したことを検知してくれない問題
・NumLock問題

いざ設定……の前に事前調査

早速設定を始めたいところですが、その前にテンキーの動作確認をします。
なざかといいますと、テンキーはデバイスごとにかなりクセがあり、想定しているような値を入力してくれない可能性があるためです。

メモ帳を開いてテンキーの動作確認をしてください。
①メモ帳を開いてIMEをON(日本語を入力する状態)にしてください。
②テンキーの0~9の各キーを押してください。
③その時に「全角、半角どちらの文字」が入力されたか確認してください
  A:半角
  B:全角
  C:そもそも文字が入力されない(PgUpやPgDn、Endが入力されている)
 半角でない場合、NumLockのON/OFFを切り変えて再度確認し、半角文字が入力される状態を確認します。

半角が入力される状態を確認し、必要に応じて以下の考慮が必要になります。
・普通に半角が入力された(NumLockは特に触っていない)
  →特に考慮は必要ありません。
・NumLockがONの時は半角。OFFの時は前回orPgUpやPgDnなど
  →追加の設定が必要ですが、対応可能です。
・NumLock関係なく全角文字
  →かなり工夫が必要になりそうです。
   今回はこのケースは想定していませんが、必要であれば考えます。

設定-利用するアプリの準備

以下のものを用意してください。
・外付けテンキー
・Windowsアプリ「AutoHotKey」
・Windowsアプリ「PowerToys」
 (AutoHotKeyでは一部不具合が起きるため、その回避のため利用する)

「AutoHotKey」「PowerToys」のインストールは長くなるので割愛します(お手数ですがご自身で調べてください)
また、上記2ツールの詳細な使い方もご自身で調査をお願いします。(そこまで書いていたら記事が長くなりすぎるため)
以下では全体方針と自力で設定するには難しい処理のみ記載します。

設定-PowerToys

PowerToysとはMicrosoftがオープンソースで開発しているユーティリティーソフトウェアです。
今回はPowerToysのうち「Keyboard Manager」を利用します。

AutoHotKeyはとても便利なのですが「キーを押しっぱなしにすると、キーを離したことを検知してくれないことがある」という問題があります。そのため、PowerToysのKeyboard Managerでは「押し続けて利用する」キーをテンキーに割り当てます。
(ペンや消しゴムなどの切り替えは押し続けることはないので、AutoHotKeyで設定することをおすすめします。)

私は「0」をスペース(手のひらツール)に割り当てて利用しています。

画像1

注意点として、キーの再マップはPowerToysのKeyboard Managerが有効になっている間はずっと有効になっています。

設定-AutoHotKey

AutoHotKeyでは単押しで利用するものを設定します。
また、AutoHotKeyは一種のプログラミングが可能で、非常に事細かな処理を実現できます。
そこで今回は「SAI2がアクティブになっている間のみ」テンキーを別のキーに割り当てて、それ以外の時は割り当てないようにします。
以下がそのスクリプトになります。

#InstallKeybdHook	;ホットキーの設定に無条件でキーボードフックを適応
#UseHook

#IfWinActive, PaintTool SAI
{
	;Numpad1::		    ;未設定
	;Numpad2::		    ;未設定
	;Numpad3::		    ;未設定
	;Numpad4::		    ;未設定
	Numpad5::^y			;リドゥ
	Numpad6::^z			;アンドゥ
	Numpad7::x			;前景色と背景色を交換
	Numpad8::e			;消しゴム
	Numpad9::n			;鉛筆
	;NumpadAdd::		;未設定
	;NumpadSub::		;未設定
    ;NumpadMult::       ;未設定
    ;NumpadDiv::        ;未設定
    ;NumpadDiv::        ;未設定
	NumpadEnter::^s		;保存
}

詳細な設定は「AutoHotKeyJP」様を参照していただければ幸いです(記事が少し古くなっているのですが、大体の流れはわかるかと)https://sites.google.com/site/autohotkeyjp/

また、AutoHotKeyを利用した左手デバイス化の方法は記載されている方も多くいらっしゃるので、そちらを参考にしてもいいかもしれません。

そして、前述のキーボードの動作確認で「NumLockがONの時しか半角数字が入力されない」という場合、以下の処理をAutoHotKeyのスクリプトに追加してください。
「アクティブウインドウに「PaintTool SAI」という文字が含まれていればNumLockをOn。そうでなければOffとする」とします。

#Persistent			;スクリプトを常駐とする
;
;ウインドウがアクティブになった場合に指定処理を呼び出す
;
myFunc := RegisterCallback("WinActivateHandler")
myHook := DllCall("SetWinEventHook"
, "UInt", 0x00000003 ; eventMin      : EVENT_SYSTEM_FOREGROUND
, "UInt", 0x00000003 ; eventMax      : EVENT_SYSTEM_FOREGROUND
, "UInt", 0          ; hModule       : self				
, "UInt", myFunc     ; hWinEventProc : 
, "UInt", 0          ; idProcess     : All process
, "UInt", 0          ; idThread      : All threads
, "UInt", 0x0003     ; dwFlags       : WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS
, "UInt")

WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
	WinGetTitle, title, ahk_id %hwnd%
	WinGetClass, class, ahk_id %hwnd%

	;アクティブウインドウに「PaintTool SAI」が含まれていればNumLockOn。そうでなければOffとする
	StringGetPos pos, title, PaintTool SAI
	If (pos >= 0) 
	{
		SetNumLockState, On
	} else {
		SetNumLockState, Off
	}
}

この処理のポイントは「アクティブウインドウに「PaintTool SAI」という文字が含まれていれば」という点です。
sai2ではレイヤー名変更の時は別途ウインドウが表示されますが、その時のウインドウは「PaintTool SAIという文字は含まれていない」ためNumLockがOFFになます。通常のイラストを描くウインドウは「PaintTool SAI」と表示されているのでNumLockがONとなり、AutoHotKeyのキーの割当が有効になります。

これはNumLockによってキーボードの「UIOJKLM」がテンキーに切り替わってしまうようなノートPCやコンパクトキーボードを利用されている方にも有効な手段になります。

まとめ

以上がテンキーを左手デバイス化して利用する手段になります。
AutoHotKeyを利用することについては多くの方が解説されていますが「なんとなく察した人向けに要点解説」について説明している記事は見たことがないのでnoteで記事として書き起こしました。

AutoHotKeyの使い方まではさすがに解説していません。申し訳ありませんが、ご自身で調査をお願いします。

この記事を踏み台にご自身でお好みの左手デバイス設定を行い、よきお絵かきライフを過ごされることを祈っております。


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