1日に記録するキーストロークの数は膨大です。メッセージングアプリから次の小説のコーディングや執筆まで、キーを押す回数を計算するのは困難です。しかし、ショートカットキーパッドを作成することで、少しの時間と痛む関節を節約できるとしたらどうでしょうか?
Pimoroni’s Keybow 2040 は、CircuitPythonでUSBキーボードとして機能するようにプログラムできる16キーキーボードです。各キーは、アプリケーションの起動、オーディオレベルの制御、OBSのシーンの切り替え、面白い猫の写真のTwitterへの貼り付けをプログラムできます。
このハウツーでは、Keybow 2040を、ページナビゲーションキー、OBSショートカット、および2つの汎用キーボードとして設定します。一般的なアプリケーションを起動するためのホットキー。
ショートカットキーボードは、かゆみを掻くように設計されています。既存のキーボードを拡張し、OBSシーンの切り替えやアプリケーションランチャーなどの機能を追加します。レイアウトはニーズを反映するため、このガイドを基にしてパーソナライズされたレイアウトを作成してください。
必要になります
Keybow2040のセットアップ
Pimoroniには
付属のキーキャップを使用するのではなく、予備のキーボードからいくつかのMX互換キャップを調達しました。次に、キーボードのキャップを希望のレイアウトに配置しました。
一番上の行は、基本的なナビゲーション、ホーム、上向き矢印、終了、ページアップです。 2行目は残りの矢印キーで、ページを下に移動します。 3行目は、音量を上下に制御し、スクリーンショットツールを起動して、ターミナル/コマンドプロンプトを開きます。最後の行はOBS用に予約されており、4つのシーン間を移動します。もちろん、自宅でこれを試している場合は、アプリの起動、OBSなどのプログラムでのアクションの実行、メディアの再生の制御など、必要なキーキャップを使用して、必要な機能に割り当てることができます。
Keybow 2040は、tでキー0を確認する番号付けシステムを使用しますボードの左下、右上のキー15です。 Keybow CircuitPythonライブラリを使用する場合、これらの数値を使用して、各キーの機能と点灯方法を設定します。
Keybow2040ショートカットキーのプログラミング
このプロジェクトのコードは、CircuitPythonで記述されています。これは非常によく似ています。 MicroPython および Python 3 へ。
1. Keybow 2040 をUSB-Cケーブルでコンピューターに接続します。新しいデバイス、CIRCUITPYが表示されます。
2。好みのエディタを使用して、CIRCUITPYドライブにあるコード.pyを開きます。 MicrosoftのVisualStudio Code、Thonny、またはMuコードエディタをお勧めします。
3。 ファイル内のテキストを削除します。
4. 4つのライブラリをインポートします。 1つ目はボードで、RP2040チップでGPIOを使用できます。 2つ目は Keybow2040 です。これは、Keybow2040の制御を容易にするための抽象化です。 time をインポートして、コードのペースを制御します。最後に、 usb_hid をインポートします。これにより、USBキーボードがあるかのようにキーボードショートカットを送信できるようになります。
インポートボード
keybow2040からインポートKeybow2040
インポート時間
usb_hidをインポートします
5。 3つのライブラリをインポートして、Keybow 2040がUSレイアウトでキーボードとして機能できるようにし、キーストロークをコードで生成できるようにします。
from adafruit_hid.keyboard import Keyboard
adafruit_hid.keyboard_layout_usからimportKeyboardLayoutUS
adafruit_hid.keycodeからインポートキーコード
6。 2つのライブラリをインポートして、Keybow2040が消費制御コードを送信できるようにします。これは通常メディアキーに使用されます。
から adafruit_hid.consumer_control_code import ConsumerControlCode
adafruit_hid.consumer_controlからインポートConsumerControl
7。 KeybowはI2Cを使用してRP2040と通信します。 I2Cを使用していることをコードに伝え、簡単に参照できるオブジェクトを作成 キーボウ する必要があります。 。次に、そのオブジェクトを使用して、キーボードとの対話をはるかに簡単にする別のオブジェクトキーを作成します。
i2c=board.I2C()
keybow=Keybow2040(i2c)
キー=keybow.keys
8。 3つのオブジェクトを作成します。キーボードは、USBヒューマンインターフェイスデバイス(HID)の作成に使用され、レイアウトはキーボードをUSレイアウトを使用するように設定します。 3 番目のオブジェクトは consumer であり、通常はボリューム コントロールなどのメディア キーに割り当てられる特別なキー プレスを送信できるようにします。
キーボード=キーボード(usb_hid.devices)
レイアウト=KeyboardLayoutUS(keyboard)
コンシューマー=ConsumerControl(usb_hid.devices)
9。 2つのリストを作成します: デフォルト と だった 。これらのリストには、後で特定のキーを点灯するために使用されるキー番号が格納されます。ご想像のとおり、 wasd は移動キーを指し、この場合はカーソルキーにマップされます。
default=[0,1,3,4,5,8,9,11,12,13,14、 15]
wasd=[2,6,7,10]
10。 ループを作成して、メインコードを常に実行します。
while True:
11。無限ループ内で forループを作成します。このループはデフォルトリストを繰り返し処理し、番号が付けられた各キーのLEDを緑色に設定します。 forループが繰り返されるたびに、iの値はリスト内の次の項目(0から1,3… 15)に変わります。 Keybow2040はGR B(緑、赤、青)LEDを使用しているため、明るい緑は255,0,0であることに注意してください。
またはデフォルトのi: keybow.keys [i].set_led(255,0,0)
12。 別のforループを作成します。今回はカーソルキーの色を赤に設定して、簡単に見つけられるようにします。
for i in wasd: keybow.keys [i].set_led(0,255,0)
13。 条件付きテストを使用して、キーが押されているかどうかを確認します。最初のキーは、左下隅にあるキー0です。このキーが押されたら、SHIFT + Aキーを押してキーを放し、キーを0.1秒間赤く点灯させます。このショートカットは、The PiCastショーを提示するときにOBSのシーンを変更します。
キー [0].pressed の場合: Keyboard.send(Keycode.SHIFT、Keycode.A) keybow.keys [0].set_led(0、255、0) Keyboard.release_all() time.sleep(0.1)
14。 キー1の条件を設定します。左下から1つのキーを上に配置します。このキーを押すと、すべてのLEDが紫(赤と青が混在)に設定され、メディアキーコマンドが送信されて音量が下がります(減ります)。キーが解放され、短いスリープにより、キーがデバウンスするリスクが軽減されます。マップするすべてのキーに対してこのプロセスを繰り返します。テンプレートが必要な場合は、このプロジェクトの完全なコードがこの方法の下部にあります。
<コード> elif キー [1].pressed: keybow.set_all(0、255、255) Consumer.send(ConsumerControlCode.VOLUME_DECREMENT) Keyboard.release_all() 時間.睡眠(0.01)
15。キーパッドのキー9にはPrtScキーキャップがあり、このキーはWindows SnippingToolをトリガーします。このキーを構成して、押されたときにすべてのLEDを青色に設定してから、CircuitPythonに3つのキーを同時に押すように指示します。これらのキーは、Control、ALT、およびPです。次に、キーを放し、コードを一時停止します。
elif keys [9].pressed: keybow.set_all(0、0、255) Keyboard.send(Keycode.CONTROL、Keycode.ALT、Keycode.P) Keyboard.release_all() 時間.睡眠(0.1)
16。 16個のキーすべてに対して条件付きプロセスを繰り返します。キーを識別し、キーが押されたときに実行するアクションを設定するプロセスは、16個のキーすべてに対して繰り返されます。最後のキーはキー15(0から開始)です。このキーを押すと、すべてのLEDが青色に設定され、Page Upキーが押されてから、キーを放してしばらく一時停止します。
elif keys [15].pressed: keybow.set_all(0、0、255) Keyboard.send(Keycode.PAGE_UP) Keyboard.release_all() time.sleep(0.1)
17。キーボウが入力を探し続けるには、各ループの最後に更新するように指示する必要があります。これが欠落している場合、コードは期待どおりに機能しません。
keybow.update()
code.pyファイルを保存しますそしてKeybow2040が再起動してコードを実行します。数秒でキーを押してほとんどのタスクを短時間で実行できますが、まだやるべきことが少しあります。
Windowsアプリを起動するためのキーボードショートカットの追加
Windowsを使用している場合は、キーパッドのキーの1つを押すと、OSがSnipping Tool(キーパッドのPrtsrcキーを押すため)やターミナルキーを押した後にCMDプロンプトなどのプログラムを起動することを認識できるように、キーボードショートカットを作成する必要があります。キーパッドで。 Windowsの組み込みのキーボードショートカットメソッドはCTRL + ALT + [文字または数字]を必要とするため、たとえば、キーパッドのPrtsrcキーは実際にはCTRL + ALT + Pを起動することに注意してください。プログラムを起動するキーボードキーについて、これらの手順を繰り返します。
1。 Windowsの検索ボックスでアプリを検索します(例:「SnippingTool」)。起動しないでください。
2。 プログラムアイコンを右クリックし、 [ファイルの場所を開く]を選択します
3。 lショートカットアイコンを右クリックし、 [プロパティ]を選択します。
4。 [ショートカットキー]フィールドをクリックして、キーボードの組み合わせを入力します(Prtsrcの場合はCTRL + ALT + P)。これにより、そのコマンドのショートカットキーが、そのキーのコードと一致するように設定されます。
OBSショートカットキーの設定
OBSショートカットを設定するには、OBSを開き、[設定]をクリックする必要があります。 >>シーンにキー押下を割り当てるためのホットキー。
このコードには、プロジェクトのさまざまな機能に使用できる16個のキーすべてのショートカットが含まれていることに注意してください。
インポートボード
keybow2040からインポートKeybow2040
インポート時間
usb_hidをインポートします
adafruit_hid.keyboardからインポートキーボード
adafruit_hid.keyboard_layout_usからimportKeyboardLayoutUS
adafruit_hid.keycodeからインポートキーコード
adafruit_hid.consumer_control_codeからimportConsumerControlCode
adafruit_hid.consumer_controlからインポートConsumerControl #キーボウを設定する
i2c=board.I2C()
keybow=Keybow2040(i2c)
キー=keybow.keys #キーボードとレイアウトを設定する
キーボード=キーボード(usb_hid.devices)
レイアウト=KeyboardLayoutUS(keyboard)
コンシューマー=ConsumerControl(usb_hid.devices)
デフォルト=[0,1,3,4,5,8,9,11,12,13,14,15]
wasd=[2,6,7,10] Trueの場合: デフォルトのiの場合: keybow.keys [i].set_led(255,0,0) 私のためにwasd: keybow.keys [i].set_led(0,255,0) キー [0] が押された場合: Keyboard.send(Keycode.SHIFT、Keycode.A) keybow.keys [0].set_led(0、255、0) Keyboard.release_all() time.sleep(0.1) elif keys [1].pressed: keybow.set_all(0、255、255) Consumer.send(ConsumerControlCode.VOLUME_DECREMENT) Keyboard.release_all() time.sleep(0.01) elif keys [2].pressed: keybow.set_all(255、0、0) Keyboard.send(Keycode.LEFT_ARROW) Keyboard.release_all() time.sleep(0.01) elif keys [3].pressed: keybow.set_all(255、0、0) Keyboard.send(Keycode.HOME) Keyboard.release_all() time.sleep(0.1) elif keys [4].pressed: keyboard.send(Keycode.SHIFT, Keycode.B) keybow.keys [4].set_led(0、255、0) Keyboard.release_all() time.sleep(0.1) elif keys [5].pressed: keybow.set_all(0、255、255) Consumer.send(ConsumerControlCode.VOLUME_INCREMENT) time.sleep(0.01) elif keys [6].pressed: keybow.set_all(255、0、0) Keyboard.send(Keycode.DOWN_ARROW) Keyboard.release_all() time.sleep(0.01) elif keys [7].pressed: keybow.set_all(255、0、0) Keyboard.send(Keycode.UP_ARROW) Keyboard.release_all() time.sleep(0.01) elif keys [8].pressed: Keyboard.send(Keycode.SHIFT、Keycode.C) keybow.keys [8].set_led(0、255、0) time.sleep(0.1) elif keys [9].pressed: keybow.set_all(0、0、255) Keyboard.send(Keycode.CONTROL、Keycode.ALT、Keycode.P) Keyboard.release_all() time.sleep(0.1) elif keys [10].pressed: keybow.set_all(255、0、0) keyboard.send(Keycode.RIGHT_ARROW) Keyboard.release_all() time.sleep(0.01) elif keys [11].pressed: keybow.set_all(255、0、0) Keyboard.send(Keycode.END) Keyboard.release_all() time.sleep(0.1) elif keys [12].pressed: Keyboard.send(Keycode.SHIFT、Keycode.D) keybow.keys [12].set_led(0、255、0) time.sleep(0.1) elif keys [13].pressed: keybow.set_all(0、0、255) keyboard.send(Keycode.CONTROL, Keycode.ALT, Keycode.T) Keyboard.release_all() time.sleep(0.1) elif keys [14].pressed: keybow.set_all(0、0、255) Keyboard.send(Keycode.PAGE_DOWN) Keyboard.release_all() time.sleep(0.1) elif keys [15].pressed: keybow.set_all(0、0、255) Keyboard.send(Keycode.PAGE_UP) Keyboard.release_all() time.sleep(0.1) keybow.update()