SKKIME シンプルかな漢字変換プログラム 1.5改
SKKIME 1.5改

SKK勝手に布教委員会

SKKIME1.5改の開発は終了しました。魂はSKKFEPに受け継がれていますので、以後はそちらをご利用ください。

ダウンロード

このプログラムは

 本プログラムはtatari氏が作成された skkime1.5 の改造品です。
 オリジナルはDDKベースの開発環境向けでしたが、本バージョンではVS2010/SDK7.1/WiX3.5+WDK7.1.0の最新の開発環境向けに手直しを行いました。
 さらにインストーラ機能の改良とレジストリ設定の見直し、バグ修正等を行ないました。

SKKのご紹介

 SKKIMEは、Emacsの日本語入力環境であるSKKの操作方式をWindowsの日本語入力(IME)として利用するプログラムです。
 SKKは佐藤雅彦教授により開発されたEmacs用の日本語入力プログラムです。日本語の文法解析を一切行なわないという斬新な設計思想で作られており、シフトキーとスペースキーの補助操作によって語句の区切りを人間側が明示することで、口語や方言、造語といった従来の日本語入力方式が特に苦手とする文に対しても送りがなの誤認識が発生しないという優れた特性を持っています。
 なお、文法解析がない故に同音異義語が苦手であるといった問題はありますが、それを補うためにシンプルな学習機能を持っており、変換と辞書への追加削除による出現順序の調整といった一連の操作を、文書入力の途中であることを意識せずシームレスに行なえる独特の操作形態を持ちます。

 現代の多くの日本語入力システムは、大容量の辞書による誤り訂正などを駆使した、誰もが初見で使える説明不要の親切設計というのが主流です。SKKはシフトキー操作等の特殊性から、こうした流れとは程遠い存在ですが、それ故に文法解析ミスによって発生する余分な操作・思考の中断から開放されます。確かに最初は戸惑うかこともあるでしょうが、それほど時間をかけないうちに、自分が「思った通りに」日本語を入力できている、という瞬間を実感できるはずです。

 もしSKKに興味が湧いたら、ぜひ本プログラムや原作のSKKIMEやSKKを体験してみてください。
 今回から全ての環境でインストーラ方式を採用したので、いつでも気軽にインストール/アンインストールを行なえます。
 常駐部分のメモリ消費量を抑える改良を加えてありますので、システムへの負荷増加を気にせず入れっぱなしにしておくことができます。操作に慣れるまでは従来のIMEと併用し少しづつ移行することも可能です。

 めくるめくSKKの世界へあなたを誘う魅惑の情報をいくつかご紹介します。

SKKとは (エスケイケイとは) [単語記事] - ニコニコ大百科
SKKへの愛に満ちたすばらしい紹介記事です。ふーん、SKKに興味があるんだ?とりまこれ読み。大丈夫だ。問題ない。ちょっとだけ!先っちょだけ!恐くない痛くない考えるな感じるんだSKKは初めてか?力抜けよ

SKK Openlab
開発終了した本家SKKに代わって開発を行なっているSKK Openlabのページです。SKK辞書ダウンロードやメンテナンス情報、SKKの生い立ちなどの資料もあります。

SKK - Wikipedia
ウィキペディア創設者ジミー・ウェールズからの緊急のお願いです。で有名なWikipediaよりSKKの記事

あとはGoogle先生、お願いします!

従来版のSKKIMEから移行される方へ(Windows XP環境のみ)

 本プログラムでは従来版とインストール/アンインストール方法が根本的に異なっているため、従来版から移行する際には一度従来版をアンインストールする必要があります。しかしながら従来版のWindows XP版 skkime1.5にはアンインストーラが存在しないため、以下の操作を手動で行なって登録解除を行なう必要があります。

A. 【テキストサービスフレームワークの登録解除】 コマンドプロンプトを開き、以下のコマンドを入力してENTERを押す
  1. regsvr32 /u C:\WINDOWS\ime\SKKIM15\skimic.dll
 すると「(ファイル名)の DllUnregisterServer は成功しました。」とのメッセージが出るのでOKを押す。

B. 【レジストリエディタの起動】 同様にコマンドプロンプト内に以下のコマンドを入力し、レジストリエディタを起動する
  1. regedt32

C. 【キーボードレイアウト設定の削除】 "マイ コンピュータ\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts" を開き、その中の "E0110411"のキー(フォルダ)を削除する。
 似たような名前が多く見間違えやすいので注意。キーの中に "日本語 (SKKIME1.5)"と書かれた文字列が存在するので削除する前によく確認すること。

D. 再起動

E. 【念のため消えたことを確認】 コントロールパネルより「地域と言語のオプション」を選択し、「言語」タブ→「詳細(D)」ボタンを操作し「テキストサービスと入力言語」のウィンドウを表示します。SKKIMEが消えていればアンインストール成功です。

F. 【不要なファイルを削除】 以下のファイルを削除します。
  1. C:\WINDOWS\ime\SKKIM15 フォルダとその中身を削除
  2. C:\Windows\System32\skki1_5u.ime ファイルを削除

 以上で従来版のアンインストールが完了します。
 辞書については、次章で説明する場所にファイルを移動すればそのまま継続して利用可能です。

インストール前の準備

1. 【Cランタイムの導入】 まず最新のCランタイムを導入してください。ランタイムが正常に導入されていない場合、本プログラムはインストールすらできません。ご注意ください。
 マイクロソフトのページから以下をダウンロードします。32ビット版OSをお使いの方は32ビット版を、64ビット版OSをお使いの方は仲良く両方インストールしてください。インストール後の再起動は不要です。
32ビット版 【ダウンロード】 Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x86)
64ビット版 【ダウンロード】 Microsoft Visual C++ 2010 SP1 再頒布可能パッケージ (x64)

 Windows Vistaをお使いの方は、Windows Installer 4.5へのアップデートが必要です。こちらもインストールしておいてください。こちらはインストール後に再起動を求められる場合があります。
【ダウンロード】 Windows Installer 4.5 Redistributable - 日本語
32ビット版は Windows6.0-KB942288-v2-x86.msu を、
64ビット版は Windows6.0-KB942288-v2-x64.msu をダウンロードして実行してください。

2. 【辞書の格納】 辞書ファイル SKK-JISYO.L を SKK Openlab からダウンロードし、ユーザフォルダにSKKIMEというフォルダを作成してその中に解凍したものを置きます。
SKK辞書Wikiから SKK-JISYO.L.gz をダウンロード後、適当な解凍ツールで解凍してください。

 辞書はOSによって置き場所が異なります。以下の場所に置いてください。(これ以外の場所に置く場合は追加設定が必要です)

Windows XPの場合
C:\Documents and Settings\(利用中のユーザ名)\Application Data\ を開いて SKKIME フォルダを作成
C:\Documents and Settings\(利用中のユーザ名)\Application Data\SKKIME\SKK-JISYO.L を置く

Windows Vista/7の場合
C:\Users\(利用中のユーザ名)\Appdata\Roaming\ を開いて SKKIME フォルダを作成
C:\Users\(利用中のユーザ名)\Appdata\Roaming\SKKIME\SKK-JISYO.L を置く

 なお、従来版から移行した方は、このフォルダにユーザ辞書ファイルを user.dic という名称にして置いておくと、そのまま内容を引き継ぐことができます。

インストール操作 (Windows XP以前の場合)

 Windows XPをお使いの方は以下の操作を行なってインストールしてください。

3. 【インストーラの実行】 お使いの環境に合ったインストーラを実行してください。

 インストーラを実行すると、必要なプログラムの転送とシステムへの登録、辞書設定等、動作に必要なレジストリ設定が自動的に行なわれます。
 Windows XPの場合、この後いくつか設定を変更して再起動しないとまだ使えるようにはなりません。
 【Windows XPはこの後再起動必須】 XP版インストーラはまだ完成度が低く、再起動を則すようなメッセージを一切出しませんが、この後再起動しないとSKKIMEは正常に動作しません。設定後速やかに再起動が必要ということを留意しておいてください。(まだこの時点では再起動する必要はありません)

4. 【テキストサービスと入力言語の設定画面を開く】 インストーラ終了後、コントロールパネルより「地域と言語のオプション」を選択し、「言語」タブ→「詳細(D)」ボタンを操作し「テキストサービスと入力言語」のウィンドウを表示します。

5. 【規定の言語の変更】 「規定の言語(L)」で「日本語 - SKKIME 1.5」を選択します。選択後はサービス一覧の中にあるSKKIMEの行が強調表示になっていることを確認し、「OK」を押して「規定の言語(L)」の設定を反映させてください。
このウィンドウの右横にある「プロパティ(P)」のボタンを押すことでSKKIMEの設定画面を開くことができます。設定内容は標準設定のままでも問題ありません。誤って開いてしまった場合は何も設定せずそのまま閉じれば大丈夫です。

6. 【再起動】 これで設定は全て終わりました。速やかに再起動してください。

7. 【動作確認】 再起動後、メモ帳などを起動して半角/全角キーを押すとSKK方式で日本語入力が行なえます。

インストール操作 (Windows Vista以降の場合)

 Windows Vista以降であれば非常に簡単に導入できます。

3. 【インストーラの実行】 お使いの環境に合ったインストーラを実行してください。

 インストーラを実行すると、必要なプログラムの転送とシステムへの登録、辞書設定等、動作に必要なレジストリ設定が自動的に行なわれ、そのままSKKIMEが利用可能となります。この状態で既にアプリケーション個別のIME設定をIMEバーから変更することで、SKKIMEが利用可能です。
ただし、そのままではシステムの規定の言語設定は変化しませんので、以下の操作で既定の言語を変更しておくのがお勧めです。

4. 【テキストサービスと入力言語の設定画面を開く】 コントロールパネルより「時計、言語および地域」の下にある、「キーボードまたは入力方法の変更」リンクを選択し「地域と言語」のウィンドウを開きます(タブ名は「キーボードと言語」です)。その中にある「キーボードの変更(C)」ボタンを押すと「テキストサービスと入力言語」のウィンドウが表示されます。

5. 【規定の言語の変更】 「規定の言語(L)」で「日本語 - SKKIME 1.5」を選択します。「OK」を押して「規定の言語(L)」の変更を反映させてください。
ウィンドウ下部の「インストールされているサービス(I)」のIME一覧の「SKKIME 1.5」を左クリックで選択後、ウィンドウの右横にある「プロパティ(P)」のボタンを押すことでSKKIMEの設定画面を開くことができます。設定内容は標準設定のままでも問題ありません。誤って開いてしまった場合は何も設定せずそのまま閉じれば大丈夫です。

 既定の言語を変更後は、新たに起動したプログラムに対してのみ設定が反映されます。設定が反映される条件がよくわからない場合や、何らかの常駐アプリケーション等を使用している場合は、念のためここで一度再起動しておくことをお勧めします。(もっと細かいことを言うと、インストール直後、再起動せずに統合レベルHighのプロセスが最初にSKKIMEを利用すると、再起動するまでSKKIMEの変換機能に不具合が発生することがわかっています。この現象が起きた場合も、一度再起動すれば解決します。)

5. 【動作確認】 インストール完了後、メモ帳などを起動して半角/全角キーを押すとSKKの方式で日本語入力が行なえます。

アンインストールせずに元のIMEと切り替える方法

 前章と同様に「テキストサービスと入力言語」のウィンドウを表示し、「規定の言語(L)」を元に戻すことで、最初使っていたIMEにいつでも戻すことができます。同様に再びSKKIMEへ切り替えることもできます。

 他にも、ウィンドウ下部にある「キーの設定」を使って特定のキー操作で入力方式を切り替えることもできます。このあたりはWindowsの標準操作ですのでヘルプや各種参考書などを参照ください。

アンインストール方法

 コントロールパネルのプログラムの追加・削除メニューより削除を選んでください。
 削除の際、モジュールを利用中のアプリケーション一覧が表示されることがありますが、無視してそのまま続けても構いません。その場合は手動で再起動を必ず行なってください。

 また、Windows XP系の場合は(インストーラは一切メッセージを出しませんが)再起動するまでは正常に削除されません。必ず再起動してください。
 さらに、Windows XP系においては、アンインストール後再起動した場合でも、テキストサービスの覧にUSまたは日本語という項目が残ってしまうことがあります。この場合は手動で削除してください。

前回の改造版からの更新点

アンインストールの方法は、regsvr32 でTSFを解除しレジストリ系の削除してリブートすると奇麗に消えてくれるはず。このスクリプトは別途入手してください。

インストーラ関連

GUI関連

TSF/IME関連

サーバ関連
特になし

まだ一部しかチェックできていません
デバッグを手伝っていただける勇者様募集中

直近の予定

 インストーラ回りの整備
本当はインストール側で自動的に設定を切り替えるべきであると認識していますが、自動的に設定を行なう方法がまだわかっていません
XP版でアンインストール後に言語設定が残る現象はインストーラ側の不備と認識していますが、直す方法がまだわかっていません
XP版もWindows Installer 4.5ベースに移行すれば何の問題もなくなるかもしれない。要検証

 Vista以降でサーバを常にMediumで起動するようにし、自動起動をなくし未使用時のリソース負担を完全にゼロに。長時間未使用の場合のサーバの自動終了など
 緑化作戦を開始
変換処理のあたりがどういうロジックで動いているのかまったくわからん…

 以下は古いので書き直します
ねむい

修正箇所について

 VisualStudioに対応させるため、原作のソースに一部手を加えています。
 それに加えてバグと思われる動作の訂正と、独断と偏見による修正を施してあります。
 以下に記録が残っている範囲で修正箇所の一部を記します。

skimconf 関連

プログラム的には単に文字列を変更しただけの大したことのない変更だが*UI的には重要*。バージョン管理目的の日付が、ユーザが普段目にする場所に常に表示されているというのは美しくないので削除。メジャーバージョン番号は残すべきか迷ったが、他のIMEでは普段は表示されないようなので削除(他IMEから移行してきたばかりのユーザや試用評価中のユーザが感じる違和感を最小限にするため)。他のIMEの設定画面に似せるためタイトル部分にSKKの元の意味である「シンプルかな漢字変換プログラム」を追加し日本語変換処理に関する事象を扱っていることを明示。
ユーザ定義キーマップのデフォルト値に"skk-toggle-katakana"を追加
キーマップの設定のfunction表示にも"skk-toggle-katakana"を追加
\40 → \x20
\177 → \x7F
キーマップで既に Space Delete が使われているため重ならないようにした結果こうなった。
その他のキーの並び順も変更。Alt+Kanji(Alt+半角/全角キー)を単独化。
Hankaku/Zenkakuを追加したのでレジストリの直接操作をせずにGUI側から半角/全角キー単独押下による変換モードの変更が可能となった。(後にレジストリ操作・GUI操作一切なしで単独押下を認識するようになったのでこの設定機能は不要となったが特に害があるわけでもないので残してある)

  1. Return → Enter
  2. Control → Ctrl
  3. Menu → Alt
  4. Kana/Hunguel → Kana
  5. Kanji/Hanja → Alt-Kanji
  6. Escape → Esc
  7. Convert → Henkan
  8. Non-Convert → Muhenkan
  9. Mode-Change → Mode Change
  10. Multiply → Numpad *
  11. Add → Numpad +
  12. Separator → Numpad Enter
  13. Minus → Numpad -
  14. Decimal → Numpad .
  15. Divide → Numpad /
  16. Left SHIFT → Left Shift
  17. Right SHIFT → Right Shift
  18. Left CONTROL → Left Ctrl
  19. Right CONTROL → Right Ctrl
  20. Left MENU → Left Alt
  21. Right MENU → Right Alt
  22. Stop Media → Media Stop
  23. Play/Pause Media → Media Play/Pause
  24. Start Mail → Launch Mail
  25. Select Media → Launch Media Select
  26. Start Application 1 → Launch Application 1
  27. Start Application 2 → Launch Application 2
  28. OEM_1 (`;:') → OEM 1 (;:)
  29. OEM_PLUS (`+') → OEM +
  30. OEM_COMMA (`,') → OEM ,
  31. OEM_MINUS (`-') → OEM -
  32. OEM_PERIOD (`.') → OEM .
  33. OEM_2 (`/?') → OEM 2 (/?)
  34. OEM_3 (``~') → OEM 3 (`~)
  35. OEM_4 (`[{') → OEM 4 ([{)
  36. OEM_5 (`\|') → OEM 5 (\|)
  37. OEM_6 (`]}') → OEM 6 (]})
  38. OEM_7 (single-quote/double-quote) → OEM 7 ('")
  39. OEM_8 → OEM 8
  40. OEM_AX → OEM AX
  41. OEM_102 → OEM 102
  42. ICO HELP → ICO Help
  43. OEM WSCTRL → OEM Wsctrl
  44. OEM CUSEL → OEM Cusel
  45. OEM ATTN → OEM Attn
  46. OEM FINISH → OEM Finish
  47. OEM COPY → OEM Copy
  48. OEM AUTO → Hankaku
  49. OEM ENLW → Zenkaku
  50. OEM BACKTAB → OEM Backtab
  51. カスタマイズ時のUIにおいて表記が実際のキー刻印と異なると初心者には混乱の元。カスタマイズが重要なアプリならばなおさら。主要なキーは日本語化すべき。暇なときになんとかする。

以下はリソース変更に関する修正
併せてメインアイコンを小型のものに変更し、プログラムサイズをファミコンソフト1本分(40KB)程度縮小

skimic 関連

skkimeu 関連

WINVER=0x500でWin2K/XP共用としてコンパルしても動くようなので一本化したかったが十分にテストできていないので今回は共通化は見送り。念のため0x501設定のバイナリとなっている。
XP版はほとんど境界テストしてないけど気合いで。
ごく一部のヘッダを使うだけなので、うまく抜き出せばフルインストールする必要はなさそう。でも普通はDDKとか全部入ってるものだし未確認なのでWDK基本部分のインストール必須としておく。

skkiserv 関連

(regcomp.c あたりにもデバッグコードが残っているのでこれもそのうち消したい)

その他共通

最初はWDKでコンパイルしていたが、コンパイラが微妙に古いのでVC2010に移行。Vista/7用モジュールはプリコンパイルドヘッダを有効化してコンパイル時間を短縮。
コンパイルに必要ない余分なファイルはばっさり削除。元のドキュメント類が必要な場合はオリジナルのソースアーカイブからコピーするべし。
x64版でLRESULTの値をintに落としてからCB_ERRと比較している箇所は64ビットのまま比較するように修正。
環境変数TEMPにはRAMディスクを想定。ビルド後はクリーンしない限りTEMPに大量に中間ファイルが残る設定なので注意。

co (Twitter)


以下は試作中の作業メモの写し。
他人が読んでも役立つ情報はないかもしれないけど、一応更新予定とか考え中のネタを残しておく。
ある程度試作が進んだ段階でまとめ直す予定。

TODO

気になっていること

いわゆるXMouse(マウスオーバーしたウィンドウをZオーダーを変えずにアクティブにする)によって変換候補の窓を持つウィンドウのフォーカスを変更すると、ウィンドウ外(特にデスクトップ左上付近)に一瞬ゴミが表示される。表示が一瞬崩れるだけなで副作用もなく実用上問題はないのだが、仕様だとしてもちょっと美しくない。
ついでに言うと変換候補ウィンドウのZオーダが最前面になるため(視認性が良くなるので悪くはないのだが)、奥にあるウィンドウで変換を行なっている時に不自然な表示になる。ひとまずこれは仕様ということで問題ないがZオーダーを対象ウィンドウのきっかり1つ上に設定する方法があるか調査すべき。

2k/XPではskimic.dllは不要なのでは?regsvrで未登録でも問題なし、ファイルを消しても問題なし。今回のビルドでは作らないようにした。INFも変更予定。

「読み換え規則の編集」ダイアログは横一列に並べたほうが見やすそう

「特殊キーの追加」ダイアログの表示内容がおかしい気がする。要調査

Windows 7 x64だとメモ帳の時候補窓の横幅が妙に狭い(等幅フォントで82文字程度)。XP版と異なり、親のウィンドウサイズがうまく取れないとデフォルトサイズになっている?Firefoxなら問題ない。
というか元祖SKKと比べると一度に表示される候補数がデフォルトのままだとやたら多いのが謎。ddskkだとこうなのか。編集できるから問題ないがデフォルト個数が本当にこのままで良いかどうか考えなおすべきだと思う。
メニューキーの設定ダイアログの初期フォーカスがきちんと設定されていない。なんとかする。
キーボードはESC/BS/Enterが設定できないのは仕様のままでいいのか?→エンバグしてしまいBSとENTERがおかしなことになっている。なんとかする。
ソフトキーボードはデザインが凝っててとてもよいがマウスクリックしか受け付けない作りなのがとても惜しい。キー押下イベントにも対応させる。

リストコントロールの順序を上下させるボタンを使ってどれか要素を端まで移動させた瞬間、ダイアログへのフォーカスが消滅する?その後はダイアログのオブジェクトにフォーカスを合わせ直すまでそのダイアログではTABによるフォーカス変更やENTER/ESCなどの操作を受けつけなくなるようだ。

skimicにて候補表示窓が二行になった時、1行目の末尾になぜか「▼」の一部分が表示され表示が崩れる問題を直す。

CANDLIST_KEYASSIGN_USERDEFINED の値は2だが、skimconf では ffff が設定されるようだ。要原因究明せよ

CTRL+BSで変な文字がはいる現象を追え

レジストリにTickのエントリがないとIME全体がまったく動作しない。エントリがなくても最低限の動作が行なわれるように直す。

ローマ時かな変換ルールの変更

0. 特殊(子音)xxのルールを変更し、単独の「っ」となるようにした。(「っ」と母音を多用するエr…口語表現を入力する際に、子音状態を変えずかつ少ないタイプ数で入力するため)

プログラム変更不要/変換ルールのみ変更

これにより以下の違いが発生する。
axxaxxa → 旧「あっぁっぁ」新「あっあっあ」

1. ローマ字変換のohの直後がhだった場合のルールを変更。(口語の入力しやすさを優先するため)

プログラム変更不要/変換ルールのみ変更

ステート#1を使用

1h[母音|h]→0h*
1h*→0* お
1*→0*

これにより以下の違いが発生する。
oha → 変化なし「おは」
ohya → 変化なし「おおや」
ohha → 旧「おおは」新「おっは」

ルールが表示されているリストビュー内においてエスケープ文字であるバックスラッシュ(円マーク)が二重に表示されるのはおかしいのは何故だぜ?
@todo 現在ルールのリストビュー部分はシングルクリックによる選択しかできないが、ダブルクリックで編集できるようになればもっと使いやすくなるはず。GUI実装の勉強は分からないことだらけである

2. 子音k,wのルールを変更し、連続時にJIS X 0208アルファベットに正確に変換できるように変更。(該当のアルファベットを多用するネットスラングをMSIMEとほぼ同じシーケンスで入力できるようにするため)

プログラム変更不要/変換ルールのみ変更

kk (廃止)
kka っか
kki っき
kku っく
kke っけ
kko っこ
kkk→2 kkk または kkk→2k kk
kkya っきゃ
kkyi っきぃ
kkyu っきゅ
kkye っきぇ
kkyo っきょ

ww (廃止)
wwa っわ
wwi っうぃ
wwu っう
wwe っうぇ
wwo っを
www→2 www または www→2w ww

ステート#2を使用

2?→0*
2k→2 k
2w→w w

または

2?→0*
2kk→2k k
2kw→2w k
2k?→0*
2ww→2w w
2wk→2k w
2w?→0*

@bug 2? → 2* とか 2?→1* 1?→2* など、出力を持たない状態遷移だけの無限ループがある場合、テキストサービスがその状態に遷移した瞬間に実行中のプロセスが暴走状態となることに気付いた。この動作自体は仕様としたままでよいので(スタティックなテーブルの実行時チェックなんて最低の行為)、skimconfにて設定時にチェックしこのようなループは除外するべき。レジストリの内容については建前上、手動書き換えはありえないため、チェックは不要。
@todo 現在の状態遷移管理の仕様は限りなくバグに近い。アルファベット以外(例えばカーソルや削除)の入力操作によってローマ字かな変換のステートは0に戻るべき。現在のルールではwwwENTERとかwwwBSBSと入力があった後もステート2に状態遷移したままになり、kとwで開始するシーケンスが変化したままとなる。普通のローマ字入力を行なうだけなら実質問題はない(行頭から「っわ」と入力するような日本語は存在しない)が、口語や他言語の発音といった不規則な文字組み合わせの記述において将来支障が出るかもしれない。ちなみに元のSKKIMEにもこの問題があり、例えばoBShyaと入力すると「ひゃ」ではなく「おや」と変換されてしまう。削除などによって内部状態が見た目と一致しなくなってしまい、人間側から見るとシンプルではなくなっているように思える。

okke → 変化なし「おっけ」
uwwa → 変化なし「うっわ」

kおよびwを3つ以上連続した場合に変換結果の違いが発生する。しかしこのような入力パターンは一般的な日本語や口語、ネットスラング等においても使われることはない。こうした頻度が低いパターンは前述した別の入力方式で対処するものとする。
okkke → 旧「おっっけ」新「おkkけ」 旧版の代替入力方法oxxxxke
uwwwa → 旧「うっっわ」新「うwwわ」 旧版の代替入力方法uxxxxwa

3. 【バグが直るまで無効化】特殊(子音)xによる小文字「ぁぃぅぇぉ」で終わる変換を行なった直後に連続する同一の母音は小文字となる。大文字に戻す場合は再度xを入力する。(口語や感動詞の入力時に多用される連続した小文字を入力しやすくするため)

プログラム変更不要/変換ルールのみ変更

xa→3 ぁ (現在は0に遷移)
xi→3 ぃ (現在は0に遷移)
xu→3 ぅ (現在は0に遷移)
xe→3 ぇ (現在は0に遷移)
xo→3 ぉ (現在は0に遷移)

ステート#3を使用

3a→3 ぁ
3i→3 ぃ
3u→3 ぅ
3e→3 ぇ
3o→3 ぉ
3xa→0 あ
3xi→0 い
3xu→0 う
3xe→0 え
3xo→0 お
3x*→0*
3*→0*

これにより以下の違いが発生する。
waxaaaxa → 旧「わぁああぁ」新「わぁぁぁあ」
「おいィ」のようなモード変更を伴う場合は変化なし

この設定でしばらく使ってみたが、前述の状態遷移の仕様(バグ)を抱えたままではかなり使いづらい。仕方なくステート3への遷移を行なわないようにして無効化した。将来バグを修正できた暁にはこの設定を戻す予定。

未実装

/*
MicrosoftのIMEより少ないキーストロークで入力するためにはデフォルトのローマ字変換ルールから若干変更する必要あり。
具体的には「kk→k=っ」を削除し、「kka=っか」「kki=っき」「kku=っく」「kke=っけ」「kko=っこ」「kkk→kk=k」を追加、「ww:0→w:0=っ」から「ww:0→w:1=w」に変更しw連続ヘブン状態こと「w:1=w」を追加する。
ただし、この変更により「wawwawwa:わっわっわ」と「wowwowwo:をっをっを」は入力不可能となる。元々「おっおっお」などの「母音+っ」の表現はSKKのデフォルトルールだと苦手だったので問題ないはず。私は「xx:0=っ」にルールを修正し「oxxoxxo:おっおっお」との入力で対応していたので問題はなかった。

xで開始した小文字ローマ字変換の後の母音入力を自動的に小文字化
/

5. 確定操作時に未変換の子音がバッファ内に残っていた場合、JIS X 0208アルファベットに変換して出力する機能(corrupted-consonant)を追加。(従来処理はstrict-consonantとでもする。オリジナルSKKも改造したいがlispを勉強する服がない)

これにより以下の違いが発生する。
okENTER → 旧「お」 新「おk」
umENTER → 旧「う」 新「うm」

ただし子音1文字に対応するローマ字変換ルールが存在する場合はそちらが優先される
unENTER → 「うん」

他の子音の際の挙動との一貫性およびネットスラングへの対応のためにこれも除外したいが、原作の理念とまったく異なるベクトルのような気がするので、オプションで選択式にすべきか。いい方法が思いつかない。うn

未実装

6. 変換時に辞書の最後のエントリに加えて全部カタカナの語を自動的に候補として追加する機能を追加

修正予定

ローマ字かな変換ルールとキーマップの両側にskk内部コマンドが複雑に配置されているのでわかりづらい。
コントロール以外の殆どのキーマップは self-insert-character/skk-insert/skk-jisx0208-latin-insertになっているので、省略時はこれを適用すべき。現在はキーマップから削除すると skk-insert まで処理が来ない
self-insert-characterは設定しなくても問題なさそうな感じ。要調査
kill-lineが機能していない?

変換中に▽にカーソルを移動させて削除するとおかしなことになる。このような挙動は意図的にやらない限り起きないようなので実質問題はないと思われるが、明らかにバグっぽい動きなので潰しておくべき。要調査

GUI(skimconf)にはまだまだ未知の挙動が残されている。例えば「単語の註釈」を変更しても「適用」ボタンが押せないとか。誰か一緒にデバッグ項目列挙を

入力 オリジナルの動作 修正後の動作
AHA あ*は(問題なし) あ*は
ANA あ*んあ(nの変換が優先される) あ*な
OHE お*おE(ohの変換が優先される) お*へ

以下は旧バージョン(ローマ字かな変換ルールで全角英文字を出していた頃)の動作
AKA	あ*kあ(kの変換が優先される)	あ*か
AWA	あ*wあ(wの変換が優先される)	あ*わ

原作ソース中に特殊表記は最後の1文字だけにしたい、という記述があったが個人的には先頭1文字にも欲しい。先頭一文字に特殊(実質子音)を指定することで、例えば"?."というパターンなら"z."だけでなく"j."や"f."から「…」を出力する、などといった変換ルールが使えるようになり、より自由度が上がって便利なのでは(ただし現在のコードではこうしたマッチングは行なわれない)。現在のテーブルでは先頭1文字だけが異なる記号ルールが3種類あるのでこのサイズは1/3に圧縮できるという利点もある。
ROMなテーブルにエスケープシーケンスを保持したまま実行時に2文字読んで判定する…という今の作りはいろいろと勿体ない。特殊文字は内部1文字とし、GUI側では見やすいように「● 母 子」の1文字としてはどうか。エスケープシーケンスの処理自体はしばらく残しておけば移行期間中で古いレジストリが残っていても問題ないはず

関係ないが個人的には "JISYO" と書くローマ字表記に違和感を感じる…。

SKKの原作を意識しすぎている(?)ためか気になる挙動がある。解析できたら直す。低優先。
元の仕様の通りだから仕方ないが、候補一覧表示になった瞬間入力したひらがなが消えるのは非常に使いづらい。視線移動を強要させられているようで悔しくてなんかビクンビクンする。Googleのトップページとも相性が悪い。いいことが一つもないのでこれは直すべき。
MSIMEからの移行中の人などは composition-auto-shift なしで使うことが想定される(正直それ以外の目的でチェックを外す必要性を感じない)が、この時 egg-like-newline を設定していても確定(Enter)時に改行が入ってしまう(さらに言うとCTRL+Jでは確定できないのも非常に悲しい)。これはきっと相当なストレスとなるはず。
kakutei-early の設定を外せる意図がよくわからない。この挙動が正しいのかもよくわからない。たぶん私が何か勘違いしている。要コード理解

句読点の文字の切り替えだけでなく、連動して記号類のデフォルト全角/半角の設定セットを複数切り替えられると便利になりそう。つーか使いもしない句読点の使い分け機能なんかよりずっと必要。例えば日本語文の時は括弧類は全角、ソース書きの時は括弧類は半角にしたい、など。APIで外部から制御できるようにしてIMEをオンにしたプロセスに合わせて適切なモードを選んでくれるような外部常駐処理が書けるとなおよし。ブラウザのプラグインでサイトによって文字セットや変換の挙動を変えるなんてのもあり。むしろIMEそのものを切り替えて解決できるようにするべき問題のような気がしてきた。

ローマ字かな変換ルールがひらがなとカタカナで同じテーブルを使っているが、これは別々にすべき。「ヴ」はともかくとして「ヵヶ」はカタカナモードになっている(とユーザーが認識している)時しか打鍵されないシーケンスなのに、ひらがな側にも同じルールが用意されている(ひらがなの時に打鍵されることは正常系ではありえない)のが美しくない。どうしても今の共通ルールにするなら、Qによるひらがな→カタカナ一括変換の際に「xka xke」でタイプされたバッファ内のひらがなを正確に変換できるようにするのが筋だろう。しかしこれだと、ますます誰も使わない(使いたいと思う人のいない)死蔵コードになりそう。やはり別々にしたほうがすっきりするはず。
上記と反するが、設定ウィンドウではどうせルール表示をひらがな/カタカナの片方だけしか一度に表示しないので、カタカナ側は一部の例外のみ指定してあとは自動生成、みたいな形で設定できるほうがいいかも。

ローマ字かな変換ルールも、辞書登録と同様に普段の操作によって自由に編集できるようにするべきではないだろうか。SKKが最強なのは通常の変換操作と辞書登録が完璧に統合されているところにあるのであって、そのスタイルをあらゆる設定変更シーンに取り入れたい。例えば'Xhj Kuma ^M'とやるとローマ字かな変換ルールhjに熊を登録して即利用可能、という感じで。これで試行錯誤しながら多くのショートカット表現を学習できるようになって、いつの日かオレオレ無連想配列をマスターできるかもしれない。

SKKの伝統なので簡単には直せないし、なかなか慣れないかもしれないが…IMEの変換ラインの所の三角形は「文字コードとして」表示するのは他のアプリと相性がよろしくない。具体的にいうとGoogleトップページの検索スクリプトとか。
そもそも表示が「三角形1文字幅」でなければいけない理由がない。文字の色やアンダーラインによる区別でも十分実用になるのではないか。
さらに言うと「本当に顧客が欲しかったもの」は三角形の自己主張ではなくて、むしろSetCaretColorのようなフリーソフトのskkime対応版ではなかろうか。あとXKeymacsも対応版が絶対に必要。他力本願。
変換中の文字を確定すると「三角形」マークが消えて1文字文左にずれるという挙動は、(10年以上の利用で慣れすぎてしまっているので自分ではわからないが)初見の人間なら相当な違和感を感じるだろうし、細かな視線移動の繰り返しは脳とか視神経とかに負担をかけているような気がする。

Win32版はFASTCALLベースに変更(ソース側変更は特になし)したが全体的に関数の引数が多すぎてあまり効果が出ていないかもしれない。ソース変更によるチューニングの余地あり。

短い文字列定数を定数ポインタで記録してる部分が大量にある。64ビット化で勿体ないお化けが
初期ルールの記録方式の変更
→ 固定長の構造体ではなく文字列ベースのコマンドへ変更

DLL内のデフォルト変換テーブルは限定的にしか使われない上、一度内部形式に変換されてからしか使われない。にもかかわらずポインタを多用したデータ構造になっていて特に64ビット版だとサイズが無駄にでかくなる。動的に読み込むか軽くエンコードして格納。
inserted by FC2 system