キーボードタイプ依存データの外部ファイル化について考える その4
テキスト形式ファイルの拡張子 .lng は .kl (key layout)、バイナリ形式ファイルの拡張子 .lngx は .klx に変更したいと思います。
テキスト形式ファイルである .kl を解析する処理はできるだけ本体とは分離したいので、インターフェースとしてはディレクトリを指定して解析を実行するとそのディレクトリ下にある .kl を解析して解析結果である .klx を同じディレクトリに出力するという単純なものにしようと思います。
解析部と本体側が解析結果をチマチマとやりとりするインターフェースは持たせず、本体側は作成された .klx の読込みのみをサポートします。.kl/.klx ファイルがなんらかの原因で壊れた場合を想定して、これまでの"JP Keyboard","US Keyboard"はビルトインデータとしてQt Brynhildr内部に残します。
設定によって、.klx を残して次回起動時に利用したり、常に .kl を解析して更新するようにできたりすればいいかなと思います。初期設定としては、.klx よりも .kl が新しい時だけ再解析するということになるかと思います。もちろん、.klx が存在しない初回起動時は無条件で .kl を解析して .klx を作成します。
デバッグログを出力させて確認しました。
とりあえず、外部ファイルから読み込んだ"Japanese 109"を選択して"JP Kyboard (built-in)"と同様に動作することを確認しました。
テキスト形式ファイルである .kl を解析する処理はできるだけ本体とは分離したいので、インターフェースとしてはディレクトリを指定して解析を実行するとそのディレクトリ下にある .kl を解析して解析結果である .klx を同じディレクトリに出力するという単純なものにしようと思います。
解析部と本体側が解析結果をチマチマとやりとりするインターフェースは持たせず、本体側は作成された .klx の読込みのみをサポートします。.kl/.klx ファイルがなんらかの原因で壊れた場合を想定して、これまでの"JP Keyboard","US Keyboard"はビルトインデータとしてQt Brynhildr内部に残します。
設定によって、.klx を残して次回起動時に利用したり、常に .kl を解析して更新するようにできたりすればいいかなと思います。初期設定としては、.klx よりも .kl が新しい時だけ再解析するということになるかと思います。もちろん、.klx が存在しない初回起動時は無条件で .kl を解析して .klx を作成します。
デバッグログを出力させて確認しました。
Created KeyLayoutFileReader! layoutfilepath = ./keylayout NOT supported File : FlexLexer.h NOT supported File : GNUmakefile NOT supported File : Japanese109.kl supported File : Japanese109.klx Opened file : ./keylayout/Japanese109.klx [File Header] magic = "KLF" spec = 1 size = 3964 keynum = 139 softkeynum = 67 [General] Name = Japanese 109 Author = FunFun <fu.aba.dc5@gmail.com> Closed file : ./keylayout/Japanese109.klx NOT supported File : key.h NOT supported File : keylayoutfile.cpp NOT supported File : keylayoutfile.h NOT supported File : keylayoutfile.l NOT supported File : keylayoutfile.y NOT supported File : keylayoutfilereader.cpp NOT supported File : keylayoutfilereader.h NOT supported File : obj NOT supported File : US101.kl supported File : US101.klx Opened file : ./keylayout/US101.klx [File Header] magic = "KLF" spec = 1 size = 3928 keynum = 136 softkeynum = 67 [General] Name = US 101 Author = FunFun <fu.aba.dc5@gmail.com> Closed file : ./keylayout/US101.klx NOT supported File : util Deleted KeyLayoutFileReader!
とりあえず、外部ファイルから読み込んだ"Japanese 109"を選択して"JP Kyboard (built-in)"と同様に動作することを確認しました。

« Brynhildr 「2.2.5」 がリリースされました | トップページ | Brynhildr 「2.2.6」 がリリースされました »
« Brynhildr 「2.2.5」 がリリースされました | トップページ | Brynhildr 「2.2.6」 がリリースされました »
コメント