三 ┏( ^o^)┛ < Japanese Input Method SKK (Simple Kana to Kanji conversion) on your terminal
端末で動作するSKKのようなFEPです。
辞書登録ができません。学習は少しだけします。 辞書をメンテナンスするのがめんどくさい人におすすめ。
変換候補がSKKのL辞書から見つからない場合は、Google CGI APIを使って連節変換しようとします。 文節の区切り直しもできます。オリジナルのSKKとGoogleIMEを混ぜたようなよくわからない操作感になります。
選択候補がポップアップで出ます。 canossaというエンジンが裏でフル端末エミュレーションに近いことをやっているので ポップアップを出した領域を復元できます。canossaがあると現在の端末の状態を知りたい放題になるので、 最終的にはTSFのように周囲のコンテキストに応じた賢い変換を可能にするポテンシャルを秘めています。
シェルのような何かとフーローティングウィンドウ型端末マルチプレクス機能搭載 どんなコンテキストからでもプログラムを起動できる、GUIシェルのような謎の操作感を味わうことができます。
ポップアップでWikipediaがひけます。 別途w3mが必要です。
Ambiguous Reporting(MinTTY)、拡張モード8428(RLogin)、拡張モード8840(tanasinn)対応。 途中でフォントを変えるなどしても文字ずれしにくくなっています。 terminfoを一切使わず、termpropというオリジナルの仕組みで端末のAmbiguous Widthの表示状態や 文字結合サポート状況、BMP外Unicodeサポート状況等のケーパビリティを動的に収集します。
canossaが親端末の代理でマウスモードの状態管理をするので、ポップアップが出ている時は シェル上などの本来マウスモードが有効にならない場所でもマウスがつかえます。 拡張モード 1002 Event Mouse Tracking(xterm)対応。 ポップアップ候補のクリックによる選択、ダブルクリックによる確定、 スクロールによる候補の選択、ポップアップ位置のドラッグによる移動、スクロールバーに対する各種操作などができます。 拡張モード1003 All Event Mouse Tracking(xterm)にも対応するので、端末によってはマウスオーバーイベントへUIが追従します。 xterm由来のフォーカスモードレポーティング(DECSET 1004)にも対応しています。
拡張マウストラッキング対応。 SGR 1006/URXVT 1015どちらかのマウスエンコーディング形式に対応した端末であれば、 223桁以上のマウス座標で誤動作することがありません。
IME状態制御シーケンス TTIMESV/TTIMEST/TTIMERS (TeraTerm)、および拡張モード8441(RLogin)対応。 アプリケーションからのIM制御ができます。 また、アプリケーションに対して入力モード切り替えをイベントとして通知し、 IME-awareなユーザーインターフェースの実現を支援します。
Title Stacking(xterm)対応。 対応端末であれば、-uオプションをつけてタイトルをインジケータ代わりに使用した場合でも、 プログラム終了時に元の状態に復元します。 なお、一部の端末では強制的にタイトル機能は無効化されます。
Application Escape Mode (MinTTY)対応 オリジナルのSKKにはない挙動ですが、単独エスケープでC-gと同様の動作になります。 その際、拡張モード7727のApplication Escape Modeが有効化されていれば、 エスケープのタイムアウト待ち遅延を避けることが可能です。
pip経由でインストールするのが簡単です。 ::
$ pip install sentimental-skk --upgrade
ソースから入れる場合は ::
$ git clone --recursive https://github.com/saitoha/sentimental-skk.git sentimental-skk
$ cd sentimental-skk
$ python setup.py install
とします。
以下のコマンドで起動します。
$ sskk [options]
-h, --help ヘルプを表示します
--version バージョンを表示します
-t TERM, --term=TERM TERM環境変数を設定します
-l LANG, --lang=LANG LANG環境変数を設定します
-o ENC, --outenc=ENC 端末のエンコーディングを設定します
-u, --use-titlebar (可能ならば)タイトルバーを使用します
まず、通常のSKK入力を使ってみましょう。 日本語入力モードは、C-J (Ctrlキー + J)で開始します。 C-Jに続けて
KyouHaYoITenkiDesu.
と打ってみましょう。
今日は良い天気です。
と表示されると思います。
次に、連節変換を使ってみます。
C-Jに続けて
Aoiumitosiroikumo.
と打ってみましょう。
碧い海と白い雲。
と表示されると思います。
C-n/C-pで候補の選択、C-f/C-bで文節の移動、C-h/C-lで文節の区切り直しです。
ポップアップ選択中の単語をWikipediaで調べることができます。 C-wを押してみてください。こんなかんじになります。
C-Jに続けて「/$」を入力するとSKKシェルに入ります。
コマンドに続けてEnterを押すとウィンドウが起動します。 ウィンドウはいくつでも立ち上げることができ、フォーカス制御やリサイズ、移動なども マウスで行うことができます。
少ないですがいくつかの設定項目があります。 C-Jに続けて「@」を入力すると設定モードに入ります。
バグなどがあったら、issueをたてるかtwitterなどで教えてください。 よろしくおねがいします。 kefir_
Masahiko Sato et al./SKK Development Team's SKK-JISYO.L
This package includes the large SKK dictionary, SKK-JISYO.L. http://openlab.jp/skk/skk/dic/SKK-JISYO.L
wcwidth.py https://svn.wso2.org/repos/wso2/carbon/platform/trunk/dependencies/cassandra/pylib/cqlshlib/wcwidth.py (Licensed under Apache License 2.0)
Hayaki Saito's Canossa https://github.com/saitoha/canossa
Hayaki Saito's TFF, Terminal Filter Framework https://github.com/saitoha/tff
Hayaki Saito's termprop https://github.com/saitoha/tff