挑戦する
印刷される
i
を押したままにし、
Esc
を放すと、USB HIDデバイスであるペダルを作成し
Esc
。
解決策
中国のPCセンサーUSBフットスイッチペダルを注文し、それに応じてプログラムします。
理論的には、すべてが非常に単純に思えます。 通常のUSBペダルを1つ、トリプルペダルを1つ、コントローラーのないボタン付きの機械的ペダルを1つ注文しました。 ペダル付きのパッケージを受け取るとすぐに、私はすぐに厳しい現実に遭遇しました。 私は、PCsensorペダルが単一のキーとしてのみ機能できることを考慮しませんでした。 これは、非常に原始的なソリューションにのみ適しています。 このタスクでは、異なるイベントによってトリガーされる少なくとも2つのキーが必要です。 これは、ペダルをプログラミングするためのソフトウェアがWindowsでのみ利用可能であるという事実は言うまでもありません。 MacおよびLinuxの場合、このデバイスを自分で構成するドライバーを作成できない場合、ペダルはほとんど役に立ちません。
私が開発に触発されたアレクサンダー・レフチュクは、無作法なハックを使用しました-彼は2つのペダルから2つの光学センサーを取り出して1つのケースに入れました。 1つのセンサーが押されて
i
にプログラムされるとトリガーされ、もう1つのセンサーはリリースされると
Esc
を生成するようにプログラムされ
Esc
。 また、各センサーは独立したUSB HIDコントローラーであるため、そのデバイスはコンピューターの2つのUSBポートを同時に占有します! このようなソリューションにはいくつかの利点があります。1つのVimペダルを取得するには、2つの通常のPCセンサーペダルが必要ですが、独自のコントローラーをフェンスする必要はありません。
問題が研究されたので、あなたはそれを解決し始めることができます。 つまり、ペダル1つ、センサー1つ、USBケーブル1つ、USB HIDデバイスのふりをするコントローラー1つです。 検索する必要さえありませんでした。 私は長い間Arduinoとマイクロコントローラーが好きでした。 ボードのArduinoシリーズには、ATmega32u4に基づいたLeonardoバージョンと、USB周辺機器として機能するAtmel SAM3X8E Cortex-M3 ARMチップに基づいたDueがあります。 ただし、両方のボードが大きすぎるため、それらの機能は単純なタスクには明らかに冗長です。 私は同じボードのマイクロバージョンを探し始めました。
dx.comでDF Robot Beetleとその中国のクローンのソリューションをどのように見つけたか覚えていません。 問題の価格は約10ドルです。 一度に3つを注文することにしました。
写真からわかるように、コントローラーのサイズは非常に小さく、Arduinoと比較して(Arduinoに比べて)接点数が少なく、余分な突起要素はありません。 同時に、ソフトウェアレベルでArduinoと互換性があります。 したがって、必要な十分なコンパクトさを優先して、従来のArduinoプラットフォームの冗長性をなくしただけでなく、このプラットフォームに固有の新しい機能を追加しました。
それだけです! 光学ペダルセンサーをコントローラーに接続し、ファームウェアを書き込み、デバイスをケースに慎重に組み立てる必要があります。 既存の光学ペダルセンサーをArduino入力の1つ(この場合はD9)にはんだ付けしました。 ボード上の+と-ペダルを見つけ、それらをArduinoに接続して、フォトダイオードからの信号をデジタル入力に送りました。 念のため、誤った信号を出さないように、ペダルボード上の工場のマイクロサーキットドロップを切断しました。
残念ながら、ここでは多くの画面にはんだ付けするワイヤをペイントしません。はんだごてをオンにする方法と錫の購入場所を指示する必要があるためです。 はんだごての使い方を知っている人にとっては、すべてが非常にシンプルで明白です。
鉄
- USBフットスイッチ (PCsensor)。
- Jtron Beetleとしても知られるDF Robot Beetle 。
- はんだごて、その使用および関連材料の経験。
- 投稿のセット。
- MicroUSBコード。
ソフトウェア
- Vimのペダルは、USBキーボードとVim自体を実行するすべてのオペレーティングシステムと互換性があります。
- コントローラのファームウェアには、 Arduino IDEが必要です。 このシェルは、Windows、Mac、Linuxの3つのメインシステムで実行されます。
- ファームウェアのソースコード 。 Arduino IDEでコードを開き、コントローラーをコンパイルしてフラッシュするだけです。
- ペダルの機能を拡張し、マウスの機能を実装するには、 マウスとキーボードライブラリを使用します。
ファームウェアの原理は非常に単純です。 コントローラーの9番目の出力の信号の存在が
buttonState
(
buttonState
変数)。 信号が0から1に変わる場合-ペダルが踏まれている場合、
Esc, i
送信し
Esc, i
。 信号が1から0に変化した場合-ペダルを放した場合、
Esc
送信し
Esc
。 おそらく、
i
前に
Esc
を送信して、既に含まれている挿入モードを終了することを説明する必要はないでしょう。
組立
- 最初のプロトタイプ。 左の写真はArduinoコントローラー、右はコントローラーボードとPCセンサーセンサーです。 3本のワイヤはプラス、信号、および共通です。 一番下の赤はプラス、一番上の赤はマイナス、青は信号です。
- ここでは、Arduino IDEを使用したコントローラーファームウェアプロセスをスキップします-これは一般的な場所です。 プログラムソースは利用可能です 。 ファームウェアの場合、Leonardoボードと対応するUSBポートを設定で選択します。
- 新しいコントローラーでペダルを事前に組み立ててみます。
- 驚くべきことに、すべてがすぐに機能し、調整を必要としませんでした。 言うのを忘れていました。 構造を組み立てるには、microUSBコネクタプラグが必要です。このプラグには、ペダルから通常の長いコードをはんだ付けしました。 はんだごてを保持できる人にとっては、コードの変更は問題になりません。
- ターンキーソリューションの外観。
デモンストレーション
追加機能
私のソリューションの非自明な機能をリストする価値があります:
- オフにすることなく、またペダルをその場所から外すことなく、オンザフライでペダルのロジックを変更できます。
- 行全体とテキストに入力を追加します。
- Arduinoソフトウェアのほぼすべての機能を使用します(ただし、ボード上の限られた外部接点について忘れないでください)。
- コンピューター側でソフトウェアを作成すると、アプリケーションコンテキストがコントローラーに送信され、ペダルが動作モードを変更します。
- タブレットのサイズのシンプルなキーキーを追加して、音声表示を追加できます(視覚障害者など)。
- マウスとして機能するようにペダルを調整できます。 また、マウスボタンに限定されません。
- そして最後に、キラー機能-伝説的な点滅Arduino LED ! (このプロジェクトでは使用されません)
次は?
- 次に、デバイスの3ペダルバージョンを組み立てたいと思います。 たぶん、Vim、他のアプリケーション(Sublime Text、Atom)にも。 このようなソリューションの場合、必要なArduinoは1つだけです。
- Bluetoothバージョンのペダルは、 Bluefruit EZ-keyコントローラーに実装できます。 正直なところ、私はそれに乗っていて、最初はペダルを作りたいと思っていました。 ワイヤレスペダルを使用するのがどれほど素晴らしいか想像してみてください! しかし、悲しいかな、ロシアでの配送の問題のため、この商品はAdafruitまたはAmazonで注文することはほとんど不可能です(私は知りました)。 誰かがこれを行うことに成功した場合は、必ず私に書いてください。
参照資料
- Alexander Levchukのvim-clutch 。
- USB Foot Switch台湾企業のPCセンサー。
- DFロボットビートル。
- Jtron Beetle 。
- アルドゥイーノレオナルド 。
- Arduino IDE
- Arduino用のマウスおよびキーボードライブラリ 。
- GitHubプロジェクトリポジトリ 。
コメントは、プロジェクトのさらなる発展のためのアイデアを受け入れます。 ご清聴ありがとうございました!