USBトラックポイントキーボードを改造して、マイクロスイッチを使ったミニキーボードを作成

# USBトラックポイントキーボードを改造して、マイクロスイッチを使ったミニキーボードを作成

![写真](https://qiita-image-store.s3.amazonaws.com/0/36390/58bee6dd-f98a-439a-0a7e-cca94ba6e551.jpeg)

## 背景・目的
* タッチタイプのできるキーボードを持った、
  シャツのポケットに入るUMPCの新製品がなかなか出ないので、
  スティックPCやGOLE1と組み合わせて使うこと考えて作成。
  (Viliv N5のバッテリが持たなくなってきたので乗り換えたい)
* GPD Winはかなり良いが、キーボードがタッチタイプできないので。

## 要件
* 持ち歩きたいのでなるべく小さいものが欲しい。
* シャツのポケットにも入れたいので奥行き10cm以下にしたい。
* ポインティングデバイスも欲しい。
* Bluetoothキーボードは、時々切断されていらいらさせられるのでUSBキーボードで。

## 改造元
[レノボ ThinkPad トラックポイント・キーボード - 英語 0B47190](http://shopap.lenovo.com/jp/itemdetails/0B47190/460/60AC6A0372B14F5BA7B12F1FF88E33C7)

### 解析
#### ピン
* 印刷: R1 R7 R6 S9 R4 R5 S0 R2 R3 S5 S1 R0 S2 S4 S7 S8 S6 S3 S12 S13 S14 S11 S10 S15 M0 ML MM MR
* M0 GND
* ML,MM,MR 3.3V pull-up クリックボタン
* R0-7 5V pull-up

#### キーマトリクス
キーマトリクスを調べる際に使ったmbed LPC1768用コード: [KeyMatrixAnalyzer](https://developer.mbed.org/users/deton/code/KeyMatrixAnalyzer/)

<table><tr><th></th><th>S0</th><th>S1</th><th>S2</th><th>S3</th><th>S4</th><th>S5</th><th>S6</th><th>S7</th><th>S8</th><th>S9</th><th>S10</th><th>S11</th><th>S12</th><th>S13</th><th>S14</th><th>S15</th></tr>
<tr><th>R0</th><td>esc</td><td>f4</td><td></td><td></td><td>g</td><td>h</td><td>f6</td><td></td><td>'</td><td></td><td>f5</td><td></td><td>alt</td><td></td><td>up</td><td></td></tr>
<tr><th>R1</th><td>tab</td><td>f3</td><td>caps</td><td></td><td>t</td><td>y</td><td>]</td><td>f7</td><td>[</td><td>shift</td><td>bs</td><td></td><td></td><td>win</td><td></td><td></td></tr>
<tr><th>R2</th><td>q</td><td>e</td><td>w</td><td></td><td>r</td><td>u</td><td>i</td><td>o</td><td>p</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>R3</th><td>~</td><td>f2</td><td>f1</td><td>ctrl</td><td>5</td><td>6</td><td>=</td><td>f8</td><td>-</td><td></td><td>f9</td><td>home</td><td></td><td></td><td></td><td>del</td></tr>
<tr><th>R4</th><td>a</td><td>d</td><td>s</td><td></td><td>f</td><td>j</td><td>k</td><td>l</td><td>;</td><td></td><td>\</td><td></td><td></td><td></td><td>fn</td><td>prtsc</td></tr>
<tr><th>R5</th><td>1</td><td>3</td><td>2</td><td></td><td>4</td><td>7</td><td>8</td><td>9</td><td>0</td><td></td><td>f10</td><td>f11</td><td></td><td>f12</td><td>end</td><td>ins</td></tr>
<tr><th>R6</th><td>z</td><td>c</td><td>x</td><td>rctrl</td><td>v</td><td>m</td><td>,</td><td>.</td><td></td><td>rshift</td><td>enter</td><td></td><td></td><td></td><td></td><td>pgup</td></tr>
<tr><th>R7</th><td></td><td></td><td></td><td></td><td>b</td><td>n</td><td></td><td></td><td>/</td><td></td><td>sp</td><td>down</td><td>ralt</td><td>right</td><td>left</td><td>pgdn</td></tr>
</table>

### ミニキーボードの作成
#### 配列

<table>
<tr><td>Esc</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>0</td><td>-</td><td>\</td></tr>
<tr><td>Tab</td><td>q</td><td>w</td><td>e</td><td>r</td><td>t</td><td>y</td><td>u</td><td>i</td><td>o</td><td>p</td><td>=</td><td>BS</td></tr>
<tr><td>`</td><td>a</td><td>s</td><td>d</td><td>f</td><td>g</td><td>h</td><td>j</td><td>k</td><td>l</td><td>;</td><td>'</td><td>[</td></tr>
<tr><td></td><td>z</td><td>x</td><td>c</td><td>v</td><td>b</td><td>n</td><td>m</td><td>,</td><td>.</td><td>/</td><td>]</td><td>↑</td></tr>
<tr><td></td><td></td><td>Win</td><td>Alt</td><td>Ctrl</td><td>Shift</td><td>Shift</td><td>Space</td><td>Enter</td><td>BS</td><td>←</td><td>↓</td><td>→</td></tr>
</table>

この配列情報と、[配線情報](https://gist.github.com/deton/bc2ebbbba76a55709276165fb3ca5333)をもとに配線・はんだ付け。

* サイズ: 横220mm(周辺除去時175mm)、縦86mm(周辺除去時79mm)、厚さ18mm(表11mm,裏6mm,基板厚さ1mm)
* 重さ: 100g
* キーピッチは、横方向が13mm、縦方向が7.5mm。キーストロークは1mm程度

#### 作成中や使ってみて思ったこと
* キーボードサイズを小さくするため(千鳥格子でなく)格子配置にしたが、
  nを押すつもりでmを押してたりすることあり。慣れればなんとかなりそう。
* 右端は押しにくい。
* 右端よりも上にキーを増やした方が押しやすそう。
* 最初、BSは右端に配置していたが、押しにくいので、←の左にも配置。
* レイアウト変更は配線変更(要はんだ付け)。ブレッドボードみたいに簡単にしたい。
  またはファームウェア変更だけで。
* Fnキーとの組み合わせでHome/End等を入力できるようにしたいが、
  既存キーボード改造だと不可。
* ピッチ変換基板の使い方は裏表逆にすべきだった。
  ケーブルの付け外しが面倒。ピン番号が裏表で違うので間違いやすいので。
* マイクロスイッチを隙間無しにユニバーサル基板に横に並べると、
  少しサイズが大きいため、浮き上がる。
* マイクロスイッチのレバーにひっかかって速く打てない場合あり。
* マイクロスイッチのレバーを外してクリアファイルをかぶせて使ってみた感じでは、
  人差指は問題ないが、小指では少し押す際に力が必要になって、いまいち。

#### Known Issue
* マイコン基板は仮どめ状態
* ユニバーサル基板の周りは現状残したまま。
  スティックPCや[6型HDMI LCD](https://www.donya.jp/item/73916.html)と
  組み合わせて、UMPC自作したい気もあるので、
  LCDとつなげることもできるように。
* 裏側はカバーを付ける必要あり

#### 部品
* [レノボ・ジャパン ThinkPad トラックポイント・キーボード - 英語 0B47190](https://www.amazon.co.jp/dp/B00DLK4GN8)
* マイクロスイッチ D2F-01FL: [マルツ](http://www.marutsu.co.jp/pc/i/54429/)、[千石電商](http://sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4HNP)
* [FFCコネクタ 1.0/30P CN-FFC(1.0)30PD](http://www.aitendo.com/product/967) aitendo
* [ピッチ変換基板 1.0/30P P-CN(0510)30P](http://www.aitendo.com/product/12078) aitendo
* [FFCケーブル(1.0/28P)](http://www.aitendo.com/product/9403)
  aitendo店頭には長すぎる30cmのものしか見あたらなかったので、
  1.0/15P 11cmを2本使用(端の1PIN分をカッターで切って)。
* ユニバーサル基板10cm*22cm。紙フェノール。千石電商
* M2ネジとナット 3セット 西川電子部品。
  トラックポイント固定用。M3だと入らない。M2.6なら入る。

![裏側写真](https://qiita-image-store.s3.amazonaws.com/0/36390/b9da1f03-80b9-b5ea-d47f-5c4b78eab795.jpeg)

#### 参考:候補だった部品
* [プッシュスイッチ62T-14](http://www.aitendo.com/product/14190)
  キーピッチ8mmだと狭い。11mmなら行けそう。
  D2F-01FLに比べると固いのであまり速く打てなさそう。
  スイッチキャップは、とりあえず[PLSA44CP](http://www.aitendo.com/product/7071)

![62T-14版写真](https://qiita-image-store.s3.amazonaws.com/0/36390/61cf3b7d-97d7-3f11-2b18-833829cac194.jpeg)

* その他のキー候補

![キー候補](https://qiita-image-store.s3.amazonaws.com/0/36390/8cd07c28-ef04-12b1-18fc-fbb1dcb9f9fe.jpeg)

1. [プッシュスイッチ62T-14](http://www.aitendo.com/product/14190)、[キャップ](http://www.aitendo.com/product/7071)
2. [キーボードスイッチKPT-3PY](http://www.aitendo.com/product/12082)。ストロークが深いので持ち歩き用キーボードには使いにくいかも。
3. [プッシュスイッチ](http://www.aitendo.com/product/4199)、[キャップ](http://www.aitendo.com/product/7074)。キーピッチ10mm。8番より重い
4. キースイッチ、キーピッチ15mmのキャップ。軸は十字。山長通商
5. [プッシュスイッチ](http://sengoku.co.jp/mod/sgk_cart/detail.php?code=8A7V-L5JV)。キーピッチ10mm。6番のタクトスイッチよりも重い。
6. [タクトスイッチ](http://sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-08BK)、[キートップ](http://sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-0FJE)。キーピッチ13mm。7番よりも気持ち固い。小指で打つのは少し重い。
7. [アルプス電気 タクトスイッチ AKC-8S](http://monta-musen.com/shop/products/detail.php?product_id=2060)。
  キーピッチ13mm。
  もう少し軽く打てる方がいいが、小指で打つ時もまあ使えなくもない。
  (KC-901と同じ?)
8. [フジソク TP-2 7.5mm角](http://monta-musen.com/shop/products/detail.php?product_id=383)、[フジソク TP-2 10mm角](http://monta-musen.com/shop/products/detail.php?product_id=384)。キーピッチ10mm、13mm。重くて小指で打つには少しつらい。

## 副産物:フルキーボード合体用USB小型トラックボール
![小型トラックボール写真](https://qiita-image-store.s3.amazonaws.com/0/36390/fdf3a2f8-0996-2305-9347-45f43af1ee75.jpeg)

Realforce91Uのひらがなキーを外すとちょうど収まる。
ホームポジションから手を動かさずにマウスカーソルを移動可能。

当初は、ミニキーボードをファームウェアから自作するつもりだったので、
ポインティングデバイスとして購入した小型トラックボールの流用。

ほとんど使ってない。加速処理を作った方がいいかも。
またはホイールスクロール機能の方が使うかも。

### 部品
* [SparkFun Blackberry Trackballer Breakout](https://www.switch-science.com/catalog/2276/)
* [A-Star 32U4 Micro](https://www.switch-science.com/catalog/1748/)
* マイクロスイッチ D2F-01FL: [マルツ](http://www.marutsu.co.jp/pc/i/54429/)、[千石電商](http://sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4HNP)
* [ソースプログラム](https://gist.github.com/deton/f657022a3cb6c6b336f604d61a1b25a5)

## 参考:改造元キーボードの他の候補
* [サンワサプライ タッチパッド付キーボード SKB-TP01SVN](https://www.sanwa.co.jp/product/syohin.asp?code=SKB-TP01SVN):
  タッチパッドが少し大きすぎて場所を取るので見送り。
* [MINI Keyboard Pro](https://www.amazon.co.jp/dp/B00K1XW0RW)

## 参考リンク
### USBキーボードをファームウェアから自作する話
* [Atmel AVR ATmega32U4 で Matias Half Keyboard っぽいのを作った](http://woremacx.com/2015/08/24/avr-half-keyboard/)。
  [tmk_keyboard](https://github.com/tmk/tmk_keyboard)ベース。
* [ArduinoでUSB接続の分割キーボードを作ってみた話](http://hrhg.hatenablog.com/entry/2017/02/06/053318)
* [Arduino Micro を使って、USB 小型 キーボードを自作](http://kato-h.cocolog-nifty.com/khweblog/2016/02/arduino-micro-u.html)
* [USBキーボードの自作方法](http://m0115.web.fc2.com/main.html#USBKBD)、
  [USBキーボードコンストラクションセット(ピンヘッダ付) (KBDCSET1 Plus)](http://m0115.thebase.in/items/414451)。
  PIC18F4550使用
* [『わかるマイコン電子工作 USB機器の製作 「EZ-USB」と「AKI-H8」で作るオリジナルUSBデバイス』](http://nicotak.com/usb/)。
  EZ-USB FX2LP使用。
 * http://optimize.ath.cx/FX2_USB/
 * https://strawberry-linux.com/catalog/items?code=50011
 * https://www.amazon.co.jp/dp/B00W8YUB6Y

### その他リンク
* [エスリル ニューキーボード − NISSE のファームウェア](http://www.esrille.com/keyboard/ja-jp/faq.html#q-firmware-customize)
* [キーボードコントローラ チップ HT82K629A](http://www.aitendo.com/product/12116)