コピー・ペースト・全選択といったショートカット操作を、ワンボタンで実行できたら便利だと思いませんか?
本記事では、Raspberry Pi RP2040ボードとCircuitPythonを使って、簡単にショートカットマクロキーを自作する方法を解説します。
開発環境には初心者でも扱いやすいThonnyエディターを使用し、必要な部品、配線、サンプルコードまでステップごとに紹介。
効率化デバイスや左手デバイスを自作したい方に最適な入門記事です。
使用部品と環境
- 今回はRP2040-zero を使いましたがRaspberry Pi Pico でも
- タクトスイッチ × 3(コピー/ペースト/全選択)
- ブレッドボード、ジャンパーワイヤー
- PC(Windows または macOS)
- USBケーブル(データ通信対応)
RP2040-zero ピンレイアウト

CircuitPython のセットアップ
- https://circuitpython.org/board/waveshare_rp2040_zero/にアクセス
.uf2ファイルをダウンロード- RP2040-zeroの「BOOTSEL」ボタンを押しながらPCに接続
.uf2をドラッグ&ドロップ- 自動的に
CIRCUITPYドライブとしてマウントされる
Thonnyのインストールと設定
- https://thonny.org/ からThonnyをインストール
- 起動後、[ツール] → [設定] → [インタプリタ] →
- 「CircuitPython (Generic)」を選択
- 接続ポートを指定(自動でもOK)
ライブラリの準備(adafruit_hid)
- Adafruit HID ライブラリ一式 をダウンロード
adafruit_hid/の中の下記の3個をペースト。lib/adafruit_hid/keyboard.pylib/adafruit_hid/keycode.pylib/adafruit_hid/__init__.py
最終的なRP2040内のフォルダ構成(重要!)
CIRCUITPY/
├── code.py ← 自分のプログラム
└── lib/
└── adafruit_hid/
├── __init__.py
├── keyboard.py
└── keycode.pylib/の配下にadafruit_hidフォルダーをペーストしても問題ありませんただ余計なものが入りますが
⚠️ lib/ フォルダが必要です。なければ自分で作成してください。
回路図と接続例

| 機能 | GPIOピン | 説明 |
|---|---|---|
| Ctrl+C | GP26 | コピー |
| Ctrl+V | GP27 | ペースト |
| Ctrl+A | GP28 | 全選択 |
※ ボタンの片方はGND、もう片方を各GPIOへ
※ プルアップ入力設定で使います
プログラム(code.py)
import board
import digitalio
import time
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
kbd = Keyboard(usb_hid.devices)
# 各ボタンピンの初期設定
buttons = {
"copy": digitalio.DigitalInOut(board.GP26),
"paste": digitalio.DigitalInOut(board.GP27),
"select_all": digitalio.DigitalInOut(board.GP28),
}
# 全ボタンに対して入力&プルアップ設定
for btn in buttons.values():
btn.direction = digitalio.Direction.INPUT
btn.pull = digitalio.Pull.UP
# 各ボタンの前回状態を記録する辞書
prev_states = {key: True for key in buttons} # プルアップなので未押下はTrue
while True:
for name, btn in buttons.items():
current = btn.value
previous = prev_states[name]
# エッジ検出(押された瞬間だけ反応)
if previous and not current:
if name == "copy":
kbd.press(Keycode.CONTROL, Keycode.C)
kbd.release_all()
elif name == "paste":
kbd.press(Keycode.CONTROL, Keycode.V)
kbd.release_all()
elif name == "select_all":
kbd.press(Keycode.CONTROL, Keycode.A)
kbd.release_all()
# 状態を保存(次回比較用)
prev_states[name] = current
time.sleep(0.02) # 最小限の遅延(10ms)code.pyで保存すると、電源投入と同時に自動実行されます。
まとめ
今回は、RP2040ボードとCircuitPython、Thonnyを使って、
「Ctrl+C / Ctrl+V / Ctrl+A」を物理ボタンに割り当てるマクロボタンを作ってみました。
設定さえ済めば、コードも非常にシンプルで、
初心者でも手軽に「左手デバイス」や「マクロキーボード」を自作できます。
あなたもぜひ、自分だけの効率化ボタンを作ってみてはいかがでしょうか?
慣れてきたら複数ボタンを組み合わせて、プロっぽい「作業効率化デバイス」に進化させましょう!



