JH1LHVの雑記帳

和文電信好きなアマチュア無線家の雑記帳

スポンサーリンク

Mac 用にカスタマイズした 9Key マクロパッド

以前、Windows 環境向けに製作した Pro Micro 搭載 3×3マクロパッド(9Key) を紹介しましたが、今回はこのキー配列を Mac のプログラム開発向けに作り替えてみました。
ハードウェアの製作方法や部品構成については、過去記事をご参照ください。

www.jh1lhv.tokyo



Mac開発用キー配列

Mac でのプログラミング作業で頻繁に使用するショートカットを、9 個のキーに割り当てています。
左下のキーが SW1(ピンD2)で、USB 端子が上に来る配置です。

SW7 (D8)
Save (⌘S)

SW8 (D9)
Find (⌘F)

SW9 (D10)
Build/Run (⌘B)

SW4 (D5)
Select All (⌘A)

SW5 (D6)
Undo (⌘Z)

SW6 (D7)
Redo (⌘⇧Z)

SW1 (D2)
Copy (⌘C)

SW2 (D3)
Paste (⌘V)

SW3 (D4)
Cut (⌘X)

これで、編集からビルドまでよく使う操作を手元の 9Key でまとめて行えるようになります。

プログラムコード

Pro Micro(ATmega32U4)を HID キーボードとして動作させ、各スイッチにショートカットを送信するスケッチです。
デバウンス処理を入れ、押下時のみ送信する仕様にしています。

最小限のコード

#include <Keyboard.h>

const uint8_t KEY_PINS[9] = {2,3,4,5,6,7,8,9,10};
#define CMD   KEY_LEFT_GUI
#define SHIFT KEY_LEFT_SHIFT

struct Shortcut { uint8_t mods[3]; uint8_t modCount; uint8_t key; };

Shortcut SHORTCUTS[9] = {
  {{CMD},        1, 'c'}, // 0: Copy        ⌘C
{{CMD}, 1, 'v'}, // 1: Paste ⌘V
{{CMD}, 1, 'x'}, // 2: Cut   ⌘X
{{CMD}, 1, 'a'}, // 3: Select All  ⌘A
{{CMD}, 1, 'z'}, // 4: Undo ⌘Z
{{CMD,SHIFT}, 2, 'z'}, // 5: Redo        ⌘⇧Z
{{CMD}, 1, 's'}, // 6: Save        ⌘S
{{CMD}, 1, 'f'}, // 7: Find        ⌘F
{{CMD}, 1, 'b'}  // 8: Build/Run   ⌘B
}; const uint16_t DEBOUNCE_MS = 20; bool lastState[9]; uint32_t lastChangeMs[9]; void setup() { for (uint8_t i = 0; i < 9; i++) { pinMode(KEY_PINS[i], INPUT_PULLUP); lastState[i] = digitalRead(KEY_PINS[i]); lastChangeMs[i] = millis(); } Keyboard.begin(); } void loop() { uint32_t now = millis(); for (uint8_t i = 0; i < 9; i++) { bool raw = digitalRead(KEY_PINS[i]); if (raw != lastState[i] && now - lastChangeMs[i] >= DEBOUNCE_MS) { lastState[i] = raw; lastChangeMs[i] = now; if (raw == LOW) sendShortcut(SHORTCUTS[i]); } } } void sendShortcut(const Shortcut &sc) { Keyboard.releaseAll(); for (uint8_t m = 0; m < sc.modCount; m++) Keyboard.press(sc.mods[m]); Keyboard.press(sc.key); delay(5); Keyboard.release(sc.key); for (uint8_t m = 0; m < sc.modCount; m++) Keyboard.release(sc.mods[m]); Keyboard.releaseAll(); }

 

トラブル発生と復旧手順:Pro Micro が認識しない場合

今回の Mac 版 9Key プログラム開発中、スケッチを書き込んだ直後に「ピコッ」という接続音のあと認識エラーが発生し、Pro Micro が HID デバイスとして認識されなくなるトラブルがありました。

この状態になると通常の書き込みができませんが、ブートローダーモードに強制移行させることで復旧させることができました。

強制ブートローダーモードへの移行(電源投入時の強制リセット)

  1. Pro Micro の USB ケーブルを抜く
  2. GND ピンと RST ピンをジャンパーワイヤーで接続した状態にする
  3. 接続したまま USB ケーブルを挿す
  4. 約 2 〜 3 秒後にジャンパーワイヤーを外す
  5. さらに 1 秒間だけ再度ジャンパーワイヤーで接続
  6. ワイヤーを外す

この操作で Pro Micro はブートローダーモードに入り、Arduino IDE から再度書き込みが可能になります。

ポイントと注意点

  • タイミングが重要で、リセットの長さが短すぎたり長すぎたりすると認識しないことがあります。
  • 書き込み時はボード設定を正しく選択し、書き込みポートもブートローダーモードで現れる一時的なポートを選びます。
  • Mac の場合、接続音がしてもポートが一瞬しか出ないため、IDE 側の設定はあらかじめ済ませておくと成功しやすいです。

使用感

このカスタマイズで、Mac の Xcode やエディタでの作業がぐっと快適になりました。
特によく使う コピー/ペースト/全選択/ビルド などをワンアクションで呼び出せるので、マウス移動やキーボードの複雑な同時押しが不要になります。


シンプルながらも、作業効率の向上をすぐに実感できる環境になったと思います。
皆さんも、お試しあれ。