Atmel AVR ATmega32U4 で Matias Half Keyboard っぽいのを作った

背景

タブレットの裏にキーボード貼ったら iikanji に使えるんじゃねと思い、部品集めて作ってみました。

Matias Half Keyboard ってのが過去に出てたことはあるけど、すでに本家サイトでしか買えるところがなく、値段がかなり跳ね上がっておりました。

Matias Half Keyboard は左手で使う用に作られています。普通に文字を打つと、左手でタイプした文字が入力されます。 一方で、スペースキーを押している間だけ、右手領域の文字をタイプしたことにできるキーボードです。 詳しくは 半分サイズのキーボード「Matias Half-Keyboard」を読むと書いてあります。

それを作りたかったので、それっぽいものを作ってみました。

部品

使った部品は以下の通り。

ハードウェアとソフトウェア

ソフトウエアは以下の通り。

tmk_keyboard が、既存のキーボードの基板を AVR で置き換えてキーバインドをこねくりまわすことに特化したソフトウェアで、データの取り方とかマトリックスの配列書くだけで、Fn とかの処理まで全部やってくれて、とても素敵でした。

ハードウェア的には、AVR 内蔵のプルアップ抵抗使ったので、がんばって電線を半田付けしただけのカンタン工作です。

キーボードマトリクスの ROW として PD0-1,PD4-7、COL として PB0-5 にキーボードの左半分を繋ぎました。 PD2-3 は、RXD TXD なので、デバッグ用として残してあります。

ROW は行の選択、COL は選択された行で押されているボタンの検出に使います。

まず、COL をプルアップ付き入力にしておきます。 つぎに、ROW を全部ハイインピーダンスにして切り離しておきます。

読み取りたい ROW だけを L にするループを回します。 それぞれの ROW に対して COL の状態を読み取りマトリックスに反映します。 COL は、プルアップされているので、1 になってるビットは押されてない、0 になってるビットは押されてるという風な流れです。

このような感じでマトリックスを作っておけば、あとは tmk_keyboard が色々面倒いところをやってくれるのです。

使い心地

タブレットの裏にキーボード貼って頑張って使おうとすると、腕がつりそうになることがわかりました。

Enter キーの割り当てがよくないところにあるなーとか思っておりますが、完成初日以来二度と使っておりません。。。

最後に

満足感は半端ないので、ヨカッタ。