NiZ Keyboard PLUM という静電容量無接点キーボード
(この写真のキー配列はデフォルトのものではなく、既にカスタマイズ済みです。mac 用のキーキャップが付属しており、HHKB を基準にできるだけキーキャップもあわせています)
3行で
- 信頼性のあるキーボードがほしいなら買わないほうが良い
- 打鍵感は十分に良い
- これにしかない魅力はある
NiZ というキーボード
https://www.nizkeyboard.com/ が公式っぽい。中華製の静電容量無接点キーボード (HHKBやRealforceなどと同じ分類)。
HHKB と比べると以下のような特徴がある
- 35g / 45g を選べる。35g モデルでも 10g 増やすバネで、特定のキー(ホームポジションとか)だけ荷重を増やせる
- HHKB は 45g キーストローク 4mm
- キー数のバリエーションが多い
- 完全にキーマップをカスタマイズ可能 (ファームウェアレベルで行う)
- Type-C コネクタ (mini-B よりも機械的に丈夫なコネクタ)
- Bluetooth 接続対応・バッテリー内蔵
- 価格は若干安い
価格が安いだけなら買うつもりはなかったけど、キーが HHKB よりも軽くて Bluetooth 接続が可能で、Type-C 接続な点で気になった。66キー(HHKBとほぼ同じ大きさ) 35g のモデルを買ってみた。スペック通りなら HHKB 信者を止めることになる。
初期設定とハマったところ
デフォルトだと「Office モード」というモードらしく、キーのリマップが効かないモードになっている。 Fn+M キーを同時に2秒押して Program モードというモードにしなくてはいけない。
専用アプリを使ってのキーカスタマイズはこのモードでしか適用されない。
キーが効きにくい……
試しうちしてすぐ気付いたが、左 Ctrl (というか位置的には Caps-Lock)、スペース、RET、Shift が叩くように入力しないと反応しない、または普通に使っていて入力をとりこぼすことがわかった。
https://www.nizkeyboard.com/2019/07/07/some-keys-doesnt-work-look-at-this/ 公式にこういうエントリがあるぐらいなので頻出問題みたい。手順では F2 F10 を押しながらキャリブレーションすると書いてあるけど、単に基準となるキーが変わるだけで、どのキーを押しながらでもキャリブレーションできる。自分の場合は左 Shift + スペースを軽く押しながらキャリブレーションすることで、気になる範囲の取りこぼしはなくなった気がする。
キーボードの信頼性
市販のキーボードは「普通に動く」けれど、それはもうそれだけですごいのだ、ということに気付く。キーボードの信頼性というのはそこで、普段意識するようなことはない。最低限ちゃんと思った通りに入力できなければならない。
NiZ は(自分の場合は)キャリブレーションなしには全く使いものにならないものだった。普通に考えたら初期不良だし、キーボードをキャリブレーションしたらなおるとか思いもしないだろう。そういう初期調整も含めての安価な値段だと思う。
NiZの良い点
良い点は冒頭でもほとんど記したけど
- 打鍵が軽い
- スコスコしたスムーズな打鍵感
- 打鍵音が静か (HHKB と比べると雲泥の差)
- カスタマイズ性
- Bluetooth
とかいろいろある。このキーボードにしかない特徴があるので、うまくキャリブレーションするか、あたり個体を掴めれば良い選択かもしれない。
とりあえず普段遣いできる感じのキャリブレーションはすることができたので、しばらく使ってみるつもり。
細かいメモ
USB デバイスとしては `ID 0483:512a STMicroelectronics 66EC-S ` で認識されている。STM32 っぽい……と言いたいところだけど、中華デバイスは STM32 互換の MCU に STM32 のツールで作ったファームウェアを書いていたりするので、これだけでは判断できない。
関連エントリー
- NiZ X87EC(S) 35g (2021) を買ってみた 66EC(S) Ble 35g を買ってから自宅では結構ずっとこれを使っていてそこそこ満足している。これも含めて HHKB 風配列のキーボー...
- HHKB を左右分割エルゴノミクスキーボードにする (OSX) 標題の通りですが HHKB を半分に割ってブチ壊すみたいな話ではないのでご安心ください。 HHKBを2台用意します。 HHKB 2台を横に並...
- 自作キーボードの製作 — コンセンプトとキーレイアウトおよび技術仕様編 500 Can't connect to lowreal.net:443 (certificate verify failed) まず思いつ...
- ErgoDox について調べた(買わないけど) ヤパチーでErgoDox を見て面白いなあと思ったので調べてみた。 ネットの記事だとErgoDoxって、「とにかく健康だ!! 筋肉だ!!!」...
- ErgoDox ではないナニか。オープンソースかつ Bluetooth 接続のキーボード ここ数ヶ月ぐらいキーボードを作っていた。そのためにいろいろ yak-shaving としかいいようがないことも多々していた。 いろいろ書くこ...
✖
JTAG/SWD 関係の用語
デバッグ機能の分類
- デバッグ制御インターフェイス : CPU制御を行う。ブレークポイントやプログラムカウンタの増加(実行)など
- トレース機能: 実行履歴を出力する機能。デバッガではいちいち実行を止めるため、実際の速度で動かしたときのタイミング問題などを検出するのは難しい。そこでトレース機能が必要になる。
デバッグ制御インターフェイス
- ICE: in-circuit emulator CPU の代わりに回路中のCPUをエミュレーションするもの。元々は専用の IC だったが、最近のMCUはオンチップエミュレータとなっている。
- JTAG デバッグ制御インターフェイス。元々はデバッグ用ではなく検査用。5線で通信する。各ピンの状態がわかる (バウンダリスキャン)、というのが本来の用途。
- JTAG エミュレータ: JTAG をデバッグ制御として、オンチップエミュレータを操作する形のICE
- SWD デバッグ制御インターフェイス 2線ですむ。ARM MCU はこれが主流。デバッグ専用で、検査ポートとしては使えない (バウンダリスキャンはできない)。プロトコルは32bit値のR/Wに特化している。
JTAG も SWD も CPU 内部のレジスタを読み書きすることで、CPU 側にある任意の機能を呼び出している。なので、デバッグプロトコルは JTAGとSWDの上に乗っており、CPU によって異る。
トレース機能
- ETM: Embedded Trace Macrocell 分岐のたびにPC情報を得ることでトレースする。
- SWV: Serial Wire Viewer PCをサンプリングすることでトレースする。(サンプリングなので抜けが発生しうる)
(高級な print デバッグを想像するとよい。が、自分は使ったことがないのでわからない)
ARM 関連
- CMSIS-DAP: Cortex Microcontroller Software Interface. Standard - CoreSight Debug Access Port . ARM が定義した USB と SWD/JTAG インターフェイスのプロトコル
- ARM CoreSight: ARM Core 内のデバッグ用コンポーネント
USB から CMSIS-DAP を使って JTAG/SWD を操作し、CPU 内部の CoreSight に接続する、という感じ。
USB デバッガ
- SEGGER J-Link: JTAG/SWD を USB 経由で扱うインターフェイス
- ST-Link: STM8/STM32 専用の JTAG/SWD を USB 経由で扱うインターフェイス
- LPC-Link2: CMSIS-DAPデバッガにしたり SEGGER J-Link にしたり Redlink にしたりできるボード。
このへんややこしいが、「SERGGER J-Link」はデバッガハードウェアの名称でもあり、USB 接続時のプロトコルでもある。
ST-Link も同様で、ST-Link2 ST-Link3 というデバッガハードウェアもあるし、USB 接続時のプロトコルでもある。
LPC-Link2 は USB 接続時のプロトコルとして SEGGER J-Link / CMSIS-DAP / Redlink (nxp の独自プロトコル) を切り替えられるボード。
結局どのプロトコルでも、同じCPUならできることは一緒。だが、ホスト側のドライバの関係でパフォーマンスに違いがでることがある。
関連エントリー
- Cortex-M の SWD/ITM を使った UART を使わない printf() デバッグ SWD (Serial Wire Debug) やっててさらにトレース(printfみたいなこと)も行いたいことは多い。別途 USART を...
- stm32f0x 書きこみ速度大会 NanoVNA (stm32f07) に対しての書きこみで、どの方法が早いのだろうか?と気になったので試した。対象は 95764bytes ...
- NanoVNA のリモート化 (Wi-Fi 中継) アンテナの調整をする場合、給電点 (測定点) と調整点は離れていることが多いなというコンテキストで、NanoVNA の Bluetooth ...
- STM32F103 で意図した出力がでないときのチェックリスト Alternate function の再配置(remap)の確認 AFIO_MAPR STM32CubeMX でペリフェラルのピン設定を確...
- root化しなくても Wi-Fi 経由での adb はできる Android Debug Bridge (adb) | Android Developers に従うだけ。 一旦 USB で接続して、...
✖
Comlink は iframe 間通信にも使える
https://github.com/GoogleChromeLabs/comlink
「Comlink makes WebWorkers enjoyable.」と書いてあるが、キモは postMessage の抽象化なので、iframe 間通信にも使用することができる。ただ、origin の取り扱いをする必要があるので、ラッパーが必要。といってもラッパーも Comlink.windowEndpoint() という形で Comlink 自身に用意されている。
iframe の親でも小でも、どちらでも Comlink.expose することができる (役割は反転できる)。ただ、その際に該当する window インスタンスが必要なので、iframe の親側では小フレームのロードを待たなければならない。
関連エントリー
- ブログシステムの HTML 生成を効率化 そろそろやることなくなったので minify などをやることにしました。 ただ、ブログシステムの出力の最後ほうでページごとに全体を mini...
- Gist に置いた JavaScript のベンチマークをとる デモ textContent innerText $().text() の比較ベンチ for of と単純な for の比較ベンチ ある要素...
- 現在の h2o.conf.yaml 今のこのサイトの h2o.conf.yaml です。HTTPS (443) のみを処理しています。HTTP (80) は nginx で受け...
- はてブ用ブックマークレット 現在の非表示ユーザの総数: javascript:(async()=>{alert((await(await fetch("http://b...
- Mojave で Android Emulator が起動しない emulator: Android emulator version 30.5.3.0 (build_id 7196367) (CL:N/A...
3秒でわかる Capacitor と Cordova の違い
実行コンテキストの違い
Cordova は file: で実行される。Capacitor は http: (Android) で実行される。
この違いは案外大きい。ESM (type="module" などでロードされる ECMAScript Modules) は application/javascript でなければ実行されないという厳格なルールがあるが、file:// ではすべてのファイルに mime-type が設定されないため、実行できない。回避する方法は結局のところ localhost にサーバを立てるぐらいしかない。この点だけでももう Cordova は厳しい。
アプリケーションの本体はどこに…
Cordova はビルド時に必要なソースコードを生成する。このため実際のビルドは必ず cordova コマンドを介す。
Capacitor はソースコードのスキャフォルドを最初に生成する。レポジトリには各プラットフォームの完全なプロジェクトが生成される。このため、実際のビルドは Android Studio や Xcode など、ネイティブな環境で行われる。
関連エントリー
- capacitor で Android 向けに minifyEnabled true Android では、アプリのサイズをできるだけ減らしたりするために、リリース前にアプリ全体のコードの最適化 (いわゆるツリーシェイキング)...
- cordova run android --device でエラー :processDebugResources FAILED FAILURE: Build failed with an exception....
- NanoVNA WebApp の Android アプリ化 Capacitor をつかって NanoVNA-Web-Client を Android アプリ化してみた。 https://play.go...
- Android SDK の各プラットフォームのビルドツールの一部を使いたいとき sdkmanager をダウンロードする Android Studio のダウンロードページから「コマンドラインツールのみ」を選んでダウンロ...
- Android O から広色域ディスプレイがサポートされる デベロッパープレビューのそのようなことが書いてあった。 Wide-gamut color for apps: Android develop...
八幡宮来宮神社
root化しなくても Wi-Fi 経由での adb はできる
Android Debug Bridge (adb) | Android Developers に従うだけ。
一旦 USB で接続して、デバイス側の adb を tcpip 経由に変更する
adb tcpip 5555
USB 接続を外して、adb connect [device ip address] を実行する
adb connect device_ip_address
細かい手順は公式の説明にちゃんと書いてある。これで手元の端末 (Huawei P20) ではうまくいった。
これで adb は WiFi 経由でデバイスを認識しているので、adb install なども WiFi 経由で可能になる。
Android Chrome の Wi-Fi 経由デバッグ
上記手順を踏んでいれば chrome://inspect を開くと該当デバイスの Chrome インスタンスも見えているはず。そのままデバッグできる。
なぜ WiFi 経由で adb したいか
Android をホストとして USB デバイスを接続していると、USB ポートは必ず埋まってしまう。もし USB で adb 接続しようと思うと大変煩雑になる
なんか接続が切れる
デバイス側のセキュリティ要件なのかわからないが、しばらく経過すると、勝手に USB デバッグのチェックが外れたりする。よくわかってない。
とりあえず wakelock をとったほうがいいのかも
関連エントリー
- Android と USB 接続したとき、どうあがいても一部のファイルを転送できない 症状としては ファイル転送 / Android Auto モードで USB 接続し Windows Explorer からコピーしたいデバイ...
- NanoVNA のリモート化 (Wi-Fi 中継) アンテナの調整をする場合、給電点 (測定点) と調整点は離れていることが多いなというコンテキストで、NanoVNA の Bluetooth ...
- JTAG/SWD 関係の用語 デバッグ機能の分類 デバッグ制御インターフェイス : CPU制御を行う。ブレークポイントやプログラムカウンタの増加(実行)など トレース機能...
- Mojave で Android Emulator が起動しない emulator: Android emulator version 30.5.3.0 (build_id 7196367) (CL:N/A...
- macOS の EOS Utility 「カメラとUSB接続できませんでした」 どうあがいても接続できなくて困った。 どうやらなんか Google Chrome が USB デバイスをかたっぱしからオープンする挙動をして...
GitHub Pages を GitHub Actions で PDF 化して releases にアップロード
GitHub Pages を GitHub Actions で PDF 化して releases にアップロードするというのをやってみた。
やりかた
- deploy された GitHub Pages を wkhtmltopdf で PDF 化
- ghr で PDF を releases にアップロード
が基本的なところ。GitHub Pages のデプロイは Actions よりも遥かに早く終わるので、厳密に同期をしていない (Actions で Jekyll を起動して HTML を生成するのが正攻法だけど、この方法はものすごく時間がかかってしまう)。
wkhtmltopdf は openlabs/docker-wkhtmltopdf という Docker イメージを利用した。ただし、このイメージには日本語フォントが入っていないので、ちょっと工夫する必要がある。具体的にはレンダリングしたい HTML 側で、明示的に Google Fonts などから Web Fonts としてロードしてやる必要がある。
ghr は go を入れるところからやってしまったが、たぶん ghr の releases からバイナリ落としてきて展開するほうが早いと思う。そのうち変更するかも。
実際の設定
name: document release
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.12
uses: actions/setup-go@v1
with:
version: 1.12
id: go
- name: Convert HTML to PDF
run: |
docker run \
-v ${{ github.workspace }}:/srv/jekyll -v ${{ github.workspace }}/_site:/srv/jekyll/_site \
openlabs/docker-wkhtmltopdf --print-media-type https://cho45.github.io/NanoVNA-manual/ /srv/jekyll/_site/NanoVNA-manual.pdf
- name: Upload to releases
env:
GO111MODULE: on
GOPATH: /home/runner/work/
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
go get -u github.com/tcnksm/ghr
$GOPATH/bin/ghr -u cho45 -r NanoVNA-manual -recreate -replace -n latest -b "latest" latest ${{ github.workspace }}/_site/NanoVNA-manual.pdf 関連エントリー
- S-A-A-2 (NanoVNA V2) を手に入れてみた NanoVNA V2 という名前で開発されているが、ややこしいので開発コードである S-A-A-2 (Simple Antenna Anal...
- NanoVNA を VSCode + ST-Link + OpenOCD でオンチップデバッグ PCB上にピンヘッダ(未実装)がある。 SWDIO SWCLK GND NRST VCC (使わない) SWD (Serial Wire D...
- RabbitMQ で MQTT over WebSocket ウェブページから JavaScript で MQTT ブローカーに送られてくるデータを取得したかったので、MQTT over WebSock...
- WSL2 で USB (usbipd-win) https://github.com/dorssel/usbipd-win WSL2 内ではホストの USB デバイスを使うことができないと...
- STM32F401CC の安いボード Type-C コネクタ 25MHz / 32.768 kHz 水晶つき NRST / BOOT ボタン 裏面に WeAct と書いてあった。...








