じぶんキーボードのキー割り当てを変更するMacのアプリを作りましたので公開しています。
この記事の内容
2013年に自由にカスタマイズできる足で操作するフットキーボードを製作したのですが、問い合わせをいただく内容を見ると、必ずしも足で操作するだけではなく、自分用にカスタマイズできるキーボードが欲しい、という方が何人かいらっしゃいました。
ということで、先日からじぶんキーボードとしてプリント基板も作っていたのですが、Macからキー割り当てを変更するアプリも作りましたので、一度このタイミングで今までの作業をまとめておこうと思います。
じぶんキーボードのスペックと使い方
今回は制御用マイコンとしてPIC18F14K50を使用し、スイッチ(キー)の接続を簡単にできるようにI/Oピン1本にスイッチを1個つなげるようにしました。PIC18F14K50はUSBデバイスにした場合はI/Oピンは13本取れますので、スイッチを12個と、キー割り当てを変えるためにシフトキーを1個つなげる仕様にしました。
使い方としては、制御ボードに自分の好きなスイッチ(キー)をつなげます。つなげるスイッチは、電気的にOFF/ONができればなんでもOKです。こんな感じで使えます。
ハードウエアまとめ
ハードウエアですが、ノイズ対策をしないものだったり、きちんとしたものを設計してみましたが、普通に使うのであれば、Standard版でいいと思いますので、今後の作業は基本Standard版で進めたいと思います。
以下、Standard版の回路図です。
EAGLEの回路図とボード図もアップしておきます。ウィルスチェック済みです。
https://github.com/tool-lab/foot-keyboard-standard
ファームウエアまとめ
PIC18F14K50用のプログラムは、Microchip Technology社のサンプルアプリをベースにしています。サンプルアプリは、Microchip Libraries for Application Vesion 2015-08-15に含まれているものです。こちらもMPLABXのプロジェクトファイルをアップしておきます。ウィルスチェック済みです。
プログラムの変更箇所には以下のコメントを入れてありますが、不明点がありましたらお問い合わせフォームからお問い合わせ頂ければと思います。
https://github.com/tool-lab/jibun-keyboard-firmware
設定アプリ(Mac用)まとめ
じぶんキーボードをMacに接続した状態で、Macからキーの割り当てを変更できるよう、設定アプリを作りました。今後Swiftに移行していくと思いますので、Swiftで作ろうと思いましたが、IOKitのUSB HIDにアクセスする方法がわからなかったので、Objective-Cで書いてあります。以前作成したフットキーボード向けのソースをベースにしていますので、アプリ名は「JibunKeyboardSetter」ですが、ソースコード中、FootKeyboardという名称のままにしてあります。あと、デザインセンスが全くないので、とりあえずデザインみたいな感じのアイコンになっています。
Xcodeのプロジェクトをアップしておきます。ウィルスチェック済みです。
2016年5月14日追記
なお、以前公開していました2016-05-07版はシフトキーを押した時の動作処理の実装漏れ&バグがありましたので、修正して2016-05-14版として更新しました。
https://github.com/tool-lab/jibun-keyboard-setting-app
課題と今後の作業
これで、12個のキーの割り当てと動作ができるようになったのですが、いろいろ課題、というか疑問なところもあります。まとめておきます。
- キーボード種類認識
じぶんキーボードを初めてMacにつなぐと、キーボード種類の認識処理が始まります。その際、「シフトキーの隣のキーを押してください」っていう感じで、かなり無理ゲーの質問があります。これはESCキーを押してキャンセルすればいいのですが、この場合、標準的なキーボードと認識されている可能性があるのかな、って思ってます。その場合、標準キーボードで使えるキーの種類が限られていると、設定できるキーの種類が限られますので、キーボード種類認識の調査をしてみようと思います。 - 設定アプリで現在の設定値を表示できていない
キー設定時、今の設定値が表示されると分かりやすくなると思いますが、設定値の取得方法どうしようか悩んでいます。キーボードに今の設定値を返すコマンドを送って、キーボードから設定値を返してもらえばいいのですが、この返してもらう処理が、Macから見るとキー入力になるんですよね。ということは、プログラムではNSView系のオブジェクトでキーイベントを拾えば実現できるのかな、って思ってますが、まだ試してないです。これも検討してみたいと思います。 - 設定するキーの値を直感的に入力したい
現在、キーの割り当て設定は、設定するキーの値の種類をポップアップメニューから選択するようにしています。ただ、直接キーの組み合わせを入力できるようにしたいので、これもどうすればよいのか検討してみます。これもNSView系の
オブジェクトでキーイベントを拾えばできるんですよね。。。 - 複数の文字を登録したい
現在は各スイッチ1文字の登録という制限を設けています。ただ、PIC18F14K50は256バイトのEEPROMを持っていますので、複数文字の割り当て、保存ができるはずです。ということで、複数文字列の登録ができるようにしたいですが、、、これも設定アプリでどのような入力処理をすればいいのか、まだよくわかっていません。
更新履歴
日付 | 内容 |
---|---|
2016.5.8 | 新規投稿 |
2019.3.24 | リンクをhttpsに修正 ダウンロードファイルをgithubに引越し |