読者です 読者をやめる 読者になる 読者になる

PointCloud

ものづくりに関すること。3Dプリンター、レーザーカッター、3Dスキャナー、3DCAD、RaspberryPi、Arudionoとか。

ノートPCを自作する(27) キーボード

mac MCP23017 ノートPC RaspberryPi 自作 Make
ノートPC自作プロジェクト
RaspbeerryPiをメインにしてオリジナルのノートパソコンを自作しようとしている取り組みです。



以前に取り組んだキーボードの組み込みですが、プログラムの改良をおこないました。
以前の取り組みはこちら。もう1年半前のことになります。
ノートPCを自作する(6) キーボード
ノートPCを自作する(7) キーボード解析
ノートPCを自作する(8) キーボード

以前の取り組みの概要
・ibookG4のキーボードを引っぺがしてUSBキーボードとして使う。
・キーボードからは配線が出ているだけなのでどの配線がどのキーに接続されているのか解析する。
・USB化するにあたりArduino Leonardoを使用する。プログラムは自作する。
・入出力のI/Oが足りない分はI/Oエキスパンダ―MCP23017を使用する。

上記の取り組みで一応動くようにはなっていたのですが、キーボードの入力がいまいちレスポンス悪く通常使用に耐えられるレベルではありませんでした。主にプログラムの問題でした。
改善したい気持ちはありつつもずっとそのままになっていたのですが、ついに改めて取り組むチャンスが来ました。それは今年のMFT2016でPC8001キーボードをBluetooth化したものを展示していた方がいらっしゃって、なかなか操作感がよかったので後日そのプログラムについて問い合わせをしたところ快くソースを展開していただけたのです。

この度、このソースをベースにして自分のハードウェアに合うように改良を加えて通常使用に耐えるものを作ろうと、再チャレンジしたというわけです。
目指すはこんな感じ。
・通常使用に耐えられるだけの入力レスポンス
・1打で複数文字打たないようにする
・SHIFT押しで大文字と小文字に対応する。

MAC用のキーボードなので、BackSpaceキーがないとか、半角/全角キーがないとかコマンドボタンどうするとかいろいろありますが、そういった細かい使い勝手よりもまずはキーボードとして機能することを優先しました。

ざっくりフロー

頂戴したプログラムはきれいにループでまとめられていたので、すっきりしたプログラムになっていました。
私が元々作っていたプログラムは上記のようにループを使わずにベタで書いていたため、5倍ぐらいの長さのプログラムになっていたので、フローにすると大したことやっていないように見えますが、こういうプログラムを書ける人を尊敬。

このフロー通りに作るだけだと目的としている「通常使用に耐えるレスポンス」と「1打で複数文字を打たない」の両立が難しいのでカウンタを追加して1工夫。

キーを押したときに小文字入力になるように作っておくと、SHIFTキー+文字としたときにArduinoのライブラリが陰で勝手に大文字にしてくれます。ありがたいです。

ということで、無事に目的を果たすことができました。
上述したとおり細かいところで操作できないボタンや入力できない記号がありますが、それはおいおい。