「LTsv10kanedit(tsvtool10)」は「L:Tsv」の読み書きを中心としたモジュール群です。

version(branch):20170119R141608 modify:20170128S130712

目次

⓪-0.ライセンス及びソフト使用の補足ガイドライン

※「MIT License」準拠。

MIT License - Choose a License
http://choosealicense.com/licenses/mit/
licenses/MIT_license - Open Source Group Japan Wiki - Open Source Group Japan - OSDN
https://ja.osdn.net/projects/opensource/wiki/licenses%2FMIT_license
MITライセンスを1行1行読んでいく | プログラミング | POSTD
http://postd.cc/mit-license-line-by-line/

※口語的説明。
・「LICENSE」も含めソースコードの閲覧やコピーに制限を設けない事。
・いかなる場合においても作者または著作権者は一切責任を負わない事。

⓪-1.インストール(ダウンロード・アンインストール)&セットアップ

※Pythonは別途インストールされているものとします(Pythonの導入分からない人は「⑩-0.「L:Tsv」のFAQ」を参考)。

※Vimも別途インストールされているものとします(Vimの導入分からない人は「KEV①-0.「KEV(kanedit.vim)」をVimへセットアップ」を参考)。

ダウンロードは「https://github.com/ooblog/LTsv10kanedit」にある「Clone or download」ボタンを押すと出る「Download ZIP」メニューをクリック。
インストールは任意(なるだけユーザーディレクトリ内)のフォルダに「LTsv10kanedit-master.zip」を解凍するだけです(「LTsv10kanedit-master」フォルダが作成されるはずです)。
「*.py」のパーミッションがOFFになってたら実行可能に変更、Wineで使う場合は「wine_sh」フォルダ内の「*.sh」のWineパスを適宜修正。
最初に「kanmap.py」を起動(前バージョンの「LTsv/kanpickle.bin」ある場合は一旦削除してから)。「LTsv/kanpickle.bin」を新規作成してください。
「LTsv/kanpickle.bin」を初期化しない場合グリフ座標データが蓄積するまで起動や動作が重くなるか、バージョン(ブランチ)によってはエラーになる場合があります。
詳細は「kanmap①-0.「kanmap」の使い方(初回起動・表示編)」を参考。

フォント「kan5x5comic.ttf」も用意する場合は「kanfont③-0.「kanfont」のFAQ」を参考。

ooblog/LTsv10kanedit: 「L:Tsv」の読み書きを中心としたモジュール群と漢字入力「kanedit」のPythonによる実装です(準備中)。
https://github.com/ooblog/LTsv10kanedit

アンインストールはインストール時に作成した「LTsv10kanedit-master」フォルダを削除するだけです。

⓪-2.その他現在わかっている不具合や今後の課題

「Tahrpup6.0.5,Python2.7.6,vim.gtk7.4.52(vim-gtk)」および「Wine1.7.18,Python3.4.4,gvim8.0.134(KaoriYa)」で開発しています。Windows,cygwin,darwin,MacOSなどでの動作は確認しておりません。
フォント(グリフ)「kan5x5comic」は半角と全角の幅の比率が約5:3(1024:624)なのでアスキーアートで問題になる場合があります。グリフ不足で表示できない文字などあります。
「kan5x5comic.ttf」と「kan5x5.ttf」を同時に入れると麻雀牌が表示されない(「kan5x5.ttf」の絵文字代替4x5文字が優先される)場合があります。
私用領域と呼ばれる環境に左右される文字コードを漢直鍵盤の制御に用いてます。「kan5x5comic.ttf」を用意しないとソースが見辛い可能性があります。
人名に使える漢字の異体字を漢字配列「LTsv/kanmap.tsv」から単漢字辞書「LTsv/kanchar.tsv」に移管作業中。なので漢直鍵盤の漢字配列「LTsv/kanmap.tsv」が大幅に変更するかも。
マウスボタンの取得は保留。ホイールの取得は放置。tkk方面は手を出さない予定(コンボボックスなどはGTKのみサポート)。
GTKのコールバックから受けとる構造体を扱う方法が不明のため、GUIイベント経由のPCキーボード取得やファイルダイアログからのキャンセル取得などが不明。
「docs/」フォルダ内のドキュメントを「docs/kanedit_etc.tsv」ベースで描き直し中。執筆途中状態の関数一覧タグ解説項目あり。
LTsv/LTsv_doc.py」でタグの順序が厳格という問題があるのでいっその事スクリプト言語ごと新規に作ろうと思います(TSFの開発)。

LTsv版の「kanedit.py」の開発を凍結してTSF版の「kanedit」を作成する予定です。言語の開発には時間が必要なので、平行してVim版「LTsv/kanedit.vim」も開発です。
LTsv/kanedit.vim」と「kanedit.py」とで操作方法が乖離してますがTSF版もVim版の方向になるべく揃える予定です。LTsv版は互換性の維持程度に止まると思います。

TSF版作る前に漢字配列「LTsv/kanmap.tsv」のグリフ圧縮アルゴリズムを「5x10x」から「5x10x20x」に変更したいので、移行ツール作成→一時的に無圧縮→新アルゴリズムのグリフと交換などの間多少の混乱が発生するかと思います。

①-0.「L:Tsv」とは(「L:Tsv」と「LTSV」の違い)

データ間の区切りをタブ(\t)、「label:data」の様にコロン(:)でデータにラベルを付けたのが「LTSV」です。
素のLTSVファイル自体は単なるログのフォーマットです。

Labeled Tab-separated Values (LTSV)
http://ltsv.org/
LTSV FAQ - LTSV って何? どういうところが良いの?
http://d.hatena.ne.jp/naoya/20130209/1360381374

「L:Tsv」は「*.tsv」「*.ltsv」ファイルの事を差す場合もありますがLTSVパーサ類を含めた「tsvtool」も含めて「L:Tsv」と呼ぶ場合があります。
複数のLTSVを1つのファイルで保存できるようタグで区切ったり、日時処理や分数電卓やGTK&Tkinterなどを加えたり、Python2,3のprint関数バージョン違いを吸収させたりと、
LTSVパーサに雑多な拡張を重ねていった結果、漢直エディタ環境と化したモジュール群が今の「L:Tsv」です。

①-1.「L:Tsv」ファイルの構造

データ間の区切りはタブ(\t)です。一般的なCSVやLTSV等と事なり、複数のタブがあっても1つのタブとみなします(文字列長0のデータを扱う場合はラベル推奨)。
先頭データの事をfirst、先頭以降のデータの事をrestと呼びます。例えばLispでも、car関数の代わりにfirst関数、cdr関数の代わりにrest関数が使えたはず。
firstは縦軸ラベルとして使う場合があります。restでは「label:data」の様なラベルとデータをコロン(:)で区切る形の軸ラベルが付けられます。簡単に言うとrestでLTSVが使えます。
LTSVを「[tag|」と「|tag]」の様にタグで区切る事で1つのファイルに複数のCSVやLTSVやTXTといったページを格納できます。
拡張子は「.ltsv」か「.tsv」。メモリ上など拡張子で区別できない場合でもメタタグで判定。メタタグが存在しない場合ファイル全体を1つのページとみなす。
first縦軸ラベル自体にコロン(:)が含まれる(「label:data」のようになってる)場合、ページ全体を1つのLTSVとみなす場合がある(「LTsv_label2dictint()」「LTsv_label2dictstr()」など)。

メタタグ「L:Tsv」のfirst縦軸ラベルの解説。

[L:Tsv|
「L:Tsv」ファイルの宣言です。マジックナンバー代わりなのでなるだけファイルの先頭に。
code
文字コードの宣言で「UTF-8」。Windowsだろうが半角は3バイトで保存するので注意。
enter
改行の宣言で「LF」。Windowsだろうが改行は1バイトで保存するので注意。
tab
タブインデントの宣言で半角スペース「4」。フォント「kan5x5comic」の半角と全角の幅の比率は約5:3(1024:624)なので注意。
program
「L:Tsv」ファイルをどの様に扱うかを表す規格名(プログラム名)を記述。例えば「LTsv_doc」では「LTsv_doc.py」。
1st
「L:Tsv」自体を何かのスクリプトとして実行する場合に最初に実行するページ指定を想定。例えば「LTsv_doc」では「LTsv_doc_tsv」など。
LTsvver
構文解析パーサのバージョン。「LTsv_file.py」の「LTsv_file_ver()」。
modify
「L:Tsv」ファイルの更新日時。「LTsv_time.py」の「LTsv_getdaytimestr(overhour=24,diffminute=0)」を想定。「LTsv_file.py」で「LTsv_savefile()」上書き時に更新。
|L:Tsv]
メタタグ「L:Tsv」を閉じます。タグで区切る事で1つのファイルに複数のCSVやLTSVやTXTといったページを格納できます。

「L:Tsv」のメタタグは「LTsv_newfile()」関数でも作成可能。「③-0.「LTsv_file.py」の関数一覧」も参考。

②-0.「LTsv_printf.py」の関数一覧

LTsv/LTsv_printf.py」はPythonのprint関数の代わりにlibcのprintfを呼び出すモジュールです。
・Wine上DOSのエラー要因だったCP932(いわゆるシフトJIS、BMP基本多言語面0xffff範囲内)などに変換させる事で範囲内の漢字が扱えるようになります。
・変換できない文字は数値文字参照に変換されます。
・その他数値文字参照(文字参照含む)の変換、全角半角大文字小文字ひらがなカタカナの変換などが扱えます。
・単体風テストでは仮名変換「LTsv_kanare()」など関数群の挙動確認などができます。

LTsv_getpreferredencoding()
「sys.stdout.encoding」(ターミナルのエンコード)を返す。
「sys.stdout.encoding」が取得できない(Noneを返す)場合は「locale.getpreferredencoding()」からターミナルのエンコード取得を試みる。
LTsv_libc_printf(LTsv_text,LTsv_log=None)
LTsv_textの文字列をターミナル(stdout)に表示する。LTsv_logと返り値を指定する事で変数にも出力追記できる。
LTsv_textに渡す文字列は「"{0}".format(data)」みたいに事前に「str.format()」などで加工する。
扱えない文字は数値文字参照(「咖喱」が「咖喱」)に変換される。
「ctypes.cdll.msvcrt(MS-DOS)」は1024バイト(文字数ではなくバイト)を超える文字列を扱えない様子。
LTsv_libc_printcat(LTsv_text)
上記LTsv_libc_printfからログ保存やL:Tsvタグエスケープ処理などを取り除いたもの。
LTsv_libc_printf_type(LTsv_text,LTsv_log=None)
Python2では「<type 'str'>」Python3だと「<class 'bytes'>」のようにprintfに渡すバイナリ文字列の変数の型を表示。
LTsv_logと返り値を指定する事で変数にも出力追記できる。
LTsv_utf2xml(LTsv_text)
LTsv_textの文字列を数値文字参照に変換。
LTsv_xml2utf(LTsv_text)
LTsv_textの文字参照(数値文字参照含む)を文字列に変換。
LTsv_kanare(LTsv_before,LTsv_recase)
全角半角大文字小文字ひらがなカタカナの変換を行います。LTsv_beforeに変換する文字列、LTsv_recaseで変換辞書指定。
変換辞書LTsv_recaseのパラメータは「②-1.ひらカナの変換「LTsv_kanare()」のLTsv_recaseの変換辞書一覧」を参考。
LTsv_utf2ink(LTsv_text)
UTF-8をkantrayの「UTF-8点字」に変換(バイナリの点字表記)。
点字フォントが表示できる環境にないと動作確認は困難なので注意。
LTsv_ink2utf(LTsv_text)
上記「UTF-8点字」をUTF-8に戻す。
データ破損を補完する機能はないので注意。
LTsv_subprocess(LTsv_subprocess_input="",LTsv_subprocess_shell=False)
ターミナルにコマンドを送る。実行結果も取得できる。
「LTsv_subprocess_shell=True」でgrepなどパイプライン処理のような事もできるようになるが、インジェクション脆弱性の恐れが発生するので注意。
LTsv_otherprocess(LTsv_otherprocess_input="")
別プロセスでコマンドを実行する。

②-1.ひらカナの変換「LTsv_kanare()」のLTsv_recaseの変換辞書一覧

"Hira2Kata"
ひらがなをカタカナに。
"Kata2Hira"
カタカナをひらがなに。
"HiraKana2SeiH"
濁音を清音に。「ぱぴぷぺぽ」と「ぱぴぷぺぽ」は「はひふへほ」に。
"HiraKana2SeiM"
濁音を清音に。「ばびぶべぼ」は「はひふへほ」に、「ぱぴぷぺぽ」を「まみむめも」に。
"HiraKana2DakB"
清音を濁音に。「はひふへほ」は「ばびぶべぼ」に。
"HiraKana2DakP"
清音を濁音に。「はひふへほ」は「ばびぶべぼ」に、「まみむめも」を「ぱぴぷぺぽ」に。
"HiraKana2Han"
ひらがなもカタカナも半角に。
"HiraKana2HanKaKe"
ひらがなもカタカナも「ヵヶ」も半角に。
"Han2HiraEz"
半角をひらがなに(濁音は分離したまま)。
"Han2KataEz"
半角をカタカナに(濁音は分離したまま)。
"Han2Hira"
半角をひらがなに(濁音があっても1つの文字に統合)。
"Han2Kata"
半角をカタカナに(濁音があっても1つの文字に統合)。
"Alpha2BIG"
半角全角にかかわらずアルファベットを大文字に(キリル文字ギリシャ文字含む)。
"Alpha2SML"
半角全角にかかわらずアルファベットを小文字に(キリル文字ギリシャ文字含む)。
"Alpha2HAN"
大文字小文字にかかわらずアルファベットを半角に(キリル文字ギリシャ文字含まない)。
"Alpha2ZENBS"
大文字小文字にかかわらずアルファベットを全角に(キリル文字ギリシャ文字含まない)。バックスラッシュは「\」へ。
"Alpha2ZENYen"
大文字小文字にかかわらずアルファベットを全角に(キリル文字ギリシャ文字含まない)。バックスラッシュは「¥」へ。

③-0.「LTsv_file.py」の関数一覧

LTsv/LTsv_file.py」は「L;Tsv」ファイルの基本的な読み書きモジュールです。 ・「LTsv10kanedit(tsvtool10)」の本編です。主に「L:Tsv」の読み書きです。
・Python2とPython3のテキストファイル読み込み方法の違いを吸収する手段にも使えます。
・modify項目で「LTsv_getdaytimestr()」を使うので「LTsv_time.py」モジュールも必要。

LTsv_newfile(LTsv_program,LTsv_default=None)
「L:Tsv」ファイルを変数上に作成する。
LTsv_programには「L:Tsv」ファイルを扱うプログラムまたは規格を記述。
LTsv_defaultには「L:Tsv」ファイル自体をスクリプトとして実行する場合の1stページの指定。
メタタグについては「①-1.「L:Tsv」ファイルの構造」も参考。
LTsv_download(LTsv_url,LTsv_path,LTsv_reporthook=None)
ネット上のLTsv_urlにあるファイルをローカルのLTsv_pathに保存する。
ダウンロード中にLTsv_reporthook(count,blocksize,totalsize)をコールバックして状況報告させる事は可能(スレッド関係の扱いに注意)。
LTsv_zipload(LTsv_zip,LTsv_name,LTsv_path)
ローカル上のLTsv_zipにあるファイルをローカルのLTsv_pathに解凍する。元のzipファイルはそのまま。
LTsv_64load(LTsv_path,LTsv_codewidth=128)
ローカル上の画像ファイルなどをテキスト(base64)に変換した形で読み込む。元の画像ファイルはそのまま。
LTsv_loadfile(LTsv_path,LTsv_encoding="utf-8",LTsv_default=None)
ローカル上のLTsv_pathから「L:Tsv」ファイルを読み込む。
LTsv_encodingにテキストのコード指定。例えばCP932(いわゆるシフトJIS、BMP基本多言語面0xffff範囲内)を読み込むときは「LTsv_encoding="cp932"」が必要。
LTsv_defaultは読み込みできなかった場合の初期値を指定。
LTsv_readlinepages(LTsv_text)
LTsv_textテキスト内のタグ「[tag|」一覧を1行のLTSVとして取得する。
LTsv_getpage(LTsv_text,LTsv_tag,LTsv_default=None)
タグ「[LTsv_tag|」「|LTsv_tag]」で囲まれた範囲のLTSVページを取得。
LTsv_default(LTsv_page)はページを取得できなかった場合の初期値を指定。
LTsv_readlinedeno(LTsv_text)
LTSVページの行数を数える。LTsv_textに改行が無くても1行とみなす。
LTsv_textの文字列長が0の場合0を返す。
LTsv_readlinenum(LTsv_text,LTsv_linenum,LTsv_default=None)
0から数えた行数でLTSVページから1行読み込む。
LTsv_default(LTsv_line)は読み込めなかった場合の初期値を指定。
LTsv_readlinefirsts(LTsv_text)
LTSVページのfirst(縦軸ラベル)一覧を1行のLTSVとして取得。
LTsv_readlinerest(LTsv_text,LTsv_first,LTsv_default=None)
LTSVページからfirst(縦軸ラベル)指定で先頭以下データrestを1行読み込む。first(縦軸ラベル)の取得にはタブ文字が必要。
LTsv_default(LTsv_rest)はrestが読み込めなかった場合の初期値を指定。
LTsv_pickdatadeno(LTsv_line)
1行のLTSVに含まれるデータ個数を取得(firstも0個目のデータとみなす)。
「label:data」をラベルとデータに分ける場合は「LTsv_split_label_data()」などを併用する。
LTsv_pickdatanum(LTsv_line,LTsv_datanum,LTsv_default=None)
1行のLTSVから0から数えた項目数指定で1個読み込む(firstも0個目のデータとみなす)。
「label:data」をラベルとデータに分ける場合は「LTsv_split_label_data()」などを併用する。
LTsv_split_label_data(LTsv_labeldata,LTsv_seldata=True)
「label:data」からlabelかdataのどちらかを取得。LTsv_seldataがTrueならdata部分を、Falseならlabel部分を返す。
LTsv_pickdatas(LTsv_line,LTsv_dataL=0,LTsv_dataR=0)
1行のLTSVから0から数えた項目数指定で範囲内の複数データを読み込む(firstも0個目のデータとみなす)。いわゆるスライス操作。
LTsv_dataLとLTsv_dataRが逆(Tsv_dataRの方が小さい)の場合でも関数内で自動的に並び替える。
LTsv_dataLとLTsv_dataRが同じ場合差分が無いので読み込まない。
LTsv_pickdatafind(LTsv_line,LTsv_find)
LTsv_findが1行のLTSVの何項目にデータがあるか0から数える(firstも0個目のデータとみなす)。
LTsv_joindatanum(LTsv_line,LTsv_datanum,LTsv_default=None)
1行のLTSVのLTsv_datanum項目目にLTsv_default(LTsv_data)を追加する。
LTsv_datanumが0以下の場合先頭firstに追加。項目数以上の場合末尾に追加。
省略もしくは文字列長0の場合は何もしない。
LTsv_setdatanum(LTsv_line,LTsv_datanum,LTsv_default=None)
1行のLTSVのLTsv_datanum項目目にデータLTsv_default(LTsv_data)を上書する。
負数の場合や項目数以上の場合は何もしない。
LTsv_default(LTsv_data)を省略もしくは文字列長0のデータの場合は項目を削除。
LTsv_pickdatalabel(LTsv_line,LTsv_label,LTsv_default=None)
1行のLTSVから「label:data」形式の横軸ラベル(LTsv_label)指定で1個読み込む。
LTsv_default(LTsv_data)は読み込みできなかった場合の初期値を指定。
LTsv_pickdic(LTsv_text,LTsv_first,LTsv_label)
「LTsv_readlinerest()」と「LTsv_pickdatalabel()」をひとまとめに。単漢字辞書「LTsv/kanchar.tsv」読込用途。
first(縦軸ラベル)で指定行、restの横軸ラベル(LTsv_label)で指定列、データ1個を読み込む。
LTsv_setdatalabel(LTsv_line,LTsv_label,LTsv_default=None)
1行のLTSVの「label:data」形式横軸ベル(LTsv_label)項指定でデータLTsv_default(LTsv_data)を上書する。
元LTSVに存在しない横軸ラベル(LTsv_label)の場合末尾に追加。
LTsv_default(LTsv_data)を省略した場合に項目はラベルごと削除。
文字列長0のデータLTsv_default(LTsv_data)であっても省略しなかった場合は横軸ラベル項目を追加もしくは上書き。
上記LTsv_joindatanumやLTsv_setdatanumと事なりLTsv_setdatalabelでは「label:」が単独で存在(文字列0の「data」が存在できる)違いがあるので注意。
LTsv_sievelabels(LTsv_rest,LTsv_labels="")
データそのままにラベルを取り替える。
文字列0の「data」(データ数よりラベル数が多い場合を想定)は項目が消えるので注意。
LTsv_sievetuplelabels(LTsv_rest,*LTsv_labels)
「LTsv_sievelabels()」とほぼ同じだが、LTsv_labelがLTSVではなくタプル。
LTsv_pushlinenum(LTsv_text,LTsv_linenum,LTsv_default=None)
LTSVページに0から数えた行数指定で1行LTsv_default(LTsv_line)を追加する。
1行追加想定だけど複数行のテキスト挿入も可能。
LTsv_default(LTsv_line)を省略もしくは文字列長0のデータの場合は何もしない。
LTsv_overlinenum(LTsv_text,LTsv_linenum,LTsv_default=None)
LTSVページに0から数えた行数指定で1行LTsv_default(LTsv_line)を上書する。
1行上書想定だけど複数行のテキスト挿入も可能。
LTsv_default(LTsv_line)を省略もしくは文字列長0のデータの場合は1行削除。
LTsv_pushlinerest(LTsv_page,LTsv_first,LTsv_default=None)
LTSVページにfirst(縦軸ラベル)指定でFirstにrest(LTsv_default)を追加する。
LTsv_page内にLTsv_firstが存在しない場合LTsv_page末尾に追加。
LTsv_rest(LTsv_default)を省略した場合に項目を削除。文字列長0であっても省略しなかった場合は追加もしくは上書き。
文字列長0のrestデータでも縦軸ラベルfirst(縦軸ラベル)の末尾にはタブ文字が付加(「first\t\n」)。
LTsv_putpage(LTsv_text,LTsv_tag,LTsv_default=None)
タグ「[LTsv_tag|」「|LTsv_tag]」で囲まれたLTSVページとしてLTsv_default(LTsv_page)を上書き。
LTsv_text内にLTsv_tagタグが存在しない場合末尾に追加。タグ名が文字列長0の場合は何もしない。
LTsv_page(LTsv_default)を省略の場合はページ削除。文字列長0であっても省略しなかった場合は追加もしくは上書き。
LTsv_putmodify(LTsv_text)
メタタグ「L:Tsv」の「modify」の更新のみを行う。「LTsv_getdaytimestr()」を使うので[LTsv_time.py]モジュールが必要。
「LTsv_newfile()」や「LTsv_savefile()」実行時と「LTsv_putmodify()」の時間はズレる場合がある事に注意。
LTsv_savedir(LTsv_path)
「LTsv_savefile()」「LTsv_saveplain()」で保存予定のファイル名が1個フォルダを必要とする場合、1個フォルダを作成する。
「os.mkdir()」を使うので、一気に深い階層のフォルダを作ろうとするとエラーになる。
「LTsv_savefile()」「LTsv_saveplain()」の内部で使用。
LTsv_savedirs(LTsv_path)
「LTsv_savefile()」「LTsv_saveplain()」で保存予定のファイル名が複数のフォルダを必要とする場合、複数のフォルダを作成する。
「os.makedirs()」を使って一気に深い階層のフォルダを作れてしまうので取扱い注意。
LTsv_savefile(LTsv_path,LTsv_default=None)
ローカルのLTsv_pathに「L:Tsv」ファイル、LTsv_default(LTsv_text)を書き込む。ファイル保存時にメタタグ「L:Tsv」の「modify」の更新。
「LTsv_savedir()」を内部で呼び出すのでフォルダ1個分の階層なら自動でフォルダ作成。
LTsv_default(LTsv_text)を省略の場合はファイル削除(フォルダはそのまま)。
LTsv_saveplain(LTsv_path,LTsv_plain)
ローカルのLTsv_pathにテキストファイルLTsv_plainを(LTsv_text)書き込む。
「LTsv_savedir()」を内部で呼び出すのでフォルダ1個分の階層なら自動でフォルダ作成される。
LTsv_labelzip(LTsv_labels,LTsv_datas)
LTsv_labelsを横軸ラベル、LTsv_datasをデータとして、
「label/tlabel/t…」と「data/tdata/t…」を1行のLTSV「label:data/tlabel:data/t…」に束ねる。
LTsv_unziplabel(LTsv_line)
1行のLTSV「label:data/tlabel:data/t…」からラベルだけを取り出して「label/tlabel/t…」に。
LTsv_unzipdata(LTsv_line)
1行のLTSV「label:data/tlabel:data/t…」からデータだけを取り出して「data/tdata/t…」に。
LTsv_unziplabelsdata(LTsv_line,LTsv_labels)
1行のラベル有りLTSV「label:data/tlabel:data/t…」からラベル該当データだけ取り出して「label:data/tlabel:data/t…」に。
LTsv_labelsはtsv形式。
LTsv_unziptuplelabelsdata(LTsv_line,*LTsv_labels)
1行のラベル有りLTSV「label:data/tlabel:data/t…」からラベル該当データだけ取り出して「label:data/tlabel:data/t…」に。
LTsv_labelsはPythonのタプル形式。
LTsv_tuple2tsv(LTsv_tuple)
Pythonのタプルやリストをtsvに。
forループよりjoin使った方が速い的なPythonあるある。
LTsv_tsv2list(LTsv_line,LTsv_len=None)
tsvをPythonのリストに。
左辺でunpackする場合受けとる変数の個数をLTsv_lenで指定。
LTsv_lenがデータ数より多い場合は0文字列が補完される。
LTsv_tsv2tuple(LTsv_line,LTsv_len=None)
「LTsv_tsv2list()」のタプルバージョン。
LTsv_label2dictint(LTsv_line)
LTSV「label:data/tlabel:data/t…」をPythonの辞書に。dataは数値化。
複数行あっても1つのLTSVとみなす。
LTsv_label2dictstr(LTsv_line)
LTSV「label:data/tlabel:data/t…」をPythonの辞書に。dataは文字列化。
複数行あっても1つのLTSVとみなす。
LTsv_dict2label(LTsv_dict)
Pythonの辞書「{"label":data,"label":data,…}」をLTSV「label:data/tlabel:data/t…」に。dataは文字列化。
LTsv_file_ver()
「LTsv_file.py」のバージョン表示(20170119R141608)。
LTsv_issue()
「/etc/issue」を開いてLinuxのディストリビューションの種類を探る。バージョンの確認方法はディストリ毎に異なる予感。

④-0.「LTsv_time.py」の関数一覧

LTsv/LTsv_time.py」は日時フォーマットモジュールです。FPSも扱います。徹夜日時という概念があります。
・とりあえず日時を取得する場合は「LTsv_getdaytimestr(overhour=24,diffminute=0)」で。
・徹夜日時とは正子(夜中の午前0時)を24時として日付を切り替えずに25時(夜中の1時)、26時(夜中の2時)…と時だけが過ぎる状態です。
・ISOカレンダーの週はISO8601の1月4日を含む週(最初の木曜日を含む週)を第1週と数える方法。曜日は月曜から始まるので土日は週末。ISOカレンダーの曜は月曜が1で土曜が6、日曜が7。
・単体風テストでは複数の日時フォーマットを用いて関数群の挙動確認ができます。

LTsv_yearleap(LTsv_toyear)
閏年ならTrue。
LTsv_yearweeks(LTsv_toyear)
一年の間に週(ISOカレンダーの週)が何回あるか、年間の週数52〜53を返す。
LTsv_monthleap(LTsv_toyear,LTsv_tomonth)
一月の間に日が何回あるか、28〜31を返す。閏年なら2月は29日。
LTsv_beat864(LTsv_tohour,LTsv_tominute,LTsv_tosecond)
(LTsv_Beat,LTsv_BeatInteger,LTsv_BeatPoint)のタプルを返す。
LTsv_Beatは1日の秒数0?86399(86400)。@Beatはその秒数を86.4で割った一日を1000分割する数。
LTsv_BeatIntegerは@Beatの整数部分。LTsv_BeatPointは@Beatの小数部分。
LTsv_intstr0x(LTsv_code)
"0xff","$80"のように16進数っぽいものは16進数で数値に、そうでないものは10進数と思ってint変換。
try節で囲む手間を省きたい場合に便利。
LTsv_settimerCounter(counter=None)
LTsv_timerCounter「@c」の値を設定する(取得のみも可能)。
LTsv_checkFPS()
LTsv_checkFPS()自身を1秒間に何回実行できるか計測。0〜999の範囲。
LTsv_setdaytimeshift()
日時フォーマット用の日時変数(LTsv_meridian_nowなど)を再計算する。
通常は「LTsv_putdaytimespecify(),LTsv_putdaytimenow(),LTsv_putdaytimeearlier(),LTsv_putdaytimemodify(),LTsv_putdaytimever()」から呼び出される内部関数。
LTsv_setdaytimeoption(overhour=None,diffminute=None)
LTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定。
LTsv_putdaytimespecify(),LTsv_putdaytimenow(),LTsv_putdaytimeearlier(),LTsv_putdaytimemodify(),LTsv_putdaytimever()にも同等機能のオプションがある。
LTsv_putdaytimenow(overhour=None,diffminute=None)
現在時刻を「LTsv_meridian_now」に格納。各種日時変数も計算。
追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。
LTsv_putdaytimeearlier(overhour=None,diffminute=None)
最後に実行された「LTsv_putdaytimenow()」の時刻「LTsv_earlier_now」を再度「LTsv_meridian_now」に格納。各種日時変数も計算。
追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。
LTsv_putdaytimespecify(year=None,month=None,day=None,hour=None,minute=None,seconds=None,microsecond=None,overhour=None,diffminute=None)
日時を指定して「LTsv_meridian_now」に格納。省略(Noneを代入)した項目は現在時刻などが代入。
追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。
LTsv_putdaytimemodify(LTsv_path,overhour=None,diffminute=None)
ファイルLTsv_pathの更新時刻タイムスタンプをLTsv_meridian_nowに格納。各種日時変数も計算。
追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。
OSやファイルシステム毎に秒や分の精度に違いがあると思う。
LTsv_putdaytimever(LTsv_verstr,overhour=None,diffminute=None)
「LTsv_time_ver()」などの20170119R141608形式(@000y@0m@0dm@wdec@0h@0n@0s)をLTsv_meridian_nowに格納。各種日時変数も計算。
追加オプションでLTsv_overhour(徹夜日時)とLTsv_diffminute(時差)の設定をまとめて上書きできる。
LTsv_getdaytimestr(timeformat=None,overhour=None,diffminute=None)
日付フォーマットtimeformatを各種日時変数で置換する。
timeformatのデフォルト値は「@000y@0m@0dm@wdec@0h@0n@0s」。
日付フォーマットの概要は「④-1.日時フォーマットの概要」を参照。
LTsv_settimershift()
日時フォーマット用のタイマー変数(LTsv_lap_nowなど)を再計算する。
通常は「LTsv_puttimerstartgoal()」から呼び出される内部関数。
LTsv_settimershiftoption()
LTsv_start_nowとLTsv_goal_nowの差分を再計算する。
通常は「LTsv_puttimerstartgoal()」から呼び出される内部関数。
LTsv_puttimerstartgoal(microsecond=None,millisecond=None,seconds=None,minute=None,hour=None,day=None)
タイマーのLTsv_goal_nowを数秒後(seconds)・数分後(minute)・数時間後(hour)・数日後(day)などいずれかに設定する。
例えば三分後を指定する場合「LTsv_puttimerstartgoal(minute=3)」と入力。
複数のパラメータを同時指定した場合、例えば分と秒なら秒優先というように細かい方の単位が採用される(内部ではmicrosecondで計算)。
LTsv_puttimerspecify(year=None,month=None,day=None,hour=None,minute=None,seconds=None,microsecond=None)
タイマーのLTsv_goal_nowを日時指定。省略(Noneを代入)した項目は現在時刻などが代入。
LTsv_puttimerlap()
タイマーの経過時間をLTsv_passed_TotalSecondsに、残り時間をLTsv_timeleft_TotalSecondsに設定する。各種タイマー変数も計算。
LTsv_gettimerstr(timeformat=None)
日付フォーマットtimeformatを各種タイマー変数で置換する。
timeformatのデフォルト値は「@0h@0n@0s.0Rs」。時間フォーマットの概要は「④-1.日時フォーマットの概要」を参照。

④-1.日時フォーマットの概要

0.「@」で始まるキーワードが年月日等に置換される仕組み。「@」を表示する場合は「@@」と表記。
1.日付フォーマット(daytime系)では、小文字が現在時刻(meridian)、大文字が徹夜日時(allnight)です。分以下・Beat・timer系に徹夜日時はありません。
2.時間フォーマット(timer系)では、小文字が現在時刻(lap)、大文字が曲や動画などの長さ(limit)、「-」が先頭でタイマーの残り時間(timeleft)です。
3.分(miNute)は「n」で代用して月(Month)との変数名衝突防止してます。ミリ秒は「L」(miLlisecond)。マイクロ秒は「R」(micRoSecond)。
4.「_」(アンダースコア)を先頭に入れると0が空白に。0も空白も省くと数値は可変長。
5.月で「JFCAMNLUSOND」表記が使えます。曜で「UMTWRFS」表記が使えます。末尾に「ec」で英語1文字。末尾「j」で日本語表記。
5.日時の月,週,時,分,秒で2桁以下の数値項目の場合、末尾に「z」で1,2,3,4,5,6,7,8,9,10,11,12といった1桁の時全角数値の表現が可能。

年=@yzj,@yzc,@0yz,@_yz,@yz,@0yd,@_yd,@yd,@0yw,@_yw,@yw,@000yi,@___yi,@4yi,@0yi,@_yi,@2yi,@yi,@000y,@___y,@4y,@0y,@_y,@2y,@y,@Yzj,@Yzc,@0Yz,@_Yz,@Yz,@0Yd,@_Yd,@Yd,@0Yw,@_Yw,@Yw,@000Yi,@___Yi,@4Yi,@0Yi,@_Yi,@2Yi,@Yi,@000Y,@___Y,@4Y,@0Y,@_Y,@2Y,@Y
000y,___y,4y系は4桁の年(Year)。000y,___y,4y系は2桁の年(Yearlower)。
yz系は干支(YearZodiac)。@yzjで鼠,牛,虎,兎,龍,蛇,馬,羊,猿,鶏,犬,猪。@yzcで子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥
yi系はISOカレンダーの年(YearIso)。第1週に突入した時点で年が明けるので、年末年始の間は西暦カレンダーの年とズレる場合があります。
ywi系は年間の週数(YearWeeksIso)。年間約52〜53回。1月4日が含まれる週が第1週(第1木曜日が含まれる週)。
yd系は年間の日数(YearDays)。年間約365〜366日。閏年の時に1日増える。
月=@0md,@_md,@md,@mec,@mes,@mel,@_mel,@meh,@_meh,@mjiz,@_mjiz,@mj,@_mj,@0m,@_m,@mz,@m,@0Md,@_Md,@Md,@Mec,@Mes,@Mel,@_Mel,@Meh,@_Meh,@Mjiz,@_Mjiz,@Mj,@_Mj,@0M,@_M,@Mz,@M
m系は月の数値(Month)。1?12。
me系は月の英語表記。末尾「c」で一文字(JFCAMNLUSOND)、末尾「s」で三文字、末尾「l」で単語、末尾「h」で一文字の箇所大文字。
(January,February,marCh,April,May,juNe,juLy,aUgust,September,October,November,December)
mj系は神無月、mjiz系は神有月(睦月,如月,弥生,卯月,皐月,水無月,文月,葉月,長月,神有月,霜月,師走)表記の旧暦の月名。
md系は月間の日数(MonthDays)。31,28,31,30,31,30,31,31,30,31,30,31。閏年は31,29,31,30,31,30,31,31,30,31,30,31と2月が29日になる。
週=@0wnyi,@_wnyi,@wnyiz,@wnyi,@0Wnyi,@_Wnyi,@Wnyiz,@Wnyi,@0wnm,@_wnm,@wnmz,@wnm,@0Wnm,@_Wnm,@Wnmz,@Wnm
wnyi系はISOカレンダーの週番号(WeekNumberYearIso)。年間約52〜53回。1月4日が含まれる週が第1週(第1木曜日が含まれる週)。
wnm系は月毎の曜番号(WeekNumberMonth)。月間約4?5回。単純に月内の日数を7で割った数。
曜=@wdj,@wdec,@wdes,@wdel,@_wdel,@wdeh,@_wdeh,@wdi,@wd,@Wdj,@Wdec,@Wdes,@Wdel,@_Wdel,@Wdeh,@_Wdeh,@Wdi,@Wd
wd系は曜の数値(WeekDay)。月曜が0で土曜が5、日曜が6。
we系は曜の英語表記。末尾「c」で一文字(MTWRFSU)、末尾「s」で三文字、末尾「l」で単語、末尾「h」で一文字の箇所大文字。
(Monday,Tuesday,Wednesday,thuRsday,Friday,Saturday,sUnday)
wj系は月火水木金土日。
wdi系はISOカレンダー曜日の数値(WeekDayIso)。月曜が1で土曜が6、日曜が7。
日(日付)=@0dm,@_dm,@dmz,@dm,@0dy,@_dy,@dy,@0Dm,@_Dm,@Dmz,@Dm,@0Dy,@_Dy,@Dy
日(時間)=@000d,@___d,@00d,@__d,@0d,@_d,@d,@-000d,@-___d,@-00d,@-__d,@-0d,@-_d,@-d,@000D,@___D,@00D,@__D,@0D,@_D,@D
dm系は月換算の日数(DayMonth)。31,28,31,30,31,30,31,31,30,31,30,31。閏年は31,29,31,30,31,30,31,31,30,31,30,31と2月が29日になる。
dy系は年換算の日数(DayYear)。年間約365〜366日。閏年の時に1日増える。
時間フォーマット(timer系)では日は4桁まで使えます。
時(日付)=@apj,@apel,@apeu,@ap,@Apj,@Apel,@Apeu,@Ap,@0hap,@_hap,@hapz,@hap,@0h,@_h,@hz,@h,@0H,@_H,@Hz,@H
時(時間)=@0dh,@_dh,@dh,@-0dh,@-_dh,@-dh,@0Dh,@_Dh,@Dh,@0h,@_h,@h,@-0h,@-_h,@-h,@0H,@_H,@H
h系は時の数値(Hour)。1?24。大文字の「H」を使うと徹夜日時を表示(overhour)。1〜48。
hap系は午前午後表記の数値(HourAP)。1〜12。
apj系は午前午後徹夜表記。大文字の「A」を使うと徹夜日時を表示(overhour)。36時を過ぎようが徹夜日時の時は「徹夜」と表示される。
ape系はam,pm,al表記。大文字の「A」を使うと徹夜日時を表示(overhour)。末尾「l」で小文字、末尾「u」で大文字。
ap系は午前午後を0,1で。大文字の「A」を使うと午前午後徹夜を0,1,2で。何を言ってるか分からないだろうがoverhourの設定次第では昼の12時だろうが徹夜と表示。
午前午後徹夜は時間フォーマット(timer系)には存在しません。
分(日付)=@0n,@_n,@nz,@n,@0N,@_N,@Nz,@N
分(時間)=@0n,@_n,@n,@-0n,@-_n,@-n,@0N,@_N,@N
n系は分(miNute)。0〜59。
秒(日付)=@0s,@_s,@sz,@s,@0S,@_S,@Sz,@S,@0ls,@_ls,@ls,@0rs,@_rs,@rs,@0Ls,@_Ls,@Ls,@0Rs,@_Rs,@Rs
秒(時間)=@0s,@_s,@s,@-0s,@-_s,@-s,@0S,@_S,@S,@0ls,@_ls,@ls,@-0ls,@-_ls,@-ls,@0Ls,@_Ls,@Ls,@0rs,@_rs,@rs,@-0rs,@-_rs,@-rs,@0Rs,@_Rs,@Rs
s系は秒(Second)。0〜59。
ls系はミリ秒(miLlisecond)。ミリ秒は3桁、0〜999。
rs系はマイクロ秒(micRoSecond)。マイクロ秒は6桁、0〜999999。
@Beat(日付)=@0bti,@_bti,@bti,@0btp,@_btp,@btp,@bt
@Beat(時間)=@0bti,@_bti,@bti,@0btp,@_btp,@btp,@0bt,@_bt,@bt,@-0bti,@-_bti,@-bti,@-0btp,@-_btp,@-btp,@-0bt,@-_bt,@-bt,@0Bti,@_Bti,@Bti,@0Btp,@_Btp,@Btp,@0Bt,@_Bt,@Bt
bt系はビート(Beat)の途中計算。1日の秒数0〜86399(86400)をそのまま表示。本当のビートは86.4秒。
bti系はビートの整数部分(BeatInteger)。0?999。ビートとして使う場合、日本だと時差の指定「diffminute=8」が必要。
btp系はビートの小数部分(BeatPoint)。0?999。ビートとして使う場合、日本だと時差の指定「diffminute=8」が必要。
時間フォーマット(timer系)としてビートを用いる場合時差は関係無し。
正負符号(時間)=@+-,@_-,@--
LTsv_lap_nowがLTsv_goal_nowを通りすぎた、いわゆるタイムオーバーの時はLTsv_lap_nowが負の数に。
@+-はプラスマイナス両方表示。
@_-はプラスの時は空白を表示。
@--はマイナスのみ表示。プラスの時は一文字詰める。
@c(カウンター)=@000c,@00c,@0c,@c
「LTsv_getdaytimestr()」もしくは「LTsv_gettimerstr()」が実行される度にカウンター(LTsv_timerCounter)が加算される。
カウンターの値を変更は「LTsv_settimerCounter()」。
その他エスケープ文字
@T=\t。タブ文字用。
@E=\n。改行文字用。
@Z=\0。文字列長0用。

⑤-0.「LTsv_calc.py」の関数一覧

LTsv/LTsv_calc.py」は電卓フォーマットモジュールです。分数計算を扱います。電卓フォーマットの概要は「⑤-1.電卓フォーマットの概要」を参照。
・「LTsv_calc()」に電卓フォーマットの計算式を渡すと分数が帰ってきます。通分できない分数の場合小数が帰ってきます。
・単体風テストでは複数の電卓フォーマットを用いて関数群の挙動確認ができます。

LTsv_calc_GCM(LTsv_calcL,LTsv_calcR)
最大公約数。
LTsv_calc_LCM(LTsv_calcL,LTsv_calcR)
最小公倍数。
LTsv_calc_bracketsbalance(LTsv_calcQbase)
左右の括弧の数を合わせる。ついでに演算子の整理整頓など。
LTsv_calc_decimalize(LTsv_calcQbase)
分数を小数に。
LTsv_calc_fractalize(LTsv_calcQbase)
小数を分数に。
LTsv_calc(LTsv_calcQbase)
電卓フォーマットを入力すると分数計算。「1/3⇔1|3」と分数に計算。
LTsv_calc自体は主に括弧の正規表現による検索。括弧の内側を「LTsv_calc_function()」に渡す。
電卓フォーマットの概要は「⑤-1.電卓フォーマットの概要」を参照。
LTsv_calc_function(LTsv_calcQbase)
主に数列和・数列積などの計算。「Σ(数列和)」などの左側を「LTsv_calc_addition()」に渡す。
LTsv_calc_addition(LTsv_calcQbase,LTsv_Count)
主に分数の加算減算。分数の積割処理で「LTsv_calc_addition()」を呼び出す。
LTsv_calc_multiplication(LTsv_calcQbase)
主に分数の積(分数の割り算含む)。小数排除処理で「LTsv_calc_fractalize()」呼び出す。

⑤-1.電卓フォーマットの概要

分数「|」と割り算「/」を別物として扱います。分数の入れ子は「2|3|5|7⇔2|105」のように分母にまとめられます。
通常は分数で計算するので「1/3⇔1|3」「1|3*3⇔1」になり一般的な電卓のように「0.999999999999」などにはならない。
分数内で小数が使用可能です。「0.5|3.5⇔1|7」の様に小数が混在してても分数に変換します。
加算「+」減算「-」と区別して表現できます。「1-(-2)」と括弧を使わなくても「1-m2⇔3|1」のようにマイナスで引くといった表現が可能。
数列計算のカウント変数「c」は整数です。初期値は+1で増減は±1です。カウント変数に代入する過程で整数変換が発生するので注意。括弧の内外で別カウントになるので要注意。
「(c+2)(c+1)」のように括弧間の演算子が省略された場合には(c+2)*(c+1)⇔6|1」のように掛け算を適用します。
Pythonには整数有効計算範囲の概念は存在しないはずですが、小数計算ではPythonの実装・環境に応じた丸め誤差などが発生します。
0で割るなどの計算できない場合は無限エラー扱いにして「n|0」と表示します。実際の無限には正負の概念が存在しますが電卓フォーマットの「n|0」は単に計算放棄です。

使用できる数字

012456789 1234567890
アラビア数字は全角でも使用できます。
〇一二三四五六七八九
漢数字も使用できます。大字も「壱弐参肆伍陸漆捌玖零陌阡萬」が使用可能です。
垓京兆億万千百十 銭
漢数字の万単位の繰り上がりも垓までとりあえず対応しています。銭は百分の一になります。

使用できる演算子

. . 小円
小数点は「3.1416⇔3927|1250」の様にドットを使います。「円」は「3円14銭」のような表現用途。
| | 分
分数を表します。分数中の小数は「0.5|3⇔1|6」のように通分されます。
p PpP 正
正の数を表現。符号が付加されてなければ0以上の数です。
m MmM 負
負の数を表現できます。「2-m1⇔3|1」のように負の数で引き算すると加算されます。
+ + 加足和
足し算をします。計算結果は「1|6+1|3⇔1|2」のように通分されます。
- - 減引差
引き算をします。計算結果は「3|4-1|4⇔1|2」のように通分されます。
* × 乗掛積
掛け算をします。計算結果は「2|3*3|4⇔1|2」のように通分されます。
/ /÷ 除割商
割り算をします。計算結果は「2|5/4|5⇔1|2」のように通分されます。
\ \
整数未満を切り捨てる割り算をします。計算結果は「7\3⇔2」のように小数以下は切り捨てられます。
# # 余
割り算の余りを求めます。「3|2#1|3⇔1|6」のように分数も使えます。
L lLl 倍
最小公倍数の計算。負数も絶対値で計算。同じ分母であれば分母を1と見なして無理やり計算。分母が異なる場合「n|0」エラー扱い。
G gGg 約
最大公約数の計算。負数も絶対値で計算。同じ分母であれば分母を1と見なして無理やり計算。分母が異なる場合「n|0」エラー扱い。
% % 率
消費税などの計算用。「10000+8%⇔10800|1」のように「10000×1.08⇔10800|1」と小数計算の手間簡略化。
y π 周
円周率。math.pi(約3.14159265359)が代入される。桁数はおそらくPython環境依存。
e e 底
ネイピア数。math.e(約2.71828182846)が代入される。桁数はおそらくPython環境依存。

括弧および関数用途の演算子

()()
括弧の中を先に計算する「3(c+1)→3×(c+1)→3×(1+1)→3×2」。もしくは数列の表現にも使用。
c CCc 数
数列内で有効なカウント変数。括弧の内外で異なる数列を数えるので注意。初期値は「1」。
S SsSΣ 列但※
数列和。「(cΣ1~5)→1+2+3+4+5」といった等差数列の和を想定。
! ! 方
数列積。「(2!1~4)→2×2×2×2」のような乗数や「(c!1~5)→1×2×3×4×5」のような階乗を想定。
~ ~ ?
数列和(もしくは数列積)の範囲指定。「(cΣ1~4)→1+2+3+4」「(c!4~1)→4×3×2×1」と増減±1の計算は自動。

未実装等で使用できない演算子

n NnN∞ 無
0で割った時など計算"できない"事を表す「n|0」と同じ。本当の無限には正負などがあるが、単純に未定というか計算放棄。
,
「10,800⇔10800|1」とコンマ無しの計算結果を帰します。使用でき無い他の演算子もだいたいコンマ扱いです。
平方根に使う予定の演算子。分数電卓なので無理数などの扱いに困ってる。

⑥-0.「LTsv_joy.py」の関数一覧

LTsv/LTsv_joy.py」はジョイスティック(ゲームPAD)の入力をLTSVに変換するモジュールです。
・WindowsでもPOVをPxPyの2軸として扱います。極座標変換は「LTsv_atanscalar()」と「LTsv_atanclock()」。
・単体風テストでジョイスティック(ゲームPAD)の挙動確認ができます。「LTsv/LTsv_gui.py」でも挙動確認はできます。

LTsv_joyreset(LTsv_tsvpath)
「LTsv_joy.tsv」からモジュールの初期設定を読み込む。詳細は「⑥-1.「LTsv_joy.tsv」のタグ解説」。
LTsv_joyexit()
ジョイスティック(ゲームPAD)の変数初期化です。Linuxではデバイスをクローズします。
LTsv_joyinit(LTsv_tsvpath="LTsv/LTsv_joy.tsv")
ジョイスティック(ゲームPAD)の準備です。Linuxではデバイスをオープンします。
「LTsv_joyinit()」のタイミングでジョイスティック(ゲームPAD)ので個数を受けとる。
0を受け取った場合ジョイスティック(ゲームPAD)を見つけれてない状態。
LTsv_setjoydata(LTsv_joyid,LTsv_default=None)
スティック(axisW/axisL)とボタン(button)の状態を読み込む。
axisリストとbuttonリストのタプルで返り値も受け取れる。
LTsv_getjoystr(LTsv_joyid,joyformat=None)
スティックとボタンの状態をjoyformat縦軸ラベル(first)のrestへLTSVで返す。
LTsv_joyidにはジョイスティック(ゲームPAD)の番号を指定。
項目一覧の詳細は「⑥-2.「LTsv_getjoystr()」のjoyformat縦軸ラベル(first)一覧」。
LTsv_atanscalar(LTsv_atanX,LTsv_atanY)
スティック(axisW/axisL)の直交座標を極座標に変換、スティックの傾きを取得します。
LTsv_atanclock(LTsv_atanX,LTsv_atanY,LTsv_labels)
ラジアン角度円周2πをLTsv_labelsのラベルに置き換え。
ジョイスティック(ゲームPAD)の方角、上下左右東西南北などの表現を想定。
LTsv_joyaxis_label()
Windowsなら「axisW」を返す。Windowsなら「axisL」を返す。
「LTsv_getjoystr()」でどのaxisを取得するべきかの調査用途。

⑥-1.「LTsv_joy.tsv」のタグ解説

LTsv/LTsv_joy.tsv」は「LTsv/LTsv_joy.py」の設定ファイルです。

[LTsv_deviceL|
Linuxのデバイス指定ページ。
joy
Linuxの場合デバイス名(から数字を省いた物)を指定。初期設定は「/dev/input/js」(「/dev/input/js0」を想定)。
[keydefault|
「LTsv_getjoystr()」のLTsv_joykbdformatの初期値設定。
axisL
初期値は「Lx\tLy\t_\tRx\tRy\tPx\tPy」。
axisW
初期値は「Lx\tLy\tRy\tRx\tPx\tPy」。
button
初期値は「X\tY\tA\tB\tC\tZ\tL\tR\tF\tJ\tS\tP」。
C,ZがむしろL1,R1。L,Rが機種によってZL,ZR(L2,R2)。F,JがいわゆるL3,R3。
[keyanother|
「keydefault」の初期値ボツ案などだがボタン配置解説用に温存。
axisUV
Windowsを「dwXpos,dwYpos,dwZpos,dwRpos,dwUpos,dwVpos,dwPOV」固定でも構わなかったけどPOVもLinux同様に2軸にしてすり合わせたかったので直接は使わず。
axisLW
本来こうしたかった例「Lx\tLy\tRy\tRx\tPx\tPy」。でもこれだとZ軸(dwUpos,dwVpos)の扱いが謎に。
axisL7
Linuxドライバのaxis解釈が謎7軸なのは多分こうなるはずだったから予想「Lx\tLy\tLz\tRx\tRy\tRz\tPx\tPy」。そのせいでなのかWindowsとLinuxでaxisにズレが発生する。
axisW8
axisWが実際に6軸取得できる場合LTsv_getjoystr()に渡す配置「Lx\tLy\tRy\tRx\tPx\tPy\tLz\tRz」。Z軸を後付け設計にしたので注意。
buttonN
いわゆる任天堂(3DS)配列風。「X\tY\tA\tB\tL\tR\tZL\tZR\tLC\tRC\tS\tP\tH」。
buttonP
いわゆるソニー(PS4)配列風。「△\t□\t×\t○\tL1\tR1\tL2\tR2\tL3\tR3\tS\tO\tP」。。

⑥-2.「LTsv_getjoystr()」のjoyformat縦軸ラベル(first)一覧

status
axis最大値とボタン最大値。2項目。axis最大値はWindowsとLinuxでズレる場合があります。ループ内省略推奨。
button
ボタンが押されてれば1。押されてなければ0。データ項目はボタンの個数分。WindowsとLinuxで共通。
axisL
Linux版はPOVが2軸扱い。合計6項目の場合でも7項目を返すゲームPADが存在したりするので注意(PxPy軸がズレてる場合がある)。
axisW
Windows版はPOVが1軸扱いですがスクリプト側で2軸に変換。通常6項目。

⑦-0.「LTsv_kbd.py」の関数一覧

LTsv/LTsv_kbd.py」はPCキーボードの入力(マウスのボタン含む)をLTSVに変換するモジュールです。
・ウィンドウがアクティブでない時にもキー入力を取得するので取扱い注意。
・WindowsとLinuxではキーフックの手段が異なるので一部関数「LTsv_kbdEVIOCGRAB()」がOS依存になるので注意。
・仮想キーの番号はWindowsとLinuxで異なるので注意。「LTsv/LTsv_kbd.tsv」で調整。
・「LTsv_kbd.py」単独の単体風テストではPCキーボードの挙動確認は難しい(Windows環境ではターミナルの「GetAsyncKeyState」がWineの外なので拾えない)ので挙動確認は「LTsv/LTsv_gui.py」を使います。

LTsv_kbdcatproc(LTsv_devname)
「cat /proc/bus/input/devices」からLTsv_devnameで検索して「event?」を返す。「?」の部分は数値。
LTsv_kbdreset(LTsv_tsvpath)
[LTsv_kbd.tsv]からモジュールの初期設定や、キーコード($00〜$FF)に名付けたキー名称を読み込む。
LTsv_kbdgettypename(LTsv_code)
キーコード($00〜$FF)をキー名称に変換。ひらがなキー名称は用いない。
LTsv_kbdgettypekana(LTsv_code)
キーコード($00〜$FF)をキー名称に変換。かな入力に用いるキーはひらがなキー名称を取得。
LTsv_kbdgettypecode(LTsv_name)
キー名称をキーコード($00〜$FF)に変換。
LTsv_kbdgettypegana(LTsv_gana)
ひらがなキー名称をキーコード($00〜$FF)に変換。ひらがな以外のキー名称も使用可能。
LTsv_kbdexit()
PCキーボード(マウス含む)の変数初期化です。Linuxではデバイスをクローズします。
LTsv_kbdinit(LTsv_tsvpath="LTsv/LTsv_kbd.tsv",LTsv_initmouse=False)
PCキーボードの準備です。Linuxではデバイスをオープンします。
Linuxで複数のマウスボタンを使う場合LTsv_initmouseで監視許可も出すことが可能です。
マウスボタンの配置は「⑦-1.「LTsv_kbd.tsv」のタグ解説」を参考。
Windowsの場合逆にLTsv_initmouseと関係なくら最初から「MouseL:1\tMouseR:2\tMouseC:4」固定です。
LTsv_kbdEVIOCGRAB(LTsv_grabflag)
※Linux専用命令です。PCキーボードの入力をターミナルやテキストエリアなどに出力しないようにします。
Windowsのキーフックとすり合わせる過程で別の名前になる可能性があります。
漢直とかでPCキーボードのアルファベット入力を漢字出力に置き換える用途です。
LTsv_kbdwrite(LTsv_code,LTsv_press)
※Linux専用命令です。PCキーボードを入力した事にします。
「LTsv_kbdEVIOCGRAB()」実行中は動作しません。
LTsv_kbdwriteCtrl(LTsv_ganastsv)
※Linux専用命令です。「Ctrl」など複数のキーを押しながら入力みたいな動作を再現します。
「LTsv_kbdEVIOCGRAB()」実行中は動作しません。
LTsv_setkbddata(LTsv_kbdstacks,LTsv_mousestacks)
PCキーボードの状態を読み込みます。
LTsv_kbdstacksとLTsv_mousestacksはLinuxでそれぞれのデバイスから一度に読み込む量の指定です。
LTsv_getkbdlabels(kbdformat=LTsv_defkbdformat)
キー名一覧のtsvをLTsv_defkbdformatに渡すとキーの状態を表すLTSVが帰ってくる。
例えば「LTsv_getkbdlabels("MouseL\tMouseR\tMouseC")」とすると「MouseL:0\nMouseR:0\nMouseC:0」とかが帰ってくる。
LTsv_getkbdnames()
押されたPCキーボードのキー名称を返す。キーコード($00〜$FF)にキー名称が付けられる必要がある。
LTsv_getkbdcodes()
押されたPCキーボードのキーコード($00〜$FF)を返す。
LTsv_getkbdkanas()
押されたPCキーボードのかな文字を返す。かな以外だと押されたPCキーボードのキーコード($00〜$FF)を返す。

⑦-1.「LTsv_kbd.tsv」のタグ解説

LTsv/LTsv_kbd.tsv」は「LTsv/LTsv_kbd.py」の設定ファイルです。

[LTsv_deviceL|
Linuxのデバイス指定。
kbd
初期設定は「/dev/input/event?」。
万が一「LTsv_kbdreset()」内の「LTsv_kbdcatproc()」でデバイスを検出できない場合は直接指定。
mouse
初期想定は「/dev/input/event?」。
万が一「LTsv_kbdreset()」内の「LTsv_kbdcatproc()」でデバイスを検出できない場合は直接指定。
[LTsv_mouse_EV_KEY|
※Linux専用。マウスボタンなどの入力をWindowsのGetAsyncKeyStateの1,2,4みたいにキーコード($00〜$FF)風に処理するための仮想キーコードの設定。
[LTsv_EV_REL|
マウスホイールなどの入力を処理する予定だった設定枠(未実装)。
[LTsv_EV_ABS|
その他アナログな入力を処理する予定だった設定枠(未定)。
[LTsv_typenameW|
Windowsの「キー名称:キーコード($00〜$FF)」の組み合わせを記述。
だがWineとWindows実機でGetAsyncKeyStateの返り値が違う様子。
※この項目はページ全体がLTSVです。
[WineVK|
Wineで得られる「キー名称:キーコード($00〜$FF)」の組み合わせ解説用。PCキーボードの種類によって変化する怖れ。
※この項目はページ全体がLTSVです。
[WindowsVK|
Windowsの仮想キーで「キー名称:キーコード($00〜$FF)」の組み合わせ確認用。
※この項目はページ全体がLTSVです。
[LTsv_typenameL|
Linuxの「キー名称:キーコード($00〜$FF)」の組み合わせを記述。PCキーボードの種類によって変化する怖れ。
※この項目はページ全体がLTSVです。
[LTsv_typegana|
Windows仮想キーの「キー名称:キーコード($00〜$FF)」の組み合わせ保存用。PCキーボードの種類によって変化する怖れ。
※この項目はページ全体がLTSVです。
[LTsv_keydefault|
「LTsv_getkbdlabels()」のkbdformat初期値。
※この項目はページ全体がLTSVです。

⑧-0.「LTsv_gui.py」の関数一覧

LTsv/LTsv_gui.py」はウィンドウなどGUIオブジェクト(widget)を設置するモジュールです。
・環境次第では「GTK2」と「Tkinter」が選べるはずですがPuppyLinuxでは「GTK2」Windows環境では「Tkinter」です。
・「canvas」の描画高速化のため「LTsv_draw_*_shell(LTsv_GUI)」で関数オブジェクトを用意する手続き推奨。
・「LTsv_window_main()」実行前に「print()」「LTsv_libc_printf()」などターミナル(stdout)系命令が実行されるとGUIが表示されない場合があります。
・「LTsv_window_main()」実行後はGUIオブジェクト(widget)のイベント(「LTsv_window_after()」の様なタイマー系含む)が発生するまでPythonスクリプトが停止するので注意。
・「LTsv_」を付加してないローカル変数が多々あるので変数名の衝突が心配。
・「LTsv_widgetPAGE」はほぼ「LTsv_widget_newUUID()」で生成するユニークIDっぽいIDの事。
・通知タスクトレイ(Notify)関連は「Tkinter」で使えないので注意。他にも「Tkinter」で動かない命令はいくつか存在。
・単体風テストではGUIオブジェクト(widget)はもちろん、PCキーボードやジョイスティック(ゲームPAD)、日時フォーマットや電卓フォーマットなどの挙動確認もできます。

LTsv_guiCDLLver(LTsv_libname,LTsv_libvermin,LTsv_libvermax)
「LTsv_guiinit()」で使う「libgtk-x11-2.0.so.?」などの「?」のバージョン番号部分を探索。
LTsv_guiinit(LTsv_guistyle=LTsv_GUI_GTK2,LTsv_libvermin=0,LTsv_libvermax=0)
どのGUIを使うか(「Tkinter」と「GTK2」の選択)を決定。 LTsv_guistyleでUI指定できるがPuppyLinuxだと強制的に「GTK2」。
Windowsだと今の所「Tkinter」。「WinAPI」はほぼ未実装。
「LTsv_libvermin」「LTsv_libvermax」でDLLバージョン違いの探索範囲指定。
LTsv_global_GUI()
「LTsv_GUI」の値(「Tkinter」「GTK2」どちらか)を取得。
LTsv_global_Notify()
「LTsv_Notify」の値(「WinAPI」「GTK2」どちらか)を取得。
「Tkinter」に通知タスクトレイ(Notify)が存在しないので暫定的に「WinAPI」で対応。
LTsv_global_GTK2()
「LTsv_GUI_GTK2」の値"GTK2"を取得。「LTsv_guiinit()」の返り値判定用。
LTsv_global_Tkinter()
「LTsv_GUI_Tkinter」の値"Tkinter"を取得。「LTsv_guiinit()」の返り値判定用。
LTsv_global_WinAPI()
「LTsv_GUI_WinAPI」の値"WinAPI"を取得。「LTsv_guiinit()」の返り値判定用。
LTsv_global_libgtk()
「LTsv_libgtk」の値取得。「ctypes.CDLL("libgtk-x11-2.0.so.0")」あたりが帰ってくると思う。
LTsv_global_libgdk()
「LTsv_libgdk」の値取得。「ctypes.CDLL("libgdk-x11-2.0.so.0")」あたりが帰ってくると思う。
LTsv_global_libobj()
「LTsv_libobj」の値取得。「ctypes.CDLL("libgobject-2.0.so.0")」あたりが帰ってくると思う。
LTsv_global_canvasmotionZ()
マウスはどの「canvas」上に存在しているのかを取得。
LTsv_global_canvasmotionX(motionZ=None)
「canvas」上のマウスのX座標(横)を取得。canvas外なら-1。
motionZを指定しないと隣接してる「canvas」間を移動する際に正しくない値を拾う場合がある。
LTsv_global_canvasmotionY(motionZ=None)
「canvas」上のマウスのY座標(縦)を取得。canvas外なら-1。
motionZを指定しないと隣接してる「canvas」間を移動する際に正しくない値を拾う場合がある。
LTsv_global_canvascolor()
「canvas」に設定した描画色を取得。
LTsv_global_canvasbgcolor()
「canvas」に設定した背景色を取得。
LTsv_global_canvasTAG(TkinterTAG=None)
「canvas」に設定した描画タグを取得。もしくは変更。
LTsv_global_widgetltsv(new_LTSV=None)
GUIオブジェクト(widget)を管理している「L:Tsv」を取得。もしくは直接書き換え。
LTsv_global_widgetgetpage(LTsv_widgetPAGENAME)
widgetを管理している「L:Tsv」からwidgetのページを取得。
LTsv_global_widgetOBJ(LTsv_objid)
GUIオブジェクト(widget)などテキスト化できないオブジェクトは番号で管理していて、LTsv_objid暗号でオブジェクトを取得。
LTsv_global_pictureOBJ(LTsv_objid)
LTsv_objid暗号で画像オブジェクトを取得。
LTsv_global_pictureW(LTsv_objid)
画像オブジェクトの横幅を取得。
LTsv_global_pictureH(LTsv_objid)
画像オブジェクトの縦幅を取得。
LTsv_global_iconOBJ(LTsv_objid)
WindowsのアイコンIDを取得。
LTsv_global_popupmenuOBJ(LTsv_objid)
ポップアップメニューのオブジェクトを取得。
LTsv_widget_newUUID(LTsv_widgetID=None)
GUIオブジェクト(widget)管理用にユニークIDを発行する。
「uuid.uuid4()」と「str(time.time())」の組み合わせ。1秒未満以内に122bitの乱数が重複する事はほぼないと思うが重複する確率は理論上ゼロではないので注意。
LTsv_widgetIDにFalseを指定することで前回と同じIDを再発行できる。コールバック関数に自身のIDを渡す必要がある場合に必要。
LTsv_widget_newobj(LTsv_widgetPAGE,LTsv_widgetoption,widget_obj)
「LTsv_widgetPAGEXYWH()」のオブジェクト管理で番号が被らないようにするカウンター。
LTsv_widget_getobj(LTsv_widgetPAGE,LTsv_widgetoption)
「LTsv_widget_newobj()」で登録したオブジェクトを直接IDで吸い出す関数。
LTsv_widgetPAGEXYWH(LTsv_widgetPAGE,widget_o=None,widget_k=None,widget_t=None,widget_u=None,widget_s=None,widget_e=None,widget_a=None,widget_v=None,widget_b=None, widget_p=None,widget_m=None,widget_g=None,widget_f=None,widget_x=None,widget_y=None,widget_w=None,widget_h=None,widget_c=None, event_z=None,event_k=None,event_y=None,event_b=None,event_p=None,event_r=None,event_e=None,event_m=None,event_l=None,event_a=None,event_u=None, menu_o=None,menu_b=None,menu_c=None,dialog_t=None,dialog_c=None)
詳細は「⑧-1.「LTsv_widgetPAGEXYWH()」のオプション一覧」参考。
LTsv_fonttuple(LTsv_line)
「Tkinter」のフォント指定はタプルなので、例えばCSV「"kan5x5comic,10"」なら「(kan5x5comic,10)」のようにタプルに変換。
LTsv_GTKwidget_fixed(window_c,widget_o,widget_x,widget_y,widget_w,widget_h,widget_f=None,widget_d=False)
「GTK2」のコンテナを「gtk_fixed_put」にしてフォントも「gtk_widget_modify_font」で指定する。
widget_dは「gtk_bin_get_child」が要求される場合の分岐。
LTsv_hideondelete_shell(LTsv_windowPAGENAME=None)
ウィンドウの閉じるボタンを押してもプログラム続行するようにする関数の取得。
LTsv_window_new(widget_n=None,event_b=None,widget_t="LTsv_window",widget_w=200,widget_h=120,event_z=None,event_k=None,event_y=None)
「window」オブジェクトを作成。widget_tにウィンドウのタイトル。
widget_w,widget_hにウィンドウサイズ(最小値)。event_zにコールバック関数登録で同時にリサイズの許可。
event_bはウィンドウを閉じた時にコールバック関数を呼ぶ場合指定。コールバック先で必ず「LTsv_window_exit()」を使う。
event_k,event_yはキーボード入力時(event_kが押した時event_yが離した時)のコールバック関数。
LTsv_widget_settext(LTsv_widgetPAGENAME,widget_t="")
GUIオブジェクト(widget)の文字列を設定。
LTsv_widget_gettext(LTsv_widgetPAGENAME)
GUIオブジェクト(widget)の文字列を取得。
ウィンドウのタイトル取得には「LTsv_window_title(LTsv_window_id)」という別解もある。
LTsv_widget_setnumber(LTsv_widgetPAGENAME,widget_s=0)
GUIオブジェクト(widget)の数値を設定。
LTsv_widget_getnumber(LTsv_widgetPAGENAME)
GUIオブジェクト(widget)の数値を取得。
LTsv_widget_seturi(LTsv_widgetPAGENAME,widget_u="")
GUIオブジェクト(widget)のURIを設定。
LTsv_widget_geturi(LTsv_widgetPAGENAME)
GUIオブジェクト(widget)のURIを取得。
LTsv_widget_showhide(LTsv_widgetPAGENAME,widget_i)
GUIオブジェクト(widget)の表示非表示の設定。
「Tkinter」のGUIオブジェクト(widget)非表示オプション未確認。
LTsv_widget_disableenable(LTsv_widgetPAGENAME,widget_i)
GUIオブジェクト(widget)の無効有効の設定。
LTsv_widget_focus(LTsv_widgetPAGENAME)
GUIオブジェクト(widget)にフォーカスする(「edit」「entry」「spin」などにカーソルを合わせる)。
LTsv_window_main(LTsv_windowPAGENAME)
GUIオブジェクト(widget)のイベント発生(コールバック)待機。スクリプトはここで一旦停止。
「LTsv_window_main()」の直後にもやる事ある場合「LTsv_window_after()」を使う。
「LTsv_guiinit()」から「LTsv_window_main()」の途中に「print()」「LTsv_libc_printf()」などコンソール系命令が挟まってるとGUIが起動しないので注意。
LTsv_window_after(LTsv_windowPAGENAME,event_b=None,event_i="mousemotion",event_w=1000)
タイマーの設定。「LTsv_window_main()」から一時的に抜け出す手段の一つ。
event_bにコールバックする関数の指定。Noneの場合何もしない。
event_iでタグの指定。タイマーは複数設置できるのでタグで管理。
event_tでタイマーイベント発生のミリ秒の指定。
LTsv_window_foreground()
アクティブウィンドウのIDを取得する。
ターミナルから起動した場合でもターミナルは別ウィンドウ。
LTsv_window_title(LTsv_window_id)
「LTsv_window_foreground()」で取得したウィンドウIDからタイトルを取得する。
通常使用の「LTsv_widget_gettext()」とは事なり別アプリのウィンドウからもタイトル取得できる。
LTsv_window_exit(window_objvoid=None,window_objptr=None)
スクリプトを終了する。
ウィンドウを閉じる時のコールバック関数を指定(LTsv_window_newにevent_b)してる場合そのコールバック先の関数の最後に設定。
LTsv_window_none(window_objvoid=None,window_objptr=None)
何もしない。Pythonのpassみたいな使い方想定。
LTsv_screen_w(LTsv_windowPAGENAME="")
ディスプレイの縦サイズ。
「Tkinter」ではルートウィンドウが設置されてからでないと「winfo_vrootwidth()」が使えないので注意(代わりに-1を返します)。
LTsv_screen_h(LTsv_windowPAGENAME="")
ディスプレイの横サイズ。
「Tkinter」ではルートウィンドウが設置されてからでないと「winfo_vrootheight()」が使えないので注意(代わりに-1を返します)。
LTsv_window_wh(LTsv_windowPAGENAME)
ウィンドウの縦サイズ横サイズをタプルで取得。
LTsv_window_w(LTsv_windowPAGENAME)
ウィンドウの横サイズを数値で取得。
LTsv_window_h(LTsv_windowPAGENAME)
ウィンドウの縦サイズを数値で取得。
LTsv_window_resize(LTsv_windowPAGENAME,widget_w=16,widget_h=16)
「window」のリサイズ。
LTsv_label_new(LTsv_windowPAGENAME,widget_n=None,widget_t="LTsv_label",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None)
「label」オブジェクトを作成。テキストを表示。widget_tにラベルで表示するテキスト。
widget_fはCSVで「widget_f="kan5x5comic,10"」のようにフォント指定。「LTsv_fonttuple()」も参考。
LTsv_image_new(LTsv_windowPAGENAME,widget_n=None,widget_u="LTsv_logo.png",widget_x=0,widget_y=0)
「image」オブジェクトを作成。画像を表示。widget_uに画像のファイルパス。
「LTsv_image_new()」は「LTsv_label_new()」と違ってwidget_w,widget_hによるオブジェクトの大きさ指定は無く、widget_x,widget_yによる表示位置座標のみ。
LTsv_button_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_button",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None)
「button」オブジェクトを作成。ボタンを押すとevent_bをコールバック。widget_tにボタンに表示するテキスト。
LTsv_check_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_check",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None)
「check」オブジェクトを作成。チェックマークをONOFFするとevent_bをコールバック。widget_tにラベルに表示するテキスト。
LTsv_radio_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_radio",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None)
「radio」オブジェクトを作成。ラジオボタンを選択するとevent_bをコールバック。widget_tにラベルに表示するテキスト。「LTsv_radio_new()」を連続して呼び出すと自動でラジオボタングループ(選択肢)として動作。
「LTsv_widget_getnumber()」で選択肢の取得。「LTsv_widget_setnumber()」で選択肢の変更。
GTKの場合チェックマークのONOFFと同じ理屈なのか2回分のコールバックが発生。
「Tkinter」の場合「LTsv_widget_setnumber()」でラジオボタンの個数を越える値も通るので注意。
LTsv_clipboard_new(LTsv_windowPAGENAME,widget_n=None)
「clipboard」を作成。クリップボードを用いたテキスト入力(コピペ補助)。
「LTsv_widget_settext()」「LTsv_widget_gettext()」でテキスト交換。
LTsv_clipmenu_new(widget_o)
「Tkinter」専用の内部関数。「edit」「entry」「spin」の右クリックメニュー(コピペ補助)を作成。
LTsv_edit_new(LTsv_windowPAGENAME,widget_n=None,widget_t="LTsv_edit",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None)
「edit」オブジェクトを作成。テキスト複数行入力欄。widget_tに初期値テキスト。
LTsv_entry_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_entry",widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None)
「edit」オブジェクトを作成。テキスト1行入力欄入力欄。widget_tに初期値テキスト。
テキスト変更後エンターキーでevent_bをコールバック。
LTsv_spin_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_s=0,widget_e=255,widget_a=1,widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None)
「spin」オブジェクトを作成。数値入力。数値変更でevent_bをコールバック。
LTsv_scale_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_s=0,widget_e=255,widget_a=1,widget_x=0,widget_y=0,widget_w=16,widget_h=16)
「scale」オブジェクトを作成。数値調節。数値変更でevent_bをコールバック。
「GTK2」と「Tkinter」で数値表示の位置というかデザインが異なるので注意。
LTsv_scale_adjustment(LTsv_widgetPAGENAME,widget_s=0,widget_e=255,widget_a=1)
「spin」「scale」の範囲を変更。
widget_s,widget_eで数値の範囲、widget_aで増減量の指定。
LTsv_combobox_list(LTsv_widgetPAGENAME,widget_t="")
「combobox」の項目を変更。widget_tに項目一覧をテキスト複数行で設定。
LTsv_combobox_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_x=0,widget_y=0,widget_w=16,widget_h=16,widget_f=None)
「combobox」オブジェクトを作成。「GTK2」のみ。
項目変更でevent_bをコールバック。
「Tkinter」版tkkなので未実装。
LTsv_canvas_new(LTsv_windowPAGENAME,widget_n=None,widget_x=0,widget_y=0,widget_w=16,widget_h=16,event_p=None,event_r=None,event_e=None,event_m=None,event_l=None,event_w=100)
「canvas」オブジェクトを作成。画像やテキストの描画。マウスジェスチャーでコールバック発生。任意のGUIを作れるはず。
event_pはマウス押下時のコールバック。event_rはマウス押上時のコールバック。
event_eはマウスポインタが「canvas」枠内に入ったのコールバック。event_lはマウスポインタが「canvas」枠外に出た時のコールバック。
event_mはマウスポインタが「canvas」枠内滞在中event_wミリ秒毎に発生する。マウスを動かしてなくてもevent_mにコールバックするので注意。
「GTK2」だとラスタ(ドット絵)形式「Tkinter」だとベクター(クリップアートやFlash)形式の違いがあります。
LTsv_drawGTK_selcanvas(LTsv_canvasPAGENAME,draw_g="LTsv_draw_tkTAG")
描画先「canvas」の指定。
「GTK2」の場合描画図形に添付するタグ「LTsv_draw_tkTAG」は不要。「LTsv_draw_selcanvas_shell()」の互換性で存在。
LTsv_drawTkinter_selcanvas(LTsv_canvasPAGENAME,draw_g="LTsv_draw_tkTAG")
描画先「canvas」の指定。
「Tkinter」の場合描画図形に添付するタグ「LTsv_draw_tkTAG」も指定できる。
LTsv_draw_selcanvas_shell(LTsv_GUI)
「LTsv_drawGTK_selcanvas()」か「LTsv_drawTkinter_selcanvas()」の関数取得。
「LTsv_draw_selcanvas=LTsv_draw_selcanvas_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_delete(draw_c="white")
「canvas」に描画した図形の消去。
「GTK2」だと長方形を上描き描画して図形を消去する(塗りつぶす)。
LTsv_drawTkinter_delete(draw_c="white")
「canvas」に描画した図形の消去。
「Tkinter」ではタグ(初期値は「LTsv_draw_tkTAG」)が付けられた図形を消去する(消去のみで塗りつぶすわけではない)。
LTsv_draw_delete_shell(LTsv_GUI)
「LTsv_drawGTK_delete()」か「LTsv_drawTkinter_delete()」の関数取得。
「LTsv_draw_delete=LTsv_draw_delete_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawTkinter_deleteTAG(TkinterTAG=None)
「canvas」に描画した図形の消去。「Tkinter」で特定のタグ付けられた図形を消去する。
LTsv_draw_deleteTAG_shell(LTsv_GUI)
「LTsv_drawTkinter_delete()」の関数取得。
「LTsv_drawGTK_delete()」は存在しないが文法上「LTsv_draw_deleteTAG_shell()」が存在。
LTsv_drawGTK_color(draw_c="")
「LTsv_drawGTK_delete()」か「LTsv_drawTkinter_delete()」の関数取得。
「LTsv_draw_delete=LTsv_draw_delete_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawTkinter_color(draw_c="")
「canvas」描画色指定。
LTsv_draw_color_shell(LTsv_GUI)
「canvas」描画色指定。
LTsv_drawGTK_bgcolor(draw_c="")
「canvas」背景色指定。グリフ穴空けなどの図形消去に使う色指定。
LTsv_drawTkinter_bgcolor(draw_c="")
「canvas」背景色指定。グリフ穴空けなどの図形消去に使う色指定。
LTsv_draw_bgcolor_shell(LTsv_GUI)
「LTsv_drawGTK_bgcolor()」か「LTsv_drawTkinter_bgcolor()」の関数取得。
「LTsv_draw_bgcolor=LTsv_draw_bgcolor_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_polygon(*draw_xy)
「canvas」にポリゴン(ワイヤフレーム)の描画。座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_polygon(*draw_xy)
「canvas」にポリゴン(ワイヤフレーム)の描画。座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_polygon_shell(LTsv_GUI)
「LTsv_drawGTK_polygon()」か「LTsv_drawTkinter_polygon()」の関数取得。
「LTsv_draw_polygon=LTsv_draw_polygon_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_polygonfill(*draw_xy)
「canvas」にポリゴン(塗り潰し)の描画。頂点座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_polygonfill(*draw_xy)
「canvas」にポリゴン(塗り潰し)の描画。頂点座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_polygonfill_shell(LTsv_GUI)
「LTsv_drawGTK_polygonfill()」か「LTsv_drawTkinter_polygonfill()」の関数取得。
「LTsv_draw_polygonfill=LTsv_draw_polygonfill_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_squares(draw_wh=16,*draw_xy)
「canvas」に正方形(ワイヤフレーム)を描画。draw_whは円で例えると半径のサイズ。
中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_squares(draw_wh=16,*draw_xy)
「canvas」に正方形(ワイヤフレーム)を描画。draw_whは円で例えると半径のサイズ。

中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_squares_shell(LTsv_GUI)
「LTsv_drawGTK_squares()」か「LTsv_drawTkinter_squares()」の関数取得。
「LTsv_draw_squares=LTsv_draw_squares_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_squaresfill(draw_wh=16,*draw_xy)
「canvas」に正方形(塗り潰し)を描画。draw_whは円で例えると半径のサイズ。
中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_squaresfill(draw_wh=16,*draw_xy)
「canvas」に正方形(塗り潰し)を描画。draw_whは円で例えると半径のサイズ。
中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_squaresfill_shell(LTsv_GUI)
「LTsv_drawGTK_squaresfill()」か「LTsv_drawTkinter_squaresfill()」の関数取得。
「LTsv_draw_squaresfill=LTsv_draw_squaresfill_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_circles(draw_wh=16,*draw_xy)
「canvas」に円(ワイヤフレーム)を描画。draw_whに円の半径サイズ。中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_circles(draw_wh=16,*draw_xy)
「canvas」に円(ワイヤフレーム)を描画。draw_whに円の半径サイズ。中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_circles_shell(LTsv_GUI)
「LTsv_drawGTK_circles()」か「LTsv_draw_circles_shell()」の関数取得。
「LTsv_draw_circles=LTsv_draw_circles_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_circlesfill(draw_wh=16,*draw_xy)
「canvas」に円(塗り潰し)を描画。draw_whに円の半径サイズ。中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_circlesfill(draw_wh=16,*draw_xy)
「canvas」に円(塗り潰し)を描画。draw_whに円の半径サイズ。中心座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_circlesfill_shell(LTsv_GUI)
「LTsv_drawGTKfill_circles()」か「LTsv_draw_circlesfillfill_shell()」の関数取得。
「LTsv_draw_circlesfill=LTsv_draw_circlesfill_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_points(*draw_xy)
「canvas」に点を描画。座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_drawTkinter_points(*draw_xy)
「canvas」に点(短線)を描画。座標はX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_draw_points_shell(LTsv_GUI)
「LTsv_drawGTK_points()」か「LTsv_drawTkinter_points()」の関数取得。
「LTsv_draw_points=LTsv_draw_points_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_arc(draw_x,draw_y,draw_w,draw_h,draw_s=-math.pi,draw_e=math.pi)
「canvas」に弧(円周のみ)を描画。「arc」の挙動が「GTK2」と「Tkinter」で事なる。
楕円に外接する長方形の左上座標がdraw_x,draw_y。長方形のサイズがdraw_w,draw_h。
draw_sが弧の開始角度。draw_eは開始位置からの相対角度。角度の単位はラジアン(2π)。
LTsv_drawTkinter_arc(draw_x,draw_y,draw_w,draw_h,draw_s=-math.pi,draw_e=math.pi)
「canvas」に扇(半径含む)を描画。「arc」の挙動が「GTK2」と「Tkinter」で事なる。
円に外接する長方形の左上座標がdraw_x,draw_y。長方形のサイズがdraw_w,draw_h。
draw_sが弧の開始角度。draw_eは開始位置からの相対角度。角度の単位はラジアン(2π)。
LTsv_draw_arc_shell(LTsv_GUI)
「LTsv_drawGTK_arc()」か「LTsv_drawTkinter_arc()」の関数取得。
「LTsv_draw_arc=LTsv_draw_arc_shell(LTsv_GUI)」の様に文法上プラットフォーム間差異吸収しても挙動が異なるので注意。
LTsv_drawGTK_arcfill(draw_x,draw_y,draw_w,draw_h,draw_s=-math.pi,draw_e=math.pi)
「canvas」に弧(塗り潰し)を描画。結果的に「GTK2」と「Tkinter」がほぼ同じ挙動。
楕円に外接する長方形の左上座標がdraw_x,draw_y。長方形のサイズがdraw_w,draw_h。
draw_sが弧の開始角度。draw_eは開始位置からの相対角度。角度の単位はラジアン(2π)。
LTsv_drawTkinter_arcfill(draw_x,draw_y,draw_w,draw_h,draw_s=-math.pi,draw_e=math.pi)
「canvas」に扇(塗り潰し)を描画。結果的に「GTK2」と「Tkinter」がほぼ同じ挙動。
楕円に外接する長方形の左上座標がdraw_x,draw_y。長方形のサイズがdraw_w,draw_h。
draw_sが弧の開始角度。draw_eは開始位置からの相対角度。角度の単位はラジアン(2π)。
LTsv_draw_arcfill_shell(LTsv_GUI)
「LTsv_drawGTK_arcfill()」か「LTsv_drawTkinter_arcfill()」の関数取得。
「LTsv_draw_arcfill=LTsv_draw_arcfill_shell(LTsv_GUI)」の様に文法上プラットフォーム間差異吸収しても挙動が異なるので注意。
LTsv_drawGTK_font(draw_f="")
「canvas」のフォント指定。widget_fにCSVで「widget_f="kan5x5comic,10"」のようにフォント指定。
「LTsv_fonttuple()」も参考。
LTsv_drawTkinter_font(draw_f=None)
「canvas」のフォント指定。widget_fにCSVで「widget_f="kan5x5comic,10"」のようにフォント指定。
「LTsv_fonttuple()」も参考。
LTsv_draw_font_shell(LTsv_GUI)
「LTsv_drawGTK_font()」か「LTsv_drawTkinter_font()」の関数取得。
「LTsv_draw_font=LTsv_draw_font_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_drawGTK_text(draw_t="",draw_x=0,draw_y=0)
「canvas」にフォントでテキストを描画。draw_tに文字列。左上座標はdraw_x,draw_y。
グリフでのテキスト描画は「⑨-0.「LTsv_glyph.py」の関数一覧」を参考。
LTsv_drawTkinter_text(draw_t="",draw_x=0,draw_y=0)
「canvas」にフォントでテキストを描画。draw_tに文字列。左上座標はdraw_x,draw_y。
「Tkinter」には「CP932(いわゆるシフトJIS、BMP基本多言語面0xffff範囲内)」の制限があるのでグリフでのテキスト描画「⑨-0.「LTsv_glyph.py」の関数一覧」も参考。
LTsv_draw_text_shell(LTsv_GUI)
「LTsv_drawGTK_text()」か「LTsv_drawTkinter_text()」の関数取得。
「LTsv_draw_text=LTsv_draw_text_shell(LTsv_GUI)」の様にプラットフォーム間差異吸収に使う。
LTsv_draw_picture_load(LTsv_picturepath)
「canvas」用の画像を読み込む。LTsv_picturepathはローカルの画像ファイルのパス。
GUIオブジェクト(widget)の「image」とは別腹。
「Tkinter」では先に「LTsv_canvas_new()」で「canvas」を作って置く必要がある。
LTsv_draw_picture_celldiv(LTsv_picturepath,picture_divw,picture_divh)
「LTsv_draw_picture_load()」で読み込んだ(読み込んでなければ読み込む)画像を分割して「filepath[num]」の様に番号を付けることができる。
「GTK2」でのみ実装。
LTsv_draw_picture_save(LTsv_pictureoldpath,LTsv_picturenewpath)
「LTsv_draw_picture_celdiv()」で分割した、あるいは分割前の「LTsv_draw_picture_load()」読み込んだ画像を保存。png推奨。
「GTK2」でのみ実装。
LTsv_draw_canvas_save(LTsv_canvasPAGENAME,LTsv_picturenewpath)
「canvas」を画像保存。png推奨。
「GTK2」でのみ実装。
LTsv_drawGTK_picture(LTsv_picturepath,draw_x=0,draw_y=0)
「canvas」に「LTsv_draw_picture_load()」で読み込んだ(「LTsv_draw_picture_celdiv()」で分割した)画像を描画。
LTsv_picturepathは「LTsv_draw_picture_load(LTsv_picturepath)」と同じパス(LTsv_draw_picture_celldiv()の場合「filepath[num]」の添字num数値は分割数範囲内)。左上座標はdraw_x,draw_y。
LTsv_drawTkinter_picture(LTsv_picturepath,draw_x=0,draw_y=0)
「canvas」に「LTsv_draw_picture_load()」で読み込んだ画像を描画。
LTsv_picturepathは「LTsv_draw_picture_load(LTsv_picturepath)」と同じパス。左上座標はdraw_x,draw_y。
LTsv_draw_picture_shell(LTsv_GUI)
「LTsv_drawGTK_picture()」か「LTsv_drawTkinter_picture()」の関数取得。
「LTsv_draw_picture=LTsv_draw_picture_shell(LTsv_GUI)」の様に文法上プラットフォーム間差異吸収しても挙動が異なるので注意。
LTsv_drawGTK_queue()
「canvas」の描画更新をする。描画更新を通知しないと描画が「window」に反映されません。「GTK2」でのみ必要。
LTsv_drawTkinter_queue()
「Tkinter」の「canvas」は描画更新を自動で行うのでこの関数は何もしません。文法上の都合で存在。
LTsv_draw_queue_shell(LTsv_GUI)
「LTsv_drawGTK_queue()」か「LTsv_drawTkinter_queue()」の関数取得。
「LTsv_draw_queue=LTsv_draw_queue_shell(LTsv_GUI)」の様に文法上プラットフォーム間差異吸収しても挙動が異なるので注意。
LTsv_clockwise(*draw_xy)
ポリゴンが時計回りなら正数、反時計回りなら負数、判定できない場合0のカウントを返す。
時計回りの判定は簡易的(外積による角度のみの計算で面積無視)なので8の字にねじった形状や十字手裏剣のような凹みのある形状を扱う場合注意。
座標は「LTsv_draw_polygon」系と同じくX座標とY座標が交互に来るタプル(x,y,x,y…)。
LTsv_icon_load(LTsv_picturepath)
通知タスクトレイ(Notify)に使うアイコン「*.ico」またはアイコンDLL「*.icl」を読込。
1つのファイルに複数のアイコンを認識できた場合「filepath[num]」の様に番号が添付される。
「WinAPI」でのみ実装(「Tkinter」でもWindowsなら「WinAPI」で対応)。「canvas」用途の画像とは別に管理。
LTsv_notifyicon_new(LTsv_windowPAGENAME,notify_n=None,widget_t="",widget_u="",menu_b=None,menu_c=None)
通知タスクトレイ(Notify)の作成。
「GTK2」ではポップアップメニュー表示を実装できたが、「Tkinter」で「WinAPI」のイベントを拾う方法が不明なのでポップアップメニューが開けない。
widget_tはツールチップテキスト。
widget_uはアイコンのURI(ファイルパス)。「GTK2」では「LTsv_draw_picture_load()」、「WinAPI」では「LTsv_icon_load()」を呼び出す。
menu_bに「yield ("window exit",LTsv_window_exit_cbk)」のようなイテレータ生成関数を送るとポップアップメニューを作成。
menu_cにポップアップメニューとは別途1クリック実行するコールバック関数を指定。
LTsv_filedialog_new(LTsv_windowPAGENAME,widget_n=None,event_b=None,widget_t="LTsv_filedialog",dialog_t=0)
ファイルダイアログ「filedialog」の作成。widget_tにダイアログウィンドウ用のテキスト。
dialog_tでダイアログの種類。偶数ならOpen、奇数ならSave、2未満ならファイル、2以上ならフォルダ。
ダイアログウィンドウを表示するときは「LTsv_widget_showhide(kanedit_filedialog,True)」。
ボタンを押すとevent_bをコールバック。コールバック先で「LTsv_widget_showhide(kanedit_filedialog,False)」してダイアログウィンドウを閉じる必要。
キャンセルが実装されてないので注意。
debug_canvas(window_objvoid=None,window_objptr=None)
単体風テスト専用。「LTsv_window_after()」を使って「debug_canvas()」自身をループ。
日時表示の更新や「canvas」の描き替えをしてる。
debug_timebutton(callback_void=None,callback_ptr=None)
単体風テスト専用。reset「button」が押されたら日時フォーマットの初期化。
debug_calc(callback_void=None,callback_ptr=None)
単体風テスト専用。電卓の「entry」が書き換えた(Enterキー押下した)ら電卓フォーマットで演算。
debug_polygonpoints(callback_void=None,callback_ptr=None)
単体風テスト専用。描画テスト用ポリゴンの頂点がX座標とY座標が交互に来るタプル(x,y,x,y…)になってるか確認して奇数なら偶数に減らして揃える。
debug_polygonbutton(callback_void=None,callback_ptr=None)
単体風テスト専用。描画テスト用ポリゴンの頂点削除。
debug_activewindow(callback_void=None,callback_ptr=None)
単体風テスト専用。アクティブウィンドウのID取得テスト。
debug_canvas_press(callback_void=None,callback_ptr=None)
単体風テスト専用。「canvas」マウス押下のコールバック。
debug_color_scale(window_objvoid=None,window_objptr=None)
単体風テスト専用。「scale」で描画テスト用ポリゴンの色変更。
debug_color_combo(window_objvoid=None,window_objptr=None)
単体風テスト専用。「combobox」で描画テスト用ポリゴンの色変更…みたいなのを想定。未実装。「Tkinter」では機能しない。
debug_edit_clip(window_objvoid=None,window_objptr=None)
単体風テスト専用。クリップボード「clipboard」の動作確認。
debug_checkbutton_shell(checkNumber)
単体風テスト専用。「check」のコールバック用関数の例。「radio」と比較用途。
同じような動作をするGUIオブジェクト(widget)を複数連続で作る場合、関数をネストして関数自体を返り値にする関数を使います(クロージャ・関数閉包・高階関数…呼び名は色々)。
debug_radiobutton_shell(radioNumber)
単体風テスト専用。「radio」のコールバック用関数の例。「check」と比較用途。
同じような動作をするGUIオブジェクト(widget)を複数連続で作る場合、関数をネストして関数自体を返り値にする関数を使います(クロージャ・関数閉包・高階関数…呼び名は色々)。
debug_keypress(window_objvoid=None,window_objptr=None)
単体風テスト専用。PCキーボード入力(押下)の動作検証。
「GTK2」の場合コールバック構造体から値を取り出す方法が不明なので、キー取得に別途「LTsv/LTsv_kbd.py」によるキー入力取得が必要です。詳細は「⑦-0.「LTsv_kbd.py」の関数一覧」を参考。
debug_keyrelease(window_objvoid=None,window_objptr=None)
単体風テスト専用。PCキーボード入力(押上)の動作検証。
「GTK2」の場合コールバック構造体から値を取り出す方法が不明なので、キー取得に別途「LTsv/LTsv_kbd.py」によるキー入力取得が必要です。詳細は「⑦-0.「LTsv_kbd.py」の関数一覧」を参考。
debug_filedialog(window_objvoid=None,window_objptr=None)
単体風テスト専用。「filedialog」の表示テスト。
debug_filedialog_response(window_objvoid=None,window_objptr=None)
単体風テスト専用。「filedialog」のレスポンステスト。
「GTK2」で「GTK_RESPONSE_ACCEPT」を取り出す方法が不明なので、ファイルダイアログのキャンセル方法が不明。

⑧-1.「LTsv_widgetPAGEXYWH()」のオプション一覧

LTsv/LTsv_gui.py」では「GUIオブジェクト(widget)」を「L:Tsv」で管理してます。
ページ名として「LTsv_widget_newUUID()」で発行されるユニークIDが付与されます。
テキスト化できる項目とテキスト化できないので「LTsv_widget_newobj()」のIDだけを保管する項目とに仕分けるのが「LTsv_widgetPAGEXYWH()」の役割です。
オブジェクトを「L:Tsv」で管理する理由はガベージコレクションで消えるのを予防とグローバル変数が散らかるのを予防するためです。

widget_o(widgetobj)
GUIオブジェクト(widget)本体のポインターもしくはオブジェクトID。
widget_k(widgetkind)
GUIオブジェクト(widget)の種類。「LTsv_window_new()」なら「window」。
「LTsv_label_new()」なら"label"。
「LTsv_image_new()」なら"image"。
「LTsv_button_new()」なら"button"。
「LTsv_check_new()」なら"check"。
「LTsv_radio_new()」なら"radio"。
「LTsv_clipboard_new()」なら"clipboard"。
「LTsv_entry_new()」なら"entry"。
「LTsv_spin_new()」なら"spin"。
「LTsv_scale_new()」なら"scale"。
「LTsv_scale_new()」なら"combobox"。
「LTsv_combobox_new()」なら"combobox"。
「LTsv_canvas_new()」なら"canvas"。
「LTsv_notifyicon_new()」なら"notify"。
「LTsv_filedialog_new()」なら"filedialog"。
widget_t(widgettext)
GUIオブジェクト(widget)が保有するテキスト。「window」のタイトルなど。
widget_u(widgettext)
GUIオブジェクト(widget)が保有するURI(URLもしくはファイルパス)。「image」のファイルパスなど。
widget_s(widgetstart)
「spin」「scale」など数値入力系GUIオブジェクト(widget)のmin(start)。
widget_e(widgetend)
「spin」「scale」など数値入力系GUIオブジェクト(widget)のmax(end)。
widget_a(widgetadd)
「spin」scale」など数値入力系GUIオブジェクト(widget)の増減量。「Tkinter」だと整数だが「GTK2」だと小数指定が可能。
widget_v(widgetstringvar)
「entry」などテキスト入力系GUIオブジェクト(widget)のテキスト。
widget_b(widgetbooleanvar)
「check」など論理値入力系GUIオブジェクト(widget)の0または1。
widget_p(widgetphotoimage)
「image」などで管理されるGUIオブジェクト(widget)の画像。
widget_m(widgetpixmap)
「canvas」の「LTsv_libgdk.gdk_pixmap_new()」を「LTsv_widgetOBJ[str(LTsv_widgetOBJcount)]」で管理。
widget_g(widgetgc)
「canvas」の「LTsv_GDKCOLOR()」を「LTsv_widgetOBJ[str(LTsv_widgetOBJcount)]」で管理。
widget_f(widgetfont)
GUIオブジェクト(widget)のフォント。
widget_x(widgetsizeX)
GUIオブジェクト(widget)のウィンドウ内X座標。
widget_y(widgetsizeY)
GUIオブジェクト(widget)のウィンドウ内Y座標。
widget_w(widgetsizeW)
GUIオブジェクト(widget)の横幅。
widget_h(widgetsizeH)
GUIオブジェクト(widget)の縦幅。
widgetcontainer(widget_c)
「window」がオブジェクト配置するルールを格納するコンテナ。
widgetresize(event_z)
「window」のサイズ変更時のコールバック関数。
keyboard_press(event_k)
「window」のキー押した時のコールバック関数。
keyboard_release(event_y)
「window」のキー離した時のコールバック関数。
event_b(widgetcallback)
例えば「button」を押した時に呼び出されような何かしらのコールバック関数。
event_p(mouse_press)
「canvas」でマウスボタンを押した時のコールバック関数。
event_r(mouse_release)
「canvas」でマウスボタンを離した時のコールバック関数。
event_e(mouse_enter)
「canvas」にマウスポインタが入った時のコールバック関数。
event_m(mouse_motion)
「canvas」内でマウスポインタが動いた時のコールバック関数。
event_l(mouse_leave)
「canvas」からマウスポインタが出た時のコールバック関数。
event_a(notify_activate)
通知タスクトレイ(Notify)を左クリックした時のコールバック関数。
event_u(notify_popupmenu)
通知タスクトレイ(Notify)を右クリックした時のコールバック関数。
menu_o(popupmenuobj)
WindowsのNOTIFYICONなどポップアップメニューの呼び出し元となるオブジェクト。
menu_b(popupmenubind)
ポップアップメニュー表示用コールバック関数。
menu_c(popupmenuclick)
通知タスクトレイ(Notify)クリック時のコールバック関数。
dialog_t(dialog_type)
ファイルダイアログの種類。
dialog_c(dialog_close)
ファイルダイアログを閉じる時のコールバック関数。

⑨-0.「LTsv_glyph.py」の関数一覧

LTsv/LTsv_glyph.py」は「canvas」上でフォントグリフを描画するモジュールです。漢直鍵盤関連も扱います。
・「<?https08:LTsv_gui.py>」の「LTsv_draw_text」系列との違いはフォントを用いずにグリフを描画することです。
・ 「Tkinter」では表示できないCP932(いわゆるシフトJIS、BMP基本多言語面0xffff範囲内)を越える3バイト以上のUTF-8文字を扱えます。
・単体風テストとして漢直鍵盤でリバーシーを操作するデモを作成。あくまでもデモなのでアルゴリズムは簡易。「entry」との比較用にテキスト入力欄(電卓)のテストも。

LTsv_glyph_kbdinit(LTsv_tsvpath="LTsv/LTsv_glyph.tsv",LTsv_glyph_GUI="",LTsv_glyph_kbddefsize=None)
設定ファイル「LTsv/LTsv_glyph.tsv」の読込、単漢字辞書「LTsv/kanchar.tsv」の読込、グリフ座標パイクル「LTsv/kanpickle.bin」の読込など初期化関連。
「LTsv_glyph_GUIにはLTsv_guiinit()」で取得する「Tkinter」か「GTK2」。
LTsv/LTsv_glyph.tsv」の設定を無視してLTsv_glyph_kbddefsizeに漢直鍵盤の倍率が指定できるが後述のテキスト入力欄(電卓)と連携が不十分。
LTsv_global_kandic(new_kandic=None)
単漢字辞書「LTsv/kanchar.tsv」を取得できます。
「LTsv_glyph_kbdinit()」実行時に読み込んだメモリ上の辞書を読み込むのでファイルアクセスするわけではない点に留意。
LTsv_global_kanmap()
漢字配列「LTsv/kanmap.tsv」を取得できます。
「LTsv_glyph_kbdinit()」実行時に読み込んだメモリ上の辞書を読み込むのでファイルアクセスするわけではない点に留意。
LTsv_global_kanmapN()
漢字配列「LTsv/kanmap.tsv」のNFER鍵盤の配列を取得。
LTsv_global_kanmapX()
漢字配列「LTsv/kanmap.tsv」のXFER鍵盤の配列を取得。
LTsv_global_kanpickle()
グリフの座標データを取得。
LTsv_global_irohatype()
漢字配列「LTsv/kanmap.tsv」項目名としてのイロハ鍵盤名リスト。
通常は「ぬ,ふ,あ,う,え,お,や,ゆ,よ,わ,ほ,へ,た,て,い,す,か,ん,な,に,ら,せ,゛,゜,ち,と,し,は,き,く,ま,の,り,れ,け,む,つ,さ,そ,ひ,こ,み,も,ね,る,め,ろ,¥」
LTsv_global_irohatypeN()
NFER鍵盤で表示するイロハ鍵盤名のリスト。
通常は「ぬ,ふ,あ,う,え,お,や,ゆ,よ,わ,ほ,へ,た,て,い,す,か,ん,な,に,ら,せ,@,ぷ,ち,と,し,は,き,く,ま,の,り,れ,け,む,つ,さ,そ,ひ,こ,み,も,ね,る,め,ろ,¥」
LTsv_global_irohatypeX()
XFER鍵盤で表示するイロハ鍵盤名のリスト。
通常は「ヌ,フ,ア,ウ,エ,オ,ヤ,ユ,ヨ,ワ,ホ,ヘ,タ,テ,イ,ス,カ,ン,ナ,ニ,ラ,セ,`,プ,チ,ト,シ,ハ,キ,ク,マ,ノ,リ,レ,ケ,ム,ツ,サ,ソ,ヒ,コ,ミ,モ,ネ,ル,メ,ロ,|」
LTsv_global_alphatype()
漢字配列「LTsv/kanmap.tsv」項目名としてのα鍵盤名のリスト。
通常は「α,β,γ,δ,ε,ζ,η,θ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,σ,τ,υ,φ,χ,ψ,ω,○,△,□」
LTsv_global_alphatypeN()
NFER鍵盤で表示するα鍵盤名のリスト。
通常は「α,β,γ,δ,ε,ζ,η,θ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,σ,τ,υ,φ,χ,ψ,ω,○,△,□」
LTsv_global_alphatypeX()
XFER鍵盤で表示するα鍵盤名のリスト。
通常は「Α,Β,Γ,Δ,Ε,Ζ,Η,Θ,Ι,Κ,Λ,Μ,Ν,Ξ,Ο,Π,Ρ,Σ,Τ,Υ,Φ,Χ,Ψ,Ω,●,▲,■」
LTsv_global_dictype()
辞書名のリスト。通常は「英,名,音,訓,送,異,俗,熙,簡,繁,越,地,顔,鍵,代,逆,非,難,活,漫,筆,幅」
LTsv_global_glyphtype()
グリフ名のリスト。通常は「活,漫,筆」
LTsv_global_choice()
辞書変更鍵盤のリスト。通常は「名,音,訓,送,異,俗,簡,繁,越,地,逆,非,英,顔,ε,ρ,τ,υ,θ,ι,ο,π,@,ぷ,α,σ,δ,φ,γ,η,ξ,κ,λ,代,鍵,ぬ,ζ,χ,ψ,ω,β,ν,μ,熙,○,△,□,¥,σ」
LTsv_global_choiceN()
NFER鍵盤で表示する辞書変更鍵盤。通常は「名,音,訓,送,異,俗,簡,繁,越,地,逆,非,英,顔,ε,ρ,τ,υ,θ,ι,ο,π,@,ぷ,α,σ,δ,φ,γ,η,ξ,κ,λ,代,鍵,ぬ,ζ,χ,ψ,ω,β,ν,μ,熙,○,△,□,¥,σ」
LTsv_global_choiceX()
XFER鍵盤で表示する辞書変更鍵盤。通常は「名,音,訓,送,異,俗,簡,繁,越,地,逆,非,英,顔,Ε,Ρ,Τ,Υ,Θ,Ι,Ο,Π,`,プ,Α,Σ,Δ,Φ,Γ,Η,Ξ,Κ,Λ,代,鍵,ぬ,Ζ,Χ,Ψ,Ω,Β,Ν,Μ,熙,●,▲,■,¥,Σ」
LTsv_global_evaltype()
電卓コマンドのリスト。通常は「平,片,大,小,半,全,\,¥,清,H,M,濁,B,P,今,⑩,⑯,⑧,⓪,照,探,〒,汎,算」
LTsv_global_irohaalpha()
LTsv_global_irohatype()+LTsv_global_alphatype()。漢字配列「LTsv/kanmap.tsv」項目名全部。
LTsv_global_irohaalphaN()
NFER鍵盤で表示する全鍵盤名のリスト。
LTsv_global_irohaalphaX()
XFER鍵盤で表示する全鍵盤名のリスト。
LTsv_global_kbdchars()
漢直鍵盤で表示する文字。
NFER,XFER,KANAの操作で鍵盤を交換して、表示されてる文字を入力する。
LTsv_global_glyphkbdH()
漢直鍵盤の縦サイズ。
LTsv_glyph_kbddefsizeが1の時24。
LTsv_global_glyphkbdW()
漢直鍵盤の縦サイズ。
LTsv_glyph_kbddefsizeが1の時96。
LTsv_global_glyphkbdF()
漢直鍵盤の文字スペースサイズ。
LTsv_glyph_kbddefsizeが1の時、グリフサイズが5になるので時余白1ドット込みで6。
LTsv_global_kbdcursorNone()
52。
文字入力48鍵+鍵盤制御4鍵(IME想定では4鍵だったが漢直専用エディタでは3鍵に減らせた)の合計。
LTsv_global_kanmappath()
漢字配列「LTsv/kanmap.tsv」のファイルパス。
LTsv_global_kandicpath()
単漢字辞書「LTsv/kanchar.tsv」のファイルパス。
LTsv_global_worddicpath()
汎用辞書「kanword.tsv」のファイルパス。
LTsv_global_zipdicpath()
郵便番号辞書「kanzip.tsv」のファイルパス。
LTsv_global_picklepath()
グリフ座標データ「kanpickle.bin」のファイルパス。
LTsv_glyphSVG5x10x20x(LTsv_kanpath5x10x20x)
LTsv_glyph5x10x20x(LTsv_kanpathSVG)
LTsv_glyphSVG(LTsv_glyph_path)
グリフの座標データをSVGからリストに変換。
LTsv_glyphpath(glyphcode)
グリフの「活」「漫」「筆」および「幅」データを単漢字辞書「LTsv/kanchar.tsv」から抽出。同時にポリゴンの回転方向を事前に計算。
LTsv_glyphfont_5x5(glyphcode)
グリフ「活」の座標データと計算済みのポリゴン回転方向を用意。
LTsv_glyphfont_comic(glyphcode)
グリフ「漫」の座標データと計算済みのポリゴン回転方向を用意。
LTsv_glyphfont_brush(glyphcode)
グリフ「筆」の座標データと計算済みのポリゴン回転方向を用意。
LTsv_glyphfont_shell(draw_g="活")
グリフの「活」「漫」「筆」に応じて専用関数を呼び出す。
LTsv_draw_glyphs(draw_t,draw_x=0,draw_y=0,draw_f=10,draw_w=1,draw_h=1,draw_g="活",draw_LF=False,draw_HT=False)
「canvas」にグリフ描画(ワイヤフレーム)。draw_tにテキスト文字列、draw_x,draw_yに表示座標。
draw_fにフォントサイズ。draw_gでフォントの種類。draw_w,draw_hは文字間の隙間。
LTsv_draw_glyphsfill(draw_t,draw_x=0,draw_y=0,draw_f=10,draw_w=1,draw_h=1,draw_g="活",draw_LF=False,draw_HT=False)
「canvas」にグリフ描画(塗り潰し)。draw_tにテキスト文字列、draw_x,draw_yに表示座標。
draw_fにフォントサイズ。draw_gでフォントの種類。draw_w,draw_hは文字間の隙間。
LTsv_draw_glyphskbd(draw_t,draw_x=0,draw_y=0,draw_f=5,draw_g="活")
「canvas」にグリフ描画1文字分。改行処理などを省いた高速描画用。漢直鍵盤など等幅表示想定。
LTsv_draw_glyphclock(draw_t="",draw_x=0,draw_y=0,draw_f=LTsv_PSchar_ZW//2,draw_g="活",color_R="#6E81D9",color_L="#6ED997",color_X="#D96ED3")
ほぼ「kanfont」用。1文字のグリフの右回転をcolor_R、左回転をcolor_L、判別困難または不能な図形はcolor_Xで色分けする(ワイヤフレーム)。
LTsv_draw_glyphclockfill(draw_t="",draw_x=0,draw_y=0,draw_f=LTsv_PSchar_ZW//2,draw_g="活",color_R="#6E81D9",color_L="#6ED997",color_X="#D96ED3")
ほぼ「kanfont」用。1文字のグリフの右回転をcolor_R、左回転をcolor_L、判別困難または不能な図形はcolor_Xで色分けする(塗り潰し)。
LTsv_draw_glyphcursor(draw_t="",draw_x=0,draw_y=0,path_z=0,draw_s=0,grid_p=-1,grid_q=-1,draw_f=LTsv_PSchar_ZW//2,draw_g="活",color_R="#6E81D9",color_L="#6ED997",color_X="#D96ED3")
ほぼ「kanfont」用。グリフのポリゴン頂点や線分がマウスカーソルで選択状態にあるか表示する。
LTsv_draw_glypwide(draw_t="",draw_x=0,draw_y=0,draw_s=0,draw_f=LTsv_PSchar_ZW//2,draw_g="活",color_W="#9F6C00")
ほぼ「kanfont」用。フォントグリフの「幅」を表示。
LTsv_draw_glyphmouse(draw_t="",draw_x=0,draw_y=0,path_z=0,grid_x=LTsv_PSchar_ZW//2,grid_y=LTsv_PSchar_ZW//2,mouse_x=LTsv_PSchar_ZW//2,mouse_y=LTsv_PSchar_ZW//2,draw_f=LTsv_PSchar_ZW//2,draw_g="活")
ほぼ「kanfont」用。mouse_x,mouse_yにマウス座標を入れて「LTsv_draw_glyphcursor()」で使用する「grid_p」「grid_q」の値を取得。
LTsv_glyph_getnote(draw_t="",draw_g="活")
グリフの座標をリストで取得。draw_tにテキスト1文字分、draw_gでグリフの種類。
LTsv_glyph_pointsrotation(glyphnote=[])
グリフ座標のポリゴンの座標の順番を回転ソートしてリスト先頭座標を左上に配置。
LTsv_glyph_points2path(draw_t="",glyphnote=[],draw_g="活")
ほぼ「kanfont」用。単漢字辞書「LTsv/kanchar.tsv」のグリフを座標データで更新する。
draw_tに1文字、draw_gでフォントの種類。glyphnoteはグリフ座標リストを直接。
LTsv_glyph_text2path(draw_t="",kanpath="",draw_g="俗")
単漢字辞書「LTsv/kanchar.tsv」のグリフをkanpathのテキストデータで更新する。
グリフ以外のデータの更新にも使える。
LTsv_glyph_kbdcursor(kbd_canvas,kbd_x,kbd_y)
漢直鍵盤のどのキーの上にマウスカーソルがあるか調べる。kbd_canvasでキャンバス、kbd_x,kbd_yで漢直鍵盤の表示位置。
漢直鍵盤の上にマウスが無い場合「LTsv_global_kbdcursorNone()」を返す。
LTsv_glyph_kbdselect(choice)
漢直鍵盤を鍵盤名(LTsv_glyph_irohaalphaN,LTsv_glyph_irohaalphaX)で変更する。
鍵盤名は「LTsv_global_irohaalphaN()」「LTsv_global_irohaalphaX()」で取得。
LTsv_glyph_choiceNX(choice)
鍵盤名がLTsv_glyph_irohaalphaNもしくはLTsv_glyph_irohaalphaXの何番目か数値で取得。
LTsv_glyph_kbdfind(find_t)
find_tが漢字配列「LTsv/kanmap.tsv」にあるか検索して漢直鍵盤の鍵盤を変更する。
find_tは複数の文字が使用できるので、先頭文字から順に見つからない場合は次の文字を探す。
単漢字辞書「LTsv/kanchar.tsv」も動員して異体字なども調べる場合は「LTsv_evaltext()」を使う。
LTsv_glyph_tapcallback_shell(kbd_canvas,callback)
漢直鍵盤の文字入力を受け取るコールバック関数の指定。
文字入力判定はマウス押下ではなくマウス押上、タップ動作。
LTsv_glyph_mousepress(kbd_canvas,kbd_x,kbd_y)
「canvas」のマウス押下動作に対応する漢直鍵盤を描画。
「canvas」の「event_p=*_mousepress」系コールバック関数内に設置。
カーソルが漢直鍵盤の外にある場合「LTsv_global_kbdcursorNone()」が返り値。
LTsv_glyph_mousemotion(kbd_canvas,kbd_x,kbd_y)
「canvas」のマウス移動動作に対応する漢直鍵盤を描画。
「canvas」の「event_m=*_mousemotion」系コールバック関数内に設置。
カーソルが漢直鍵盤の外にある場合「LTsv_global_kbdcursorNone()」が返り値。
LTsv_glyph_mouserelease(kbd_canvas,kbd_x,kbd_y)
「canvas」のマウス押上動作に対応する漢直鍵盤を描画。
「canvas」の「event_r=*_mouserelease」系コールバック関数内に設置。
カーソルが漢直鍵盤の外にある場合LTsv_global_kbdcursorNone()」が返り値。
LTsv_glyph_kbddelete(kbd_canvas)
漢直鍵盤の消去。特に「Tkinter」では描画した図形は消す必要がある(消さないとオブジェクトが無限増殖の危険性)ので注意。
LTsv_glyph_kbddraw(kbd_canvas,kbd_x,kbd_y,kbd_c=LTsv_glyph_None)
漢直鍵盤の描画。
「LTsv_glyph_mousepress()」「LTsv_glyph_mousemotion()」「LTsv_glyph_mouserelease()」でも消去アンド描画されるはず。
LTsv_glyph_picklesave()
グリフの座標データpickleをセーブします。初期設定的には「LTsv/kanpickle.bin」のはず。
LTsv_evaltext(calc_value="")
calc_valueに数式などを入れると「Q⇔A」形式で答えを返す関数です。「LTsv_glyph_kbdfind()」のように漢字探索もします。主に「テキスト入力欄(電卓)」で使用します。
詳細は「⑨-4.「漢字逆引きと分数電卓&数値文字参照&日時取得&簡易辞書」の詳細」を参考。
LTsv_glyph_calcsetup(calc_canvas,calculatorX=0,calculatorY=0,calculatorW=LTsv_global_glyphkbdW(),calculatorH=LTsv_global_glyphkbdH(),calculatorC=None,calculatorB=None,calculatorT="")
「テキスト入力欄(電卓)(漢直鍵盤含む)」の初期設定。calculatorTは初期テキスト。
calculatorX,calculatorYは表示位置座標、calculatorW,calculatorHは入力欄のサイズ(漢直鍵盤より大きくする必要)、
calculatorCには「clipboard」オブジェクト、calculatorBには漢直鍵盤の文字入力を受けとるコールバック関数。
LTsv_glyph_calcresize(calc_canvas,calculatorX=None,calculatorY=None,calculatorW=None,calculatorH=None,calculatorT=None,calculatorTX=None,calculatorTC=None)
「テキスト入力欄(電卓)(漢直鍵盤含む)」の設定変更もしくはテキストの取得(返り値)。
calculatorTXは文字表示位置を移動。calculatorTCはカーソル移動。
LTsv_glyph_calcdelete(calc_canvas)
テキスト入力欄(電卓)の消去。特に「Tkinter」では描画した図形は消す必要がある(消さないとオブジェクトが無限増殖の危険性)ので注意。
LTsv_glyph_calcdraw(calc_canvas)
テキスト入力欄(電卓)の描画。
「LTsv_glyph_calcpress()」「LTsv_glyph_calcmotion()」「LTsv_glyph_calcrelease()」でも消去アンド描画されるはず。
LTsv_glyph_calcdrawplane(calc_canvas,calc_canvasfgcolor=None,calc_canvasbgcolor=None)
テキスト入力欄(電卓)の描画。
ただし漢直鍵盤を非表示、入力欄のカーソルも表示しない。マウスフォーカスが外れてる事を示す用途。
calc_canvasfgcolorで描画色、calc_canvasbgcolorで背景色の変更。
LTsv_glyph_widecache(draw_t,draw_x=0,draw_y=0,draw_f=10,draw_w=1,draw_g="漫")
テキスト入力欄(電卓)のテキストの文字一個一個の座標を記録。
LTsv_glyph_calcglyphs(calc_canvas)
テキスト入力欄(電卓)内でテキスト表示。選択テキスト(カーソル)のワイヤーフレーム表示や、入力欄からはみ出る文字を非表示にしたりする。
入力欄操作の詳細は「⑨-3.テキスト入力欄(電卓)の操作方法」を参考。
LTsv_glyph_calcpress(calc_canvas)
「canvas」のマウス押下動作に対応するテキスト入力欄(電卓)を描画。
「canvas」の「event_p=*_mousepress」系コールバック関数内に設置。
カーソルがテキスト入力欄(電卓)の中にある場合True、外にある場合Falseが返り値。
LTsv_glyph_calcmotion(calc_canvas)
「canvas」のマウス移動動作に対応するテキスト入力欄(電卓)を描画。
「canvas」の「event_m=*_mousemotion」系コールバック関数内に設置。
カーソルがテキスト入力欄(電卓)の中にある場合True、外にある場合Falseが返り値。
LTsv_glyph_calcrelease(calc_canvas)
「canvas」のマウス押上動作に対応するテキスト入力欄(電卓)を描画。
「canvas」の「event_r=*_mouserelease」系コールバック関数内に設置。
カーソルがテキスト入力欄(電卓)の中にある場合True、外にある場合Falseが返り値。
LTsv_glyph_calcenter(calc_canvas)
「canvas」にマウスカーソルが入った時のテキスト入力欄(電卓)を描画。
「canvas」の「event_e=*_mouserelease」系コールバック関数内に設置。
返り値は入力欄のテキスト。
LTsv_glyph_calcleave(calc_canvas)
「canvas」からマウスカーソルが出た時のテキスト入力欄(電卓)を描画。
「canvas」の「event_l=*_mouserelease」系コールバック関数内に設置。
返り値は入力欄のテキスト。
LTsv_glyph_calcinput(calc_canvas,glyph_calcinput="")
glyph_calcinputが文字ならテキスト入力欄(電卓)に文字入力、カーソル移動など編集指示ならテキスト処理。
glyph_calcinputを省略すると再描画のみ。
LTsv_glyph_typeNXK(glyphtype_getkbdnames,LTsv_glyph_NXKbf)
「LTsv_glyph_calctype()」「LTsv_glyph_calctypelimited()」から呼び出される関数。glyphtype_getkbdnamesにはキーボードの押下情報。
NFERキーが押されてる場合はLTsv_glyph_NFER(49)、XFERキーが押されてる場合はLTsv_glyph_XFER(50)、KANAキーが押されてる場合はLTsv_glyph_KANA(51)。
NFERキーとXFERキー両方を押してる場合にはLTsv_glyph_SandS(48)、もしくはLTsv_glyph_KANA(51)。SandSはSpaceキーを使ってた時期の名残り。
NFERキーとKANAキーの時は「σ」に鍵盤変更、XFERキーとKANAキーの時は「Σ」に鍵盤変更。
LTsv_glyph_calctype(calc_canvas)
「canvas」にマウスカーソルがある状態でPCキーボード押下に対応する漢直鍵盤を描画。
「window」の「event_k=*_keypress」系「event_y=*_keyrelease」系両方のコールバック関数内に設置。
LTsv_glyph_calctypelimited(calc_canvas,kbd_x,kbd_y)
「canvas」にマウスカーソルがある状態でPCキーボード押下に対応する漢直鍵盤を描画。
「window」の「event_k=*_keypress」系「event_y=*_keyrelease」系両方のコールバック関数内に設置。
「LTsv_glyph_calctypelimited()」はテキスト入力欄(電卓)を用いず漢直鍵盤のみを直接操作する用途。
debug_calculatormousepress(window_objvoid=None,window_objptr=None)
単体風テスト専用。テキスト入力欄(電卓)用「canvas」マウス押下のコールバック。
debug_calculatormousemotion(window_objvoid=None,window_objptr=None)
単体風テスト専用。テキスト入力欄(電卓)用「canvas」マウス移動のコールバック。
debug_calculatormouserelease(window_objvoid=None,window_objptr=None)
単体風テスト専用。テキスト入力欄(電卓)用「canvas」マウス押上のコールバック。
debug_calculatormouseleave(window_objvoid=None,window_objptr=None)
単体風テスト専用。テキスト入力欄(電卓)用「canvas」にマウスカーソルが入った時のコールバック。
debug_calculatormouseenter(window_objvoid=None,window_objptr=None)
単体風テスト専用。テキスト入力欄(電卓)用「canvas」からマウスカーソルが出た時のコールバック。
debug_calculatormouseinput(calculatormouseinput)
単体風テスト専用。テキスト入力欄(電卓)の文字入力を受け取るコールバック関数の指定。
debug_calculatorcommand(glyph_calcinput)
単体風テスト専用。Enter機ーを押した時に電卓機能を発動。
電卓機能の詳細は「⑨-4.「漢字逆引きと分数電卓&数値文字参照&日時取得&簡易辞書」の詳細」を参考。
debug_reversi_mousepress(window_objvoid=None,window_objptr=None)
単体風テスト専用。リバーシー漢直鍵盤用「canvas」マウス押下のコールバック。
debug_reversi_mousemotion(window_objvoid=None,window_objptr=None)
単体風テスト専用。リバーシー漢直鍵盤用「canvas」マウス移動のコールバック。
debug_reversi_mouserelease(window_objvoid=None,window_objptr=None)
単体風テスト専用。リバーシー漢直鍵盤用「canvas」マウス押上のコールバック。
debug_reversi_keypress(window_objvoid=None,window_objptr=None)
単体風テスト専用。リバーシー漢直鍵盤用「canvas」にマウスカーソルが入った時のコールバック。
debug_reversi_keyrelease(window_objvoid=None,window_objptr=None)
単体風テスト専用。リバーシー漢直鍵盤用「canvas」からマウスカーソルが出た時のコールバック。
debug_milklid_check(xy,bw)
単体風テスト専用。リバーシーでxy升にbw石が置けるか(裏返せる石があるか)チェック。
debug_milklid_turn(xy,bw)
単体風テスト専用。リバーシーでxy升にbw石を置いて挟んだ石を裏返す。
debug_milkAI_BS(window_objvoid=None,window_objptr=None)
単体風テスト専用。リバーシーで一手前に戻す(棋譜を1文字削る)。
debug_milkAI_reset()
単体風テスト専用。棋譜初期化。リバーシーAIのアルゴリズム初期化(戦略変更)。
debug_milkAI_entry(window_objvoid=None,window_objptr=None)
単体風テスト専用。リバーシーの棋譜更新。
debug_milkAI_Auto(window_objvoid=None,window_objptr=None)
単体風テスト専用。リバーシーAIが自動で石を置く。「Auto」ボタンは手動で押す。
debug_milkAI_add(addentry)
単体風テスト専用。リバーシーの升に何らかの方法で石を置く時の動作。試合が決着してる場合は盤面初期化。
debug_configload()
単体風テスト専用。「LTsv/kanglyph.tsv」から棋譜を読み込む。
「LTsv/kanglyph.tsv」の詳細は「⑨-1.「LTsv_glyph.tsv」のタグ解説」を参考。
debug_configsave_exit(window_objvoid=None,window_objptr=None)
単体風テスト専用。「LTsv/kanglyph.tsv」にリバーシーの棋譜を保存。グリフの座標データpickleも「LTsv_glyph_picklesave()」で保存。

⑨-1.「LTsv_glyph.tsv」のタグ解説

LTsv/LTsv_glyph.tsv」は「LTsv/LTsv_glyph.py」の設定ファイルです。

[kanglyph|
LTsv/LTsv_glyph.py」の設定。
dicname
単漢字辞書を指定。初期値は「kanchar.tsv」。
mapname
漢直鍵盤の漢字配列を指定。初期値は「kanmap.tsv」。
picklename
グリフ座標データのパイクルを指定。初期値は「kanpickle.bin」。
irohatype
漢字配列「LTsv/kanmap.tsv」項目名としてのイロハ鍵盤名リスト。
初期値は「ぬ\tふ\tあ\tう\tえ\tお\tや\tゆ\tよ\tわ\tほ\tへ\tた\tて\tい\tす\tか\tん\tな\tに\tら\tせ\t゛\t゜\tち\tと\tし\tは\tき\tく\tま\tの\tり\tれ\tけ\tむ\tつ\tさ\tそ\tひ\tこ\tみ\tも\tね\tる\tめ\tろ\t¥」
irohatypeN
NFER鍵盤におけるイロハ鍵盤名のリスト。
初期値は「ぬ\tふ\tあ\tう\tえ\tお\tや\tゆ\tよ\tわ\tほ\tへ\tた\tて\tい\tす\tか\tん\tな\tに\tら\tせ\t@\tぷ\tち\tと\tし\tは\tき\tく\tま\tの\tり\tれ\tけ\tむ\tつ\tさ\tそ\tひ\tこ\tみ\tも\tね\tる\tめ\tろ\t¥」
irohatypeX
XFER鍵盤におけるイロハ鍵盤名のリスト。
初期値は「ヌ\tフ\tア\tウ\tエ\tオ\tヤ\tユ\tヨ\tワ\tホ\tヘ\tタ\tテ\tイ\tス\tカ\tン\tナ\tニ\tラ\tセ\t`\tプ\tチ\tト\tシ\tハ\tキ\tク\tマ\tノ\tリ\tレ\tケ\tム\tツ\tサ\tソ\tヒ\tコ\tミ\tモ\tネ\tル\tメ\tロ\t|」
alphatype
α鍵盤名のリスト。
初期値は「α\tβ\tγ\tδ\tε\tζ\tη\tθ\tι\tκ\tλ\tμ\tν\tξ\tο\tπ\tρ\tσ\tτ\tυ\tφ\tχ\tψ\tω\t○\t△\t□」
alphatypeN
NFER鍵盤におけるα鍵盤名のリスト。
初期値は「α\tβ\tγ\tδ\tε\tζ\tη\tθ\tι\tκ\tλ\tμ\tν\tξ\tο\tπ\tρ\tσ\tτ\tυ\tφ\tχ\tψ\tω\t○\t△\t□」
alphatypeX
XFER鍵盤におけるα鍵盤名のリスト。
初期値は「Α\tΒ\tΓ\tΔ\tΕ\tΖ\tΗ\tΘ\tΙ\tΚ\tΛ\tΜ\tΝ\tΞ\tΟ\tΠ\tΡ\tΣ\tΤ\tΥ\tΦ\tΧ\tΨ\tΩ\t●\t▲\t■」
dictype
辞書名のリスト。
初期値は「英\t名\t音\t訓\t送\t異\t俗\t熙\t簡\t繁\t越\t地\t顔\t鍵\t代\t逆\t非\t難\t活\t漫\t筆\t幅」
glyphtype
グリフ名のリスト。
初期値は「活\t漫\t筆」
choice
辞書変更鍵盤のリスト。
初期値は「名\t音\t訓\t送\t異\t俗\t簡\t繁\t越\t地\t逆\t非\t英\t顔\tε\tρ\tτ\tυ\tθ\tι\tο\tπ\t@\tぷ\tα\tσ\tδ\tφ\tγ\tη\tξ\tκ\tλ\t代\t鍵\tぬ\tζ\tχ\tψ\tω\tβ\tν\tμ\t熙\t○\t△\t□\t¥\tσ」
choiceN
NFER鍵盤における辞書変更鍵盤。
初期値は「名\t音\t訓\t送\t異\t俗\t簡\t繁\t越\t地\t逆\t非\t英\t顔\tε\tρ\tτ\tυ\tθ\tι\tο\tπ\t@\tぷ\tα\tσ\tδ\tφ\tγ\tη\tξ\tκ\tλ\t代\t鍵\tぬ\tζ\tχ\tψ\tω\tβ\tν\tμ\t熙\t○\t△\t□\t¥\tσ」
choiceX
XFER鍵盤における辞書変更鍵盤。
初期値は「名\t音\t訓\t送\t異\t俗\t簡\t繁\t越\t地\t逆\t非\t英\t顔\tΕ\tΡ\tΤ\tΥ\tΘ\tΙ\tΟ\tΠ\t`\tプ\tΑ\tΣ\tΔ\tΦ\tΓ\tΗ\tΞ\tΚ\tΛ\t代\t鍵\tぬ\tΖ\tΧ\tΨ\tΩ\tΒ\tΝ\tΜ\t熙\t●\t▲\t■\t¥\tΣ」
evaltype
初期値は「平\t片\t大\t小\t半\t全\t\\t¥\t清\tH\tM\t濁\tB\tP\t今\t⑩\t⑯\t⑧\t⓪\t照\t探\t〒\t汎\t算」
eval_slash
半角スラッシュ「/」を全角に変換(「全」だと曖昧な指示)する時、全角スラッシュ「/」と全角円記号「¥」のどっちに変換するか指定。
初期値は「¥」。
eval_dakuon
清音を濁音に(「濁」だと曖昧な指示)する時、ハ行は"ばびぶべぼ"のみを扱う「B」か"まみむめも"から"ぱぴぷぺぽ"に変換する「P」を指定。
初期値は「P」。
eval_seion
濁音を清音に(「清」だと曖昧な指示)する時、"ばびぶべぼ"も"ぱぴぷぺぽ"も"はひふへほ"に変換する「H」か"ぱぴぷぺぽ"は"まみむめも"に変換する「M」を指定。
初期値は「H」。
eval_now
入力欄で「今今」と入力した時に表示する現在時刻。
初期値は「年-月-日(週曜)時:分:秒」。
eval_branch
入力欄で「今枝」と入力した時に表示する現在時刻。
初期値は「@000y@0m@0dm@wdec@0h@0n@0s」。
eval_overhour
日時フォーマットの徹夜時刻の指定。24〜48のいずれか。
eval_worddicname
汎用辞書「kanword.tsv」ファイルの指定(無くても動作)。
初期値は「../kanword.tsv」。
eval_zipdicname
郵便番号辞書ファイルの指定(無くても動作)。
初期値は「../kanzip.tsv」。郵便番号辞書「kanzip.tsv」の作成には「LTsv/kanzip.py」を用いる。
詳細は「kanzip①-0.「kanzip」の使い方」を参考。
last_alpha
漢直鍵盤が最後に表示したα鍵盤を記録。
last_dic
漢直鍵盤が最後に表示した単漢字辞書の項目を記録。
kbdTAG
「Tkinter」で漢直鍵盤を再描画するため「LTsv_draw_tkTAG」とは別のタグが必要。
初期値は「kanglyphkbd」。
fontcolor
漢直鍵盤のグリフ描画色。
初期値は「black」。
bgcolor
漢直鍵盤の鍵盤背景色。
初期値は「#E1FFFA」。
leavecolor
テキスト入力欄(電卓)がフォーカス外の時の入力欄背景色。
初期値は「white」。
kbddefsize
漢直鍵盤の拡大倍率。
初期値は「1」。変更非推奨。
kbdNX
[NFER]キー[XFER]キーが使えない場合「NFER:ShiftL\tXFER:ShiftR\tKANA:KANA」に置き換えると[Shift]キーで代用できる。
初期値は「NFER:NFER\tXFER:XFER\tKANA:KANA」。
[reversi|
LTsv/LTsv_glyph.py」単体風テストのリバーシー設定。
entry
リバーシーの棋譜。

⑨-2.漢直鍵盤の操作方法

漢直鍵盤

マウス操作

小さい文字をタップ(押上)
文字入力。「σ」鍵盤ではHJKLでカーソル移動などにもなります。
左上(N)からフリック
NFER鍵盤(ひらがな)の選択。Nの下にフリックでα鍵盤の「σ」(HJKL)。
右上(X)からフリック
XFER鍵盤(カタカナ)の選択。Xの下にフリックでα鍵盤の「Σ」(電卓)。
左下(Nの下)からフリック
α鍵盤の選択。もしくは辞書の変更。
右下(Xの下)からフリック
字引入力。単漢字辞書の項目が代入。

PCキーボード操作

[ぬ〜ろ¥]or[ヌ〜ロ|]
文字入力。「σ」鍵盤ではHJKLでカーソル移動などにもなります。
[NFER]+[ぬ〜ろ¥]
NFER鍵盤切替。ひらがなや小文字など。[NFER]キーを押すだけでも鍵盤は切り替わる。
[XFER]+[ヌ〜ロ|]
XFER鍵盤切替。カタカナや大文字など。[XFER]キーを押すだけでも鍵盤は切り替わる。
[NFER]+[XFER]or[XFER]+[NFER]
α鍵盤の「αβγδεζηθικλμνξοπρστυφχψω」&単漢字辞書の「名音訓送異俗熙簡繁越地顔鍵代逆非」の変更。
α鍵盤&辞書項目の表示中は[NFER]と[XFER]どちらか片方だけ押したままでも表示継続。その状態で再度[NFER][XFER]両押しで単漢字辞書による字引入力。
単漢字辞書の種類は「⑨-5.単漢字辞書の辞書項目」を参考。
[KANA]+[ぬ〜ろ¥ヌ〜ロ|]
単漢字辞書による字引入力。
[KANA]+[NFER]or[NFER]+[KANA]
「σ」鍵盤表示。HJKLカーソル移動などに使います。
[KANA]+[XFER]or[XFER]+[KANA]
「Σ」鍵盤表示。電卓用途。

⑨-3.テキスト入力欄(電卓)の操作方法

漢直鍵盤

マウス操作

テキスト選択
文字選択とカーソルの区別は厳密ではないので、1文字選択がカーソル移動。
選択テキストドラッグ
選択した文字は移動できる。選択テキストはドラッグで持ち上げるタイミングでクリップボードにもコピー。
選択文字を欄外にドラッグ
選択した文字を削除もできる。
1秒入力欄を押し続ける
ドラッグじゃない状態でホールドするとクリップボードから貼り付けた文字がドラッグ状態になる。
入力欄の上端をスライド
文字の表示位置を移動。
表示位置スライド状態で押し続け
文字の表示位置をリセット。

PCキーボード操作

HJKL
カーソル移動。σ鍵盤じゃない状態の時も[Ctrl]+[H]で左、[Ctrl]+[L]で右移動。
H←,J↓,K↑,L→(上下移動は「kanedit」用途)。
YUBN
範囲選択調整。σ鍵盤じゃない状態の時も[Ctrl]+[Y][Ctrl]+[U]で左側、[Ctrl]+[B][Ctrl]+[N]で右側。
,<()
Home。σ鍵盤じゃない状態の時も[Ctrl]+[,]でカーソル先頭移動。
.>()
End。σ鍵盤じゃない状態の時も[Ctrl]+[.]でカーソル末尾移動。
/?()
PgUp。σ鍵盤じゃない状態の時も[Ctrl]+[/]で多分ページ移動 (上下移動は「kanedit」用途)。
\_()
PgDn。σ鍵盤じゃない状態の時も[Ctrl]+[\]で多分ページ移動(上下移動は「kanedit」用途)。
;+()
バックスペース。σ鍵盤じゃない状態の時も[BS]キーで左側1文字削除。選択文字が2文字以上の時はデリート。
:*()
デリート。σ鍵盤じゃない状態の時も[DEL]キーで選択文字カーソル文字を削除。
]()
エンターキー。σ鍵盤じゃない状態の時も[Enter]キーで入力決定。
A
テキスト全選択。σ鍵盤じゃない状態の時も[Ctrl]+[A]で全選択。
C
テキストをクリップボードにコピー。σ鍵盤じゃない状態の時も[Ctrl]+[C]で選択範囲コピー。
X
テキスト切り取り(クリップボードにコピー)。σ鍵盤じゃない状態の時も[Ctrl]+[X]で選択範囲切り取り。
V
クリップボードからテキスト貼り付け。σ鍵盤じゃない状態の時も[Ctrl]+[V]でペースト。

⑨-4.「漢字逆引きと分数電卓&数値文字参照&日時取得&簡易辞書」の詳細

「kanedit」では省略して「電卓」と呼ぶテキスト入力欄の内容、「LTsv_kbdentry_evaltext()」の引数内容の状態により、
コマンドなのか単語なのか数式なのかで「漢字逆引き」「分数電卓」「文字参照」「簡易辞書」など分岐します。

1文字のみ入力
漢字逆引き。入力した文字が存在する鍵盤に切替。同時に単漢字辞書の項目表示、 単漢字辞書に無い文字は「照」数値文字参照。
「走⇔」→「英走⇔run」「名走⇔はしる」「照走⇔走」
先頭文字列が「&#」
数値文字参照を文字列にデコード。
「咖喱麺麭」→「照咖喱麺麭⇔咖喱麺麭」
先頭文字が「照」
文字列を数値文字参照にエンコード。数値文字参照を文字列へのデコードも可能。
「照咖喱麺麭咖喱麺麭」
先頭文字が「〒」
郵便番号辞書「kanzip.tsv」から住所を表示。
「〒1638001⇔東京都新宿区西新宿2丁目8-1東京都庁」
先頭文字が「平」
カタカナをひらがな(平仮名)に変換。
「平ヴァイオリン⇔ヴぁいおりん」
先頭文字が「片」
ひらがなをカタカナ(片仮名)に変換。
「片ヴぁいおりん⇔ヴァイオリン」
先頭文字が「半」
全角アルファベットとカタカナをに半角に変換。
「半ヴァイオリン⇔ヴァイオリン」。
先頭文字が「全」
半角アルファベットとカタカナをに全角に変換(曖昧な指示)。初期設定では「¥」。
「全ヴァイオリン⇔ヴァイオリン」。
先頭文字が「¥」
半角アルファベットとカタカナをに全角に変換(バックスラッシュを全角円記号に)。
「¥バックスラッシュ\円記号⇔バックスラッシュ¥円記号」。
先頭文字が「\」
半角アルファベットとカタカナをに全角に変換(バックスラッシュを全角バックスラッシュに)。
「\バックスラッシュ\円記号⇔バックスラッシュ\円記号」。
先頭文字が「清」
濁音を清音に変換(曖昧な指示)。初期設定では「H」。
「清ヴァイオリン⇔ウァイオリン」。
先頭文字が「H」
濁音を清音に変換("ばびぶべぼ"も"ぱぴぷぺぽ"も"はひふへほ"に)。
「Hカエルぴょこぴょこみぴょこぴょこ、ぼうずがびょうぶにえをかいた⇔カエルひょこひょこみひょこひょこ、ほうすかひょうふにえをかいた」。
先頭文字が「M」
濁音を清音に変換("ぱぴぷぺぽ"は"まみむめも"に)。
「Mカエルぴょこぴょこみぴょこぴょこ、ぼうずがびょうぶにえをかいた⇔カエルみょこみょこみみょこみょこ、ほうすかひょうふにえをかいた」。
先頭文字が「濁」
清音を濁音に変換(曖昧な指示)。初期設定では「P」。
「濁ウァイオリン⇔ヴァイオリン」。
先頭文字が「B」
清音を濁音に変換("はひふへほ"は"ばびぶべぼ"に)。
「Bカエルみょこみょこみみょこみょこ、ほうすかひょうふにえをかいた⇔ガエルみょごみょごみみょごみょご、ぼゔずがびょゔぶにえをがいだ」。
先頭文字が「P」
清音を濁音に変換("まみむめも"も"ぱぴぷぺぽ"に)。
「Pカエルみょこみょこみみょこみょこ、ほうすかひょうふにえをかいた⇔ガエルぴょごぴょごぴぴょごぴょご、ぼゔずがびょゔぶにえをがいだ」。
先頭文字が「大」
アルファベット(全角ギリシャ文字全角キリル文字を含む)を大文字に変換。
「大αAndΩ⇔ΑANDΩ」
先頭文字が「小」
アルファベット(全角ギリシャ文字全角キリル文字を含む)を小文字に変換。
「小ΑAndΩ⇔αandω」
先頭文字が「今」
日時などを取得。「平,干,年,月,日,週,曜,時,分,秒,今,版,印」の他に「日時フォーマット」で詳細な指定も可能。
「今年-月-日(週曜)時:分:秒」→「今@000y-@0m-@0dm(@0wnyi@wdj)@0h:@0n:@0s⇔2016-03-01(09火)02:15:15」
「今今」→「今@000y-@0m-@0dm(@0wnyi@wdj)@0h:@0n:@0s⇔2016-03-01(09火)02:15:48」。「eval_now」を返す。
「今版」→「今20160716S001619⇔20160716S001619」。[LTsv_time.py]の「LTsv_time_ver()」を返す。
「今枝」→「今@000y@0m@0dm@wdec@0h@0n@0s⇔20160716S001619」。「eval_branch」を返す。
日時フォーマットの詳しい使い方は「④-1.日時フォーマットの概要」を参考。
先頭文字が「⑧」
UTF-8文字列を256進数としての8点点字(UTF-8点字)に変換。一般的な点字ではないので注意。
「⑧点字に類似したもの⇔⣧⢂⢹⣥⢭⢗⣣⢁⢫⣩⢡⢞⣤⢼⢼⣣⢁⢗⣣⢁⢟⣣⢂⢂⣣⢁⢮」。
先頭文字が「⓪」
UTF-8文字列を256進数としての8点点字(UTF-8点字)をUTF-8の文字列に復号。
「⓪⣧⢂⢹⣥⢭⢗⣣⢁⢫⣩⢡⢞⣤⢼⢼⣣⢁⢗⣣⢁⢟⣣⢂⢂⣣⢁⢮⇔点字に類似したもの」。
先頭文字が「⑯」
10進数を16進数に変換。
「⑯65535⇔0xffff」。
先頭文字が「⑩」
16進数を10進数に変換。
「⑩FFFF⇔65535」「⑩0xFFFF⇔65535」「⑩U+ffff⇔65535」。
先頭文字が「英」「名」「音」「訓」「送」「異」「俗」「熙」「簡」「繁」「越」「地」「顔」「鍵」「代」「逆」「非」
単漢字辞書「LTsv/kanchar.tsv」から該当する文字あるいは単語等を字引。字引入力の単漢字項目も変更。
単漢字辞書の項目については「⑨-5.単漢字辞書の辞書項目」を確認。
先頭文字が「難」
漢字の難読レベル(小学校N学年・常用漢字・人名・地名・幽霊文字など)を設定予定。難読の定義が不明瞭なので放置中。
先頭文字が「活」「漫」「筆」
「kant5x5comic」のグリフデータ。「kanfont」で編集可能。「活」では独自形式で圧縮される。
先頭文字が「幅」
単漢字辞書「LTsv/kanchar.tsv」上のデータの「kan5x5comic」のフォントの幅を表示。全角(1024)の場合省略できる。半角(624)と麻雀牌(824)しか種類はないはず。
先頭文字が「探」
文字列から漢字配列「LTsv/kanmap.tsv」に含まれる漢字の探索。漢字逆引きの一種。文字が見つかり次第鍵盤切替。「探袮穃粫𡚴岾軅垉椦蟐靹駲閠墸壥⇔𡚴」
漢字配列「LTsv/kanmap.tsv」に見つからない文字の場合は単漢字辞書「LTsv/kanchar.tsv」の「異」「簡」「繁」「代」項目からも探索を試みる。「探檪⇔櫟」「探⇔東」
先頭文字が「汎」その他数式以外
汎用辞書「kanword.tsv」から単語を取得。単語にヒットしなければ数式扱い。2文字以上の単語は「汎」を省略できるが数式と区別するため「汎」は付加される。
「汎ヴァイオリン⇔提琴」「汎フカセツフカセツテン⇔不可説不可説転」
先頭文字が「算」その他数式
数式とみなして分数計算。テキスト入力欄(電卓)の演算結果は「⑨-4.「漢字逆引きと分数電卓&数値文字参照&日時取得&簡易辞書」の詳細」を参考。
「3927/1250」といった割り算
割り算に限らず計算結果は分数表示。「3927/1250⇔3927|1250」
「3927|1250」といった分数のみ
約分できない分数に限り少数で表示。「3927|1250⇔3.1416」

⑨-5.単漢字辞書の辞書項目

漢直で使う単漢字辞書「LTsv/kanchar.tsv」の項目について説明。「[Q(た)]」などはキーボード操作で[NFER]+[XFER]or[XFER]+[NFER]の後に押す鍵盤。
漢直鍵盤の入力操作は「⑨-2.漢直鍵盤の操作方法」を参考。

[1(ぬ):名]
文字の名称(日本語)を字引。
「名〜⇔波ダッシュ」「名~⇔チルダ(全角)」「名∼⇔ランダウの記号」「名醤⇔波ダッシュ」「#⇔ナンバーサイン(全角)」「♯⇔シャープ」。
[2(ふ):音]
漢字の音読みを字引。原子記号だとカタカナを字引。
「音醤⇔ショウ/ジャン」「音銅⇔コッパー」。
[3(あ):訓]
漢字の訓読みを字引。原子記号だと音訓両方を字引。
「訓醤⇔ひしお」「訓銅⇔ドウ/あかがね」。
[4(う):送]
漢字の送り仮名を字引。
「送醤⇔醤油/豆板醤/醤酢」「送止⇔制止/差し止める/急に止まる/行き止まり/滑り止め/思い止まる/鳴り止む」。
[5(え):異]
異体字や俗字や略字や通用や大字などを表示。
「異壷⇔壺」「異青⇔靑」「異鼠⇔鼡」「異觜⇔嘴」「異七⇔漆」「異百⇔陌」「異晦⇔卅」。
[6(お):俗]
英語等の当て字や送り仮名だけでは説明不足になりそうな使用例・例文などを字引。
「俗金⇔Au」「俗円⇔丸/¥/JPY」「俗鯖⇔server」「俗𡚴⇔妛→𡚴/木通/通草」。
[7(や):簡]
中国およびシンガポ—ルやマレ—シアなどの簡体字を字引。
「簡氣⇔气」「簡範⇔笵」。
[8(ゆ):繁]
中国および台湾や香港などの繁体字(正体字)を字引。
「繁气⇔氣」「繁笵⇔範」。
[9(よ):越]
ベトナム(越南)のチュノム(字喃)を字引。
「越頗⇔𬖾
[0(わ):地]
国名や地名や名字などを字引。
「国日⇔日本」「国米⇔亜米利加」「国英⇔英吉利西」「国中⇔中華人民共和国」「国台⇔台湾」「国香⇔香港」「国澳⇔澳門」「国蒙⇔蒙古」「国蔵⇔西蔵」「国越⇔越南」。
[-(ほ):逆]
反対の意味の漢字を字引。全角ではないという意味で半角カタカナ等の入力にも流用。
「逆暖⇔涼」「逆温⇔冷」「逆カ⇔カ」。
[^(へ):非]
似て非なる意味の漢字を字引。
「非描⇔書」("絵を描く"と"文章を書く"の違い)「非喩⇔例」("比喩表現"と"実例"の違い)「非熔⇔溶」("液状に熔解"と"液体へ溶融"の違い)。
[Q(た):英]
文字の名称(英語)を字引。もしくは漢字の英訳などを字引(和英)。
「英金⇔gold」「英円⇔circle/round/yen」「英鯖⇔mackerel」。
[W(て):顔]
顔文字や1行AAや絵文字を字引。都道府県アイコンも。
「顔二⇔2get ズサーc⌒っ゚Д゚)っ」「д⇔(゚д゚)」。「顔東⇔」。
[;(れ):代]
濁音半濁音拗音促音入力補佐やロシア語以外のキリル文字など、似た文字での代用による字引入力。麻雀牌も。
「代つ⇔づ」「代に⇔っ」「代么⇔幺」「代算⇔Computer」「代算⇔Computer」。「代東⇔🀀」。
[:(け):鍵]
基本ユーザーの自由だけど特殊な入力が必要になった時用の拡張確保項目。
[,(ね):照]
HTMLの文字参照。漢直では文字実体参照、電卓では数値文字参照が入力される予定。

⑩-0.「L:Tsv」のFAQ

Q.「LTsv/LTsv_glyph.py」などをダブルクリックしても起動しない。
A.Linuxの場合パーミッションで実行許可されてないのかも。もしWindowsの話でPythonをインストールしてなければ動くはずがないのでPythonをインストール。
Wineで「python-3.4.4.msi」が動かないって話なら「wine_sh/python3install.sh」を参考。「msiexec /i python-3.4.4.msi」の様なコマンドが必要。
Q.Pythonはもう3.5系出てますよね?
A.「python-3.5.1.exe」を「wine-portable-1.7.18-1-p4.tar.gz」で試した時エラーになったので放置。
「Visual C++ 2015」のランタイムをインストールすれば動くかもだけどランタイム自体をwineにインストール方法とか未確認。
Q.文字表示が複数あるというか、「LTsv_draw_font(<?https08:LTsv_gui.py>)」系と「LTsv_draw_glyphs(<?https09:LTsv_glyph.py>)」系の違いはなんですか。
A.フォント表示とグリフ描画の違いです。
「Tkinter」がCP932(いわゆるシフトJIS、BMP基本多言語面0xffff範囲内)を越える3バイト以上のUTF-8文字を扱えないので独自にグリフ描画モジュール用意しました。
「用意しました」と言いましたが一部の文字しか用意できてないので注意。
Q.ボタンなどのGUIにグリフ「kan5x5comic」を用いるにはどうすればいいですか。
A.GUIのボタン等に直接グリフは使えません。「kanfont_drawGTK_glyph」「kanfont_drawTkinter_glyph」などは「canvas」に描画する命令です。
GUIでフォントを表示する場合はグリフ「kan5x5.svg」かwebフォント「kan5x5comic.woff」をOSフォント「kan5x5comic.ttf」に変換してフォントをインストール。
Q.漢直鍵盤ですけど、なんでマウスボタンを押下(クリック)ではなく押上のタイミングで文字入力なんですか?
A.将来的に入力デバイスはタッチパネルに収束すると判断しました。タッチパネルではマウスカーソルの概念自体が希薄になると思います。
ペンタブレットだとペン先を少し浮かした状態でカーソル移動とかあるけど、タッチパネルには指先を少し浮かした状態とか存在しないはず。
文字入力タップ操作はNX等にカーソルをそらすことで入力キャンセルが可能です。
Q.テキスト入力欄(電卓)はなんで中途半端にVimっぽいHJKL移動なんですか?
A.[Up][Down][Left][Right]キーや[Tab]キーはフォーカス移動、[Space]キーは「button」押下など他のGUI操作を巻き込むからです。
Q.[NFER(無変換)]キーとか[XFER(変換)]キーとか存在しないキーボードですけど?
A.「LTsv/LTsv_glyph.tsv」の「kbdNX」の設定を「NFER:ShiftL」「XFER:ShiftR」に変更することで[Shift]キーで代用できます。
Q.起動できたたソフトがいつの間にか起動しなくなった。
A.ソフトの強制終了の時などに「LTsv/kanpickle.bin」が破損する場合があります。
「LTsv/kanpickle.bin」を削除してから「kanmap.py」を起動することで初期化できます。
「kanedit」「kanfont」「kanmap」「kanzip」についてはモジュールのドキュメントではなくソフトのドキュメントで扱います。

⑪-0.作者について、例えば連絡先。

更新情報はGitHubやブログを確認してください。

ooblog/LTsv10kanedit(GitHub)
https://github.com/ooblog/LTsv10kanedit
[kanedit] - 大風呂ダ敷
http://d.hatena.ne.jp/ooblog/searchdiary?word=*[kanedit]
↑Top