SKK日本語入力FEP設定
THE CLIFFHANGER

運の悪い人は安心せよ、
それ以上の悪運はないのだから…

オォゥケェェェェィ!(バシャバシャ)おわぁぁ!

ダウンロード

概要

解説

 このファイルにはSKK日本語入力FEP(以下SKKFEP)の動作に必要な情報を記述します。
 このファイルには主にローマ字かな変換の定義が記述されています。ローマ字かな変換規則はSKK10のものを基準に、ヘボン式ローマ字表記の一部を拡張したものとなっています。本格的にルール拡張を行ないたい場合は、skkrule_azik.txtなどの例を参照してください。

 このファイルはシフトJIS/EUC/UTF-8N/UTF-8/UTF-16LEで記述可能です。シフトJISやEUCでの文字化けを防ぎ確実に文字を記述したい場合はHTMLと同じ文字コード記述表記が利用してください。
 このファイルは行単位で処理されます。各行は語句で構成されており、語句の間は空白やタブで区切って記述します。
 以下の定義が記述可能です。

定義一覧
名称表記補足
註釈:##以降は存在しないものとして扱われる
制御用註釈:?変数名=値条件を満たす場合のみ処理する
定義開始・終了:.定義開始または範囲註釈
アセンブラ始動:デバッグ版のみ
文字順序定義:"** 文字"出現順に登録され、重複した文字は除外される
文字順序定義:"*** 文字"出現順に登録され、重複があってもそのまま
状態定義:状態名:名称・数値または1文字で指定可能
初期定義:起動/拡張/時間/空欄 数値 
発動定義:発動 文字列 
選択定義:選択 文字列 
回数定義:回数 数値候補選択の文字数以下の値のみ指定可能
除外定義:除外 文字子音確定から除外する文字を1文字だけ指定可能
音素定義:音素(文字) 文字列利用前に定義が必要
設定定義:設定 変数名 値設定用変数の定義
変換規則定義:[開始状態:]変換パターン 出力文字列 [[次の状態:]次パターン] 

 SKKFEPのローマ字かな変換処理は『一文字マッチングして文字出力と状態遷移を行なう』という動作の繰り返しを基本とし、その操作をなるべく小規模のグループでまとめることでデータサイズと展開処理の双方のサイズ短縮を目指しています。
 正直、設定に関しては非常に難解で弄りにくい構造になってしまっていると思いますが、実行効率とサイズ削減のためならたとえゴムゴムした禁断の果実であろうがマヨネーズで食べ尽くす勢いで作っていますので仕方ありません。ユーザの利便性などというしみったれた俗世の柵とは無縁の孤独な世界で限界を追い求め続ける有限状態マシンのプログラミングをお楽しみください。

特殊表記について

 変換規則定義では以下の特殊表記が使用できます。

特殊表記一覧
文字意味補足
.文字なしa.bとa,bのどちらもabと同じ
,文字なし 
文字:状態全ての名称は先頭一文字だけで判定
"*"すべての文字に一致 
?文字任意の音素音素名は省略可能
!文字任意の音素で文字出力音素名は省略可能
$文字特殊文字通常の文字とは異なる特殊な文字コードとして扱う
&文字子音置換次パターン部分にのみ記述可能
&#値;文字コード記述HTMLと同じ
\文字エスケープシーケンス記号類を使う時はエスケープすること
^文字コントロールコード通常キー(BS/TAB/ENTER/ESC)で発生した場合も含む
S-キーSHIFTと文字の押下 
C-キーCTRLと文字の押下 
M-キーALTと文字の押下 
キー+キー複数キーの押下 (最後のキーが押下された時に判定) 
[特殊キー名称]特殊キー (キーコードまたはキー名称) 

変換パターンの特殊表記
「.」「,」の単独使用不可 (必ず1文字以上の有効なキー入力であること)

次パターンの特殊表記
末尾の「*」「?」「!」は同じ動作 (常に最後のキー入力を引き継ぐ。省略可)
「&文字」と表記した場合、子音を文字で置き換える (次パターン遷移と排他)

出力文字列の特殊表記
「*」は自動変換不要の意味となる (未実装)
「!名称」で動作命令または特殊命令となる

動作命令一覧
名称動作
!直接確定アプリケーションにそのままキー入力を伝える。
!子音確定入力された子音アルファベットをそのまま確定する。
!日付未実装
!拡張機能発動未実装
!反転確定ひらがな⇔カタカナ
!置換確定ひらがな⇒半角カナ 半角英数⇒全角英数
!偽装確定学習せずに確定する (シフト+ASDFJKLによる選択時も同様)
!変換編集内容を変換する。
!送り変換編集内容を送りがな付で変換する。
!接尾辞変換編集内容を接尾辞として変換する。
!推定変換編集内容を補完して変換する。
!補完編集内容を補完する。補完中なら次の候補を選択する。
!前補完編集内容を補完する。補完中なら前の候補を選択する。
!取戻入力内容を取り戻して編集する。
!取戻変換入力内容を取り戻して変換する。(未実装)
!取戻推定変換入力内容を取り戻して推定変換する。(未実装)
!送りがな送りがな変換操作を開始する。
!送り入力送りがなとして文字入力する。
!編集入力編集状態にして文字入力する。(未実装)
!英語入力英語状態にして文字入力する。(未実装)
!半角入力半角状態にして文字入力する。(未実装)
!和英切替編集状態の日本語⇔英語を切り替える。
!表示切替表示形式の外部領域⇔変換領域を切り替える。
!次候補次の候補を選択する。
!前候補前の候補を選択する。
!削除現在の候補をユーザ辞書から削除する。
!再編集現在の候補の登録内容を修正してユーザ辞書に保存する。
!絞り込み同じ漢字を持つ単語で候補を絞り込む。
!編集単語の編集を開始する。
!英語編集英単語の編集を開始する。
!接頭辞編集現在の候補を確定し接頭辞の編集を開始する。
!日本語ひらがな状態にする。(カタカナ状態ならば何もしない)
!ひらがなひらがな状態にする。
!カタカナカタカナ状態にする。
!半角カナ半角カナ状態にする。
!全角英数全角英数状態にする。
!半角英数半角英数状態にする。
!直接操作入力メソッド(IME)無効状態にする。
!カタカナ切替ひらがな⇔カタカナ状態を切り替える。
!半角カナ切替ひらがな⇔半角カナ状態を切り替える。
!全角英数切替ひらがな⇔全角英数状態を切り替える。
!半角英数切替ひらがな⇔半角英数状態を切り替える。
!入力切替ひらがな⇔入力メソッド(IME)無効状態を切り替『だが断る』

特殊命令一覧
名称動作
(標準)入力処理を行なう。
?中断操作を中断する。(新規操作を開始できる状態へ)
?後退一文字後退する。(一文字後退が実行できる状態へ)
?無効入力処理を行なわない。(暗黙の確定すら行なわない)
(標準)確定時のみキー操作を吸収する。(指定なし時の動作)
?吸収常にキー操作を吸収する。
?通過確定時にキー操作を吸収しない。
?実行単語登録時に単語登録を実行する。
?貼付単語登録時にクリップボードの内容を貼り付ける。
?区切単語登録時に区切り文字を入力する。(セミコロンで代用できない場面用)
?切替単語登録時に表示形式を切り替える。

アセンブラ命令一覧
書式内容
f 名前命令追加命令を定義
l 名前命令追加命令を定義(制御)
r 名前命令追加命令を定義(無効)
文字:ラベルを定義
"文字列"文字列を出力

キー名称一覧
番号による表記名前による表記
0x08BS
0x09TAB
0x0DENTER RETURN
0x10SHIFT
0x11CTRL
0x12ALT
0x13PAUSE
0x19漢字 (ALT+半角/全角を表現)
0x1BESC
0x1C変換
0x1D無変換
0x20SPACE
0x21PAGEUP
0x22PAGEDOWN
0x23END
0x24HOME
0x25
0x26
0x27
0x28
0x2DINSERT
0x2EDELETE DEL
0x5BWIN
0x5C右WIN
0x5DAPP
0x70F1
0x71F2
0x72F3
0x73F4
0x74F5
0x75F6
0x76F7
0x77F8
0x78F9
0x79F10
0x7AF11
0x7BF12
0x90NUM
0x91SCROLL
0xA0左SHIFT
0xA1右SHIFT
0xA2左CTRL
0xA3右CTRL
0xA4左ALT
0xA5右ALT
0xF0CAPS
0xF2ひらがな
0xF3半角
0xF4全角

補足
 開始状態と次の状態は省略可能です。初期値は「共通:」になっています。
 パターンはキー入力の順に記述します。主にアルファベットで記述します。
 特殊文字はキー入力では表現不可能な独自の内部コードに変換されます。
 記号類を本来の文字として利用する場合はバックスラッシュを前置します。
 出力文字列はひらがなで記述しますが「ヴヵヶヷヸヹヺ」は特別にカタカナで記述可能です。
 それ以外はカタカナで書くとひらがな状態でもカタカナのまま出力されます。
 ひらがな・カタカナの変換が必要かどうかは定義時に静的に判定されるため、顔文字などで仮名を記号的に扱いたい場合は、先頭に*を記入します。(未実装)

文字順序の定義について

 文字順序の定義はレジストリやROM上のデータ格納順序に影響します。
 文字セット順に並べてテーブルを圧縮しやすくしたり、テーブル内に特定のメッセージを仕込むなどといった用途に使用します。文字列は区切りを含まず連結されて格納されるため、文字の組み合わせ順を工夫することでテーブルサイズを短縮できます。例えば「あい」と「いう」なら「あいう」の3文字で格納可能です。
 第15版以降は、多くの文字が木側に格納されるようになり、本テーブルも自動生成されるようになったため、宣言不要となりました。なお、標準設定では文字列テーブルは利用していません。ルール拡張時に活用してください。

詳細動作の定義について

 この設定ファイルを受け取った利用者におすすめしたい初期値を記述しておくことができます。記述した値は初期値としてのみ扱われるため、この設定ファイルを変更しなくても利用者の好みで後からレジストリ(≒GUI設定)で上書き可能です。
 記述が面倒な場合はすべて省略可能です。

その他

 開始状態は英数字または「通常/編集/変換/共通/特殊/万能」の名称で指定します。この6種類は最低限の動作に必要となる固有名です。これに加えて9種類の状態を自由に定義できます。状態名を表記すると自動的に定義されます。標準設定では8種類(h/a/i/u/e/o/n/w)の状態を定義しています。
 音素定義では母音や記号などの判定用の文字列を記述します。音素は16種類まで自由に定義できます。音素定義を行なうと、音素のどれか一文字との一致判定(ワイルドカード)が利用できるようになります。標準設定では5種類(!?/!?n/!?s/!?z/!?v)の“音素”と“定義”っちまったんだよ・・・!?ビキィ
 特殊文字(特殊キー)は内部で1つの文字として処理されます。合計約90種類が定義可能です。標準設定では2種類($x/$y)の特殊文字を定義しています。

 定義は「共通:」状態で開始されます。
 特殊文字が変換パターンまたは次パターンの1文字目に出現する場合は自動的に「万能:」状態が指定されます。
 動作命令と特殊命令は必ず語句の先頭に記述します。文字出力とは排他動作となります。
 特殊命令が出現する場合は自動的に「特殊:」状態が指定されます。

 変換規則の記述順序に制限はありません。基本的に文字コードの判定は記述した順に行なわれるため、出現頻度の高い順に記述すると誤差程度に動作クロックを稼げます。なお、音素に含まれる文字が単独で出現した場合、音素に対応するワイルドカードよりも優先して判定されます。例えば「a」の文字を含んだ定義は「!?」(母音1文字)を含む定義よりも必ず先に判定されます。ワイルドカード同士の優先度の調整は行なわれません。

co (Twitter)

inserted by FC2 system