QMKキーボードからの無線接続(BT-500限定)

かなり昔に、[Handheld Scientific BT-500 Bluetooth Adapter](https://qiita.com/chesscommands/items/247fd4c1bb3311a47c77#%E5%88%A5%E8%A3%85%E7%BD%AE%E3%81%A7%E7%84%A1%E7%B7%9A%E6%8E%A5%E7%B6%9A)を購入した。
今回、Planckに接続して使ったのだが、挙動がおかしく、まともに動かなかったため、それをここに記録する。

# 経緯
小さいキーボードを使う理由は、ホームポジションから手を極力動かす必要がないからと言うのがある。
それとは別に、普段の持ち運びに便利だろうと考えたからだ。
如何せん、HHKBは小さい割に大きいため、持ち運びがたい(何が言いたいのやら)。
何より、優先接続ではノートパソコンなどへの接続に難儀し、取り回しが悪い。
と言うことで、無線接続ができるアダプタを購入した。

# 小さいキーボードとは。
当然`Planck`に決まっている。

# 接続機器
上記通り。

# 接続ソフト
QMKがキーボードに埋め込まれており、今回のアダプタを連結して、パソコンなどに接続する。
接続形式は、ご存じ[Bluetooth](https://www.bluetooth.com "乱立する無線通信規格を統合したいための青歯王")に決まっている。
バージョンは4.0だ。

## アダプタのバージョン
アダプタにボタンが付いており、それを2秒以上押し続けることで、テキストエディタにバージョンを記載する機能がある。

```text:hoge.txt
Bluetooth Adapter Firmware v5.2.1
Copyright (C) 2019 Handheld Scientific, Inc.
Type help or ?
L1>
```

どのバージョンが最新なのか分からないが、今年購入したアダプタなので、きっと最新化されているはず。

## プロファイル不明
今回はキーキャップの話ではない。
通信規格の話だ。
マウスやキーボード接続ができることから`HID(Human Interface Device Profile)`を使っていると思うのだが、他のは？
なぜに説明がないのだろう。




















# アダプタの機能
複数の機能がある。
キーボードやマウスを使うためだけに作られたアダプタだというのが分かるほど多機能だ。

## キーマッピング
複数の機能のうちの一つに、キーマッピングがある。
これは、キーボードのキーを他のキーに変更することができるというもの。
キーボードやOSの設定を変更することなく、このアダプタを使っているだけで、`CapsLock`キーを`Ctrl`キーに変更できると言うことだろう。

未検証だけど。

## マッピング
全く理解できないのだが、Qwerty配列をdvorak配列やcolemak配列に変更できるそうだ。


## マクロ
これもぶっ飛んだ機能の一つで、設定次第で、一つのキー押下から文章入力に発展させられることだろう。

## 定期的な実行
定期的にマウスやキーボードを動かしたことにできるようだ。
誰もいないのに動かす・・・。

Minecraftゲームのサーバ版では、動いていない状態が続いた場合、ログアウトするとかしないとか・・・。
これを使えば、解消する。放置して、アイテムがわき放題になるのだろう。


























# QMK
ようやく本題。

## QMKでの[Bluetooth接続](https://github.com/qmk/qmk_firmware/blob/ba05f9667b9e33c49249fd456f11e652cbde574b/docs/feature_bluetooth.md)
全く今回と無関係になる。
ちなみに、`RN-42 HID`もしくは`Bluefruit EZ`のマイコンのみ対応しているそうだ。しかし、後者は製造終了品とのこと。

## Planckキーボードのrules.mk
ファイルを確認したとき、下記の設定が目に入る。

```qmk:rules.mk
BLUETOOTH_ENABLE = no
```

この記述の後ろにコメントがある。
`Adafruit EZ-Key HIDでBluetoothを有効にする`と・・・。

要は、今回のアダプタの接続に無関係だった。
そのコメントを確認せずに、Bluetooth接続できるため、不思議だった。

## ファームウェア更新について
Bluetooth接続でのQMKファームウェア更新は、当然不可能になる。
そのため、更新する場合はUSB接続する必要がある。

































# QMKキーボードからアダプタを使った接続方法
ここが大本命の話題。

## Planckデフォルトの挙動
普通に接続した場合、理解できないキーマッピングになっており、全くもって使い物にならなかった。
AキーやGUIキーがまったく動かない。
予期していない場所のキーが普通の文字キーだが、そもそもそこのキーにその文字を設定した記憶がないのだが・・・と言う状態になった。

## 原因
[Nキーロールオーバー](83f1552733870914e097#その他その2)の設定でキーボードの挙動がおかしくなっていた。
そのため、以下の設定を施した。

```qmk:rules.mk
NKRO_ENABLE = no
```

もしくは、コメントアウトで、使えないようにする。

### 解決
あっさり使えるようになった。
なるほどぉ〜・・・。

QMKの奥が深いのか、私の知識が浅いのか・・・。

[alt](https://qiita.com/alt)さんから誤字の修正を送ってもらったこともあり、私の知識が・・・ごにょごにょ。。。















# Bluetooth接続への危険性
改めて製品説明を確認した。

## Pinコードなし。
接続機器がお互い認識していない状態で接続できると言うこと？
かなり危ないように思うのだが・・・。

### 誰でも接続できる脆弱性
[フィールドデザイン株式会社](https://fielddesign.jp/technology/ble/blespec_pairing/)が販売している機器限定なのかもしれないが、ペアリングなしの接続方法では、乗っ取られる可能性があるとのこと。

> 1．ペリフェラル側をペアリングなしで動作させたため、他のデバイスが勝手に接続してきて、本来接続すべきデバイスが接続できない。

この対策は、ペアリング付きの機器を使うしかないそうだ。

### 安物限定かもしれないが、キーボードに虚弱性あり
~~[TechTarget Japan](https://techtarget.itmedia.co.jp/tt/news/1608/05/news05.html)~~では、・・・。

> 入力内容が暗号化されない安価なワイヤレスキーボードには、「KeySniffer」という新たな脆弱（ぜいじゃく）性が存在している可能性があり、攻撃者にキーストロークを傍受されたり、キーストローク挿入攻撃を仕掛けられたりする恐れがあるという。

会員登録必須だったため、これ以上の情報がなく、不確かなので、言及しないことにする。
[TIME&SPACE](https://time-space.kddi.com/ict-keywords/kaisetsu/20161104/)では、似た記事があった。

### OSに問題がある？
[現役の情報セキュリティ担当者が語る 情報セキュリティ対策の事実](https://vomov.net/?p=2425)では、OSをアップデートすることで対応できるように感じるのだが・・・。

> Bluetooth と2.4GHzワイヤレスともに脆弱性があることがご理解いただけたと思いますが、現実問題としてはBluetoothのほうが攻撃が難しく、OSのアップデートで対策できるのでリスクコントロールはしやすいと思います。

Bluetooth接続元のキーボードのキー入力を乗っ取られるのだからキーボード側に問題があると思うのだが・・・。
全く説明が理解できない。
どうしよう。。。

# 結論
個人的に危なくて使えない。
ただ、文字入力するだけなので、問題ないように思うのも確か・・・。
パスワードなどに使わなければ問題ないのかな。

そもそも説明書に、「安全性が重要になる場合は、Bluetooth接続をするな」とある。
なんじゃそりゃ。

以上。