1日に記録するキーストロークの数は膨大です。メッセージングアプリから次の小説のコーディングや執筆まで、キーを押す回数を計算するのは困難です。しかし、ショートカットキーパッドを作成することで、少しの時間と痛む関節を節約できるとしたらどうでしょうか?

Pimoroni’s Keybow 2040 は、CircuitPythonでUSBキーボードとして機能するようにプログラムできる16キーキーボードです。各キーは、アプリケーションの起動、オーディオレベルの制御、OBSのシーンの切り替え、面白い猫の写真のTwitterへの貼り付けをプログラムできます。

このハウツーでは、Keybow 2040を、ページナビゲーションキー、OBSショートカット、および2つの汎用キーボードとして設定します。一般的なアプリケーションを起動するためのホットキー。

ショートカットキーボードは、かゆみを掻くように設計されています。既存のキーボードを拡張し、OBSシーンの切り替えやアプリケーションランチャーなどの機能を追加します。レイアウトはニーズを反映するため、このガイドを基にしてパーソナライズされたレイアウトを作成してください。

必要になります

[埋め込みコンテンツ]

Keybow2040のセットアップ

Pimoroniには 完全ガイド Keybow 2040のセットアップ方法について説明します。ビルドプロセスは非常にシンプルで、ドライバーと数分の作業のみが必要です。 Keybow 2040には、CircuitPythonと必要なすべてのライブラリがプリインストールされています。 CircuitPythonとライブラリをインストールする必要がある場合は、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」)。起動しないでください。

CircuitPythonショートカットキー

(画像クレジット:トムのハードウェア)

2。 プログラムアイコンを右クリックし、 [ファイルの場所を開く]を選択します

CircuitPythonショートカットキー

(画像クレジット:トムのハードウェア)

3。 lショートカットアイコンを右クリックし、 [プロパティ]を選択します。

CircuitPythonショートカットキー

(画像クレジット:トムのハードウェア)

4。 [ショートカットキー]フィールドをクリックして、キーボードの組み合わせを入力します(Prtsrcの場合はCTRL + ALT + P)。これにより、そのコマンドのショートカットキーが、そのキーのコードと一致するように設定されます。

OBSショートカットキーの設定

OBSショートカットを設定するには、OBSを開き、[設定]をクリックする必要があります。 >>シーンにキー押下を割り当てるためのホットキー。

CircuitPython Shortcut Keys

(画像クレジット:Tom’s Hardware)
完全なコードリスト

このコードには、プロジェクトのさまざまな機能に使用できる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()
 

Categories: IT Info