左手デバイスを作ろう
左手デバイスのすごいところ
作業が早くなること、そして体への負担が少なくなることです。具体的には何かをコピーするときはcommand+cと2つのキーを押さなくてはなりません。しかしデバイスのキーにこのコマンドを予約しておけば、1キーで済んでしまうのです。
絵を描いてるときはマウスですよね。しかしショートカットを使うのにマウスから手を離して、キーボードに手を置かなければいけません。左手デバイスのキーにそれぞれ割り振り、右手にマウス左手にマクロ用デバイスを持っておけば、タイムラグは発生しません。
ゲームの時なんかはキーボードのDAGキーの同時押しが必要なときなんかに、マクロを登録しておけば、1キーで必殺技を繰り出せたりするのです。すごいでしょう!
AdafruitのMACROPADを買ってみた
CirquitPythonで操作でプログラムできるMACROPADを購入しました。もともとMacBookAirのキーボードにはテンキーが付いていません。数字入力がかったるいのと、なにかショートカットを操作するのが少々面倒に思ったからです。こちらのMACROPADを購入。アプリケーションをインストールしていきます。

上のページでインストールできたら、macrosフォルダのpyファイルを作成します。すでにいろいろなマクロが入っていますが、YouTube macroを作っていきます。
YouTubeコントローラを作る
# SPDX-FileCopyrightText: 2021 Phillip Burgess for Adafruit Industries
#
# SPDX-License-Identifier: MIT
# webclimbers.info made
# MACROPAD Hotkeys example: chrome YouTube for Mac
from adafruit_hid.keycode import Keycode # REQUIRED if using Keycode.* values
app = { # REQUIRED dict, must be named 'app'
'name' : 'Chrome YouTube', # Application name
'macros' : [ # List of button macros...
# COLOR LABEL KEY SEQUENCE
# 1st row ----------
(0x300000, 'slow', '<'),
(0x004000, 'pause','k'),
(0x000030, 'fast', '>'), # Path-drawing tool
# 2nd row ----------
(0x000030, 'vol_down', [Keycode.DOWN_ARROW]), # Select (path)
(0x300000, 'full', 'F'), # Reflect selection
(0x003000, 'vol_up', [Keycode.UP_ARROW]), # Draw rectangle
# 3rd row ----------
(0x000030, 'mini', "i"),
(0x300000, 'search', "/"),
(0x003000, 'next', "N"),
# 4th row ----------
(0x000030, 'befTab', [Keycode.CONTROL, Keycode.SHIFT, Keycode.TAB]),
(0x000000, 'chrome', []),
(0x300000, 'nexTab', [Keycode.CONTROL, Keycode.TAB]),
# Encoder button ---
(0x000000, '', [Keycode.COMMAND, Keycode.OPTION, 'S']) # Save for web
]
}
youtube.py
macroに名前をつける
10行目のChrome YouTubeがMacropadのディスプレイに表示されます。
色の指定
14行目の0x300000に注目してみましょう。0xあとの8桁の数字は3つのグループに分けることができます。色はRGBで表します。R30(レッド)、G00(グリーン)、B00(ブルー)なので、赤だけ光ります。
表示の指定
slowは液晶の表示です。文字数はとても限られます。8文字ですが、横の文字と間隔が必要なので注意してください。左右にスペースがないと読めなくなるので、適当にそして自分が覚えられる範囲で短く表示させましょう。
キー入力
YouTubeのショートカットで”<“は再生速度を遅くするキーです。このようにして3×4のキーにすべて割り振っていきます。4行目の真ん中はミニ液晶にだけchromeと表示させるだけなので、カラーはいれてません。[]のカッコの中に記述します。特殊キーの場合は19行目のようにKeycode.のあとにRETURN,CONTROL,COMMANDを書いていきます。
テンキーをカスタムする
もともとこのhotkeysにはnumpadという名前で10キーが搭載されてますが、少し使いやすく改変します。私は以下のようなコードにしました。
# SPDX-FileCopyrightText: 2021 Emma Humphries for Adafruit Industries
# SPDX-License-Identifier: MIT
# MACROPAD Hotkeys example: 10keys
# webclimber changed
from adafruit_hid.keycode import Keycode # REQUIRED if using Keycode.* values
app = { # REQUIRED dict, must be named 'app'
'name' : '10keys', # Application name
'macros' : [ # List of button macros...
# COLOR LABEL KEY SEQUENCE
# 1st row ----------
(0x202000, '7', ['7']),
(0x202000, '8', ['8']),
(0x202000, '9', ['9']),
# 2nd row ----------
(0x202000, '4', ['4']),
(0x202000, '5', ['5']),
(0x202000, '6', ['6']),
# 3rd row ----------
(0x202000, '1', ['1']),
(0x202000, '2', ['2']),
(0x202000, '3', ['3']),
# 4th row ----------
(0x101010, '.', ['.']),
(0x800000, '0', ['0']),
(0x101010, 'enter', [Keycode.RETURN]),
# Encoder button ---
(0x000000, '', [Keycode.BACKSPACE])
]
}
10keys.py
もともと#のあった位置に小数点のマーク、*にENTERキーをいれただけです。これでだいぶ使いやすくなったはずです。このように元からあるプログラムを改変し、ちょっと自分好みのカスタムをするのもいいですよね。よくある左手デバイスではアプリをダウンロードしたり、ブラウザアプリで設定してあげる必要があるけど、CirquitPythonではテキストファイルなのでアプリがなくても、ネット環境がなくてもすぐに設定を変えることができるのが強みです。
Affinity用ショートカットをカスタムする
最近無償化で人気が出てきたAffinityです。Adobeからの乗り換えの人が殺到してるようです。私は個人プロジェクトではほぼAffinityを使用しています。
# SPDX-FileCopyrightText: 2021 Phillip Burgess for Adafruit Industries
#
# SPDX-License-Identifier: MIT
# MACROPAD Hotkeys example: Affinity for Mac
#webclimber made
from adafruit_hid.keycode import Keycode # REQUIRED if using Keycode.* values
app = { # REQUIRED dict, must be named 'app'
'name' : 'affinity for Mac', # Application name
'macros' : [ # List of button macros...
# COLOR LABEL KEY SEQUENCE
# 1st row ----------
(0x111111, 'pen', 'p'),
(0x003300, 'move','v'),
(0x000030, 'node', 'a'), # Path-drawing tool
# 2nd row ----------
(0x000030, 'left', [Keycode.OPTION,"m"]), # Select (path)
(0x300000, 'level', [Keycode.CONTROL,Keycode.COMMAND,'R']), # Reflect selection
(0x003000, 'right', [Keycode.OPTION,"."]), # Draw rectangle
# 3rd row ----------
(0x000030, 'zoomBack', [Keycode.COMMAND,"-"]),
(0x300000, '100%', [Keycode.COMMAND,"1"]),
(0x003000, 'zoomIn', [Keycode.OPTION,"+"]),
# 4th row ----------
(0x300000, 'COMMANDz', [Keycode.COMMAND,"z"]),
(0x000000, '', []),
(0x000030, 'pencil', ["n"]),
# Encoder button ---
(0x000000, '', [Keycode.COMMAND, Keycode.OPTION, 'S']) # Save for web
]
}
affinity.py
affinityで使う頻度の多いショートカットを集めてみました。もちろんこちらもどんどん改変して使ってください。これでキーボードにさわる時間が大幅に削減されるはずです。液タブとか使う方には大変便利なのではないでしょうか?
affinityデフォルトでは画面の回転にショートカットが割り当てられていませんので、アプリケーション側でも設定する必要がありますので、ご注意ください。
それではみなさん!左手デバイスの追加でより良いキーボードライフをお楽しみください。

