ぽんぽこ日記

プログラミング、読書、日々の生活

Helixのための日本語タイピング練習ソフトをつくりました

先日Helixというキーボードを導入したのを紹介しました。

ponpoko1968.hatenablog.com

こうした自作キーボードはカスタマイズ性が高く、色々なキーシーケンスをプログラミングによって生成できるので、前から興味のあった親指シフトによる日本語入力を試してみようと思いました。色々調べていると蜂蜜小梅配列と言う配列が考案されているのを知りました 。

8x3koume.na.coocan.jp

この配列をHelixへ適用するに当たっては、derui氏という方が公開しているキーマップを改造して、蜂蜜小梅配列を再現したファームウェアをHelixに書き込みました。ありがとうございます。

github.com

まだキー同時押しによる撥音、促音の省略入力など、蜂蜜小梅配列のキーマップを完全に再現していませんが、一通り入力ができるようになっています。下記にGistのリンクを貼っておきます。

Helix keymap

さて、こうなってくるとタイピングの練習をする必要があるので、効率的に練習するためについでにタイピング練習プログラムも自作しました。 Python とCursesライブラリを使っています。

github.com

f:id:ponpoko1968:20190428184043p:plain
スクリーンショット

このモードではHelixは蜂蜜小梅配列に対応した一連のアルファベットのキーコードを送出するので、練習プログラム使用時は、Mac側ではかな固定入力で入力を行うことを前提としています。

$ python trainer.py
usage: trainer.py [-h] [-u] [-m] [-l] [-H {left,right,both}] [-N] [-D] [-X]
                  [-A] [-n N_CHARS] [-o OUT_DIR] [-f WORD_FILE] [-w] [-b]
                  [--hilight]

optional arguments:
  -h, --help            show this help message and exit
  -u, --upper           上段を追加
  -m, --middle          中段を追加
  -l, --lower           下段を追加
  -H {left,right,both}, --hands {left,right,both}
                        使用する手
  -N, --enable-normal-shift
                        正シフトの音を追加
  -D, --disable-no-shift
                        シフトなしの音を追加しない
  -X, --enable-cross-shift
                        クロスシフトの音を追加
  -A, --all-chars       すべての音を追加
  -n N_CHARS, --number-chars N_CHARS
                        練習する語数
  -o OUT_DIR, --output-dir OUT_DIR
                        ログの出力先
  -f WORD_FILE, --word-file WORD_FILE
                        単語ファイルのパス
  -w, --word-mode       単語モード
  -b, --blind           キーボードに音を表示しない
  --hilight             キーボードに対象をハイライト表示する

このプログラムでは左右それぞれの上中下段のキー配列ごとに練習をすることができます 練習用の単語を集めたテキストファイルを用意することで、そのファイルの中から練習対象となっている音のみを含んだ単語を問題文として表示することができます。

ネット上には 各種IME のためのフリーの辞書ファイルが公開されているのでそういったものを加工して使うといいと思います。

練習が終わると、練習にかかった時間や誤って打鍵した数などを、練習対象のキーごとに集計したJSON形式のログファイルを書き出します 。

Cursesはワイドキャラクターを直接入力できる関数get_wchar()が用意されているので採用しました。新卒で就職して以来 UNIX 系の環境で開発を続けてきましたが、Unix界で古くから存在するCursesライブラリを使う機会がなく、使うのは初めてでした。デスクトップのウインドウアプリや、SPAをつくるほどのものでもない場合には便利かもしれません。

まったく誰得なプログラムなんですが、練習プログラムのキーマップの設定の部分などを適宜変更すれば、他の親指シフト系配列やキーボードの機種でも使えるようになると思うので、forkして使ってみてください。

ちなみにこのブログの文章は Google 音声入力で書きましたw

みんなのPython 第4版

みんなのPython 第4版