Remap対応のNewton keyboadのUSBコンバーターを作成

# Newton keyboard

Newton keyboardは、Newton MessagePad用の小さなキーボードです。
絶妙なデザインの製品。インターフェースは、特殊なのでそのままでは、PCにつながりません。
USBコンバータを自作する人とかもいます。
Arduinoで変換するのを見つけたのですが、キーリピートができないとかカスタマイズを自分でいろいろコードを書かないといけないというのがありました。でも、最近、[TMK keyboard](https://github.com/tmk/tmk_keyboard)に対応している[TMK Keyboard for Apple Newton](https://github.com/themav/tmk-keyboard-newton)のを見つけました。これなら、[QMK](https://docs.qmk.fm/#/)対応もできるのではないか、そうすれば[Remap](https://remap-keys.app/)に対応できると便利になると思い、[QMK](https://docs.qmk.fm/#/)対応にチャレンジです。

## 参考にしたサイト

https://sharktastica.co.uk/articles/apple_model_m

https://jimandnoreen.com/?p=259

https://github.com/themav/tmk-keyboard-newton

https://makezine.jp/blog/2013/05/reviving_favorite_keyboard.html

https://www.caniusevia.com/docs/configuring_qmk

## 要約

ここにソースコード、Newton keyboard USBコンバータのソース、ファームウェア、Remap用のjsonファイルを置きました

https://github.com/cheer4u-code/qmk_firmware/releases/tag/newton_usb-0.0.1

# 必要なもの

* Apple Newton keyboard (X0044)
* Pro micro 5V/16MHz
* PHR-6 コネクターハウジングと、Pro microとつなぐワイヤー
* Pro microとPCをつなぐUSB ケーブル
* はんだ付け版に必要なだ道具や、ワイヤーをストリップするための道具など

QMKをコンパイルする環境も必要ですが、ここでは省略させてください。
PHR-6 コネクターハウジングは、[aitendo](https://www.aitendo.com/)で買いました。

# ファイル構成

最低限必要なファイルは、QMKのファイルとremapにキーボード情報を渡すjsonファイルです。

## QMKのNewton keyboadのUSBコンバーター

QMKに必要な最低限のファイルは以下になります。それ以外に自分ようにカスタマイズしたファイルとかあります。

    newton_usb
    ├── config.h
    ├── info.json
    ├── keymaps
    │   ├── default
    │   │   └── keymap.c
    │   └── via
    │       ├── config.h
    │       ├── keymap.c
    │       └── rules.mk
    ├── matrix.c
    ├── readme.md
    └── rules.mk

* config.h: マトリックスのサイズを定義しています
* info.json: キーのマトリックスを定義しています
* matrix.c: Newton keyboardから送られてくるキーコードをマトリックスに変換しています
* readme.md: これはドキュメント
* rules.mk: コンパイルの定義ファイルです
* keymaps/default/keymap.c: マトリックスに対応するキーを定義しています
* keymaps/via: via/remapに対応するための定義です。keymaps/defaultをベースにvia/remapに対応に必要な設定を入れています

## remap用のjsonファイル

    newton_usb.json

* newton_usb.json: viaやremapで使うファイルです。キーボードのマトリックスとレイアウトが書かれています

# コンパイル

コンパイルするにはいろいろ準備が必要ですが、ここでは省略させてください。
remapに対応するためviaのキーマップを利用します。via用のコンパイルは以下のような感じです。

    qmk compile -kb converter/newton_usb -km via

または

    make converter/newton_usb:via

# できたファームウェアの書き込み

[Pro Micro Web Updater](https://sekigon-gonnoc.github.io/promicro-web-updater/index.html)をありがたく使わさせていただいています

# ハード構成

私は、Newton keyboardの内部にPro microを入れました。その時の情報です

|Newton keyboard PCB/PHR-6 | Pro micro board|
|--------------------------|----------------|
|6 GND                     | GND            |
|5 5V                      | VCC            |
|3 DATA                    | RXI            |


    Newton keyboard PCB
    -------.
           |                    Pro micro board
           |
     PHR-6 connector            .---|USB|---.
    .------|                    |           |
    |6 GND +-----------------------------------.
    |5 5V  +-----------------------------------|-.
    |4     |                    |           |  | |
    |3 DATA+--------------------+RXI     GND+-'  |
    |2     |                    |           |    |
    |1     |                    |        VCC+---'
    `------|                    |           |
           |                    |           |
           |                    |           |
    FPC connector               |           |
    .------|                    |           |
    |      |                    `-----------'

VCCとか配線が間違っていないか確認します。間違っていると壊れてしまいます。念には念を入れて確認してください。

# PCとの接続 

PCにつなぐとUSBキーボードとして認識されキー入力ができるようになります

# Remapによるキーマップの変更

[Remap](https://remap-keys.app/)にアクセスします

「CUSTOMIZE YOUR KEYBOARD]をクリックして進むと「Connect your keyboard supporting the VIA feature to this PC.」と表示されます。
今回、USB対応Newton keyboardを接続します。
「+KEYBOARD」をクリックして進めてください。

ここも省略させてください。

# さいごに

動いたのがうれしくて、丁寧に記事が書けてなくて申し訳ないです。