じぶんキーボード設定アプリ

ガジェット製作

じぶんキーボードのキー割り当てを変更するMacのアプリを作りましたので公開しています。

この記事の内容

2013年に自由にカスタマイズできる足で操作するフットキーボードを製作したのですが、問い合わせをいただく内容を見ると、必ずしも足で操作するだけではなく、自分用にカスタマイズできるキーボードが欲しい、という方が何人かいらっしゃいました。

ということで、先日からじぶんキーボードとしてプリント基板も作っていたのですが、Macからキー割り当てを変更するアプリも作りましたので、一度このタイミングで今までの作業をまとめておこうと思います。

 

じぶんキーボードのスペックと使い方

今回は制御用マイコンとしてPIC18F14K50を使用し、スイッチ(キー)の接続を簡単にできるようにI/Oピン1本にスイッチを1個つなげるようにしました。PIC18F14K50はUSBデバイスにした場合はI/Oピンは13本取れますので、スイッチを12個と、キー割り当てを変えるためにシフトキーを1個つなげる仕様にしました。

使い方としては、制御ボードに自分の好きなスイッチ(キー)をつなげます。つなげるスイッチは、電気的にOFF/ONができればなんでもOKです。こんな感じで使えます。

Board usage

 

ハードウエアまとめ

ハードウエアですが、ノイズ対策をしないものだったり、きちんとしたものを設計してみましたが、普通に使うのであれば、Standard版でいいと思いますので、今後の作業は基本Standard版で進めたいと思います。

以下、Standard版の回路図です。

Jibun keyboard standard version schematic

EAGLEの回路図とボード図もアップしておきます。ウィルスチェック済みです。

 

ファームウエアまとめ

PIC18F14K50用のプログラムは、Microchip Technology社のサンプルアプリをベースにしています。サンプルアプリは、Microchip Libraries for Application Vesion 2015-08-15に含まれているものです。こちらもMPLABXのプロジェクトファイルをアップしておきます。ウィルスチェック済みです。

プログラムの変更箇所には以下のコメントを入れてありますが、不明点がありましたらお問い合わせフォームからお問い合わせ頂ければと思います。

 

設定アプリ(Mac用)まとめ

じぶんキーボードをMacに接続した状態で、Macからキーの割り当てを変更できるよう、設定アプリを作りました。今後Swiftに移行していくと思いますので、Swiftで作ろうと思いましたが、IOKitのUSB HIDにアクセスする方法がわからなかったので、Objective-Cで書いてあります。以前作成したフットキーボード向けのソースをベースにしていますので、アプリ名は「JibunKeyboardSetter」ですが、ソースコード中、FootKeyboardという名称のままにしてあります。あと、デザインセンスが全くないので、とりあえずデザインみたいな感じのアイコンになっています。

Xcodeのプロジェクトをアップしておきます。ウィルスチェック済みです。

2016年5月14日追記
なお、以前公開していました2016-05-07版はシフトキーを押した時の動作処理の実装漏れ&バグがありましたので、修正して2016-05-14版として更新しました。

 

課題と今後の作業

これで、12個のキーの割り当てと動作ができるようになったのですが、いろいろ課題、というか疑問なところもあります。まとめておきます。

  • キーボード種類認識
    じぶんキーボードを初めてMacにつなぐと、キーボード種類の認識処理が始まります。その際、「シフトキーの隣のキーを押してください」っていう感じで、かなり無理ゲーの質問があります。これはESCキーを押してキャンセルすればいいのですが、この場合、標準的なキーボードと認識されている可能性があるのかな、って思ってます。その場合、標準キーボードで使えるキーの種類が限られていると、設定できるキーの種類が限られますので、キーボード種類認識の調査をしてみようと思います。
  • 設定アプリで現在の設定値を表示できていない
    キー設定時、今の設定値が表示されると分かりやすくなると思いますが、設定値の取得方法どうしようか悩んでいます。キーボードに今の設定値を返すコマンドを送って、キーボードから設定値を返してもらえばいいのですが、この返してもらう処理が、Macから見るとキー入力になるんですよね。ということは、プログラムではNSView系のオブジェクトでキーイベントを拾えば実現できるのかな、って思ってますが、まだ試してないです。これも検討してみたいと思います。
  • 設定するキーの値を直感的に入力したい
    現在、キーの割り当て設定は、設定するキーの値の種類をポップアップメニューから選択するようにしています。ただ、直接キーの組み合わせを入力できるようにしたいので、これもどうすればよいのか検討してみます。これもNSView系の
    オブジェクトでキーイベントを拾えばできるんですよね。。。
  • 複数の文字を登録したい
    現在は各スイッチ1文字の登録という制限を設けています。ただ、PIC18F14K50は256バイトのEEPROMを持っていますので、複数文字の割り当て、保存ができるはずです。ということで、複数文字列の登録ができるようにしたいですが、、、これも設定アプリでどのような入力処理をすればいいのか、まだよくわかっていません。

ということで、とりあえず1文字版はできたものの、もうちょっと改良が必要そうですので、引き続き作業進めてみます。ただ、そろそろPICマイコン入門とEAGLE入門の記事を更新したほうがいいので、その作業と並行して行う予定です。

あと、プリント基板ですが、試作で何枚か余分にありますので、もし「欲しい!」という方がいらっしゃいましたらご連絡いただければと思います。無償で差し上げます。

« »