さいころえんぴつ

最終更新日: 2003年10月14日


さいころえんぴつの概要

このソフトは,文節解析しない/動詞の活用形を考慮しない/品詞を考慮しない,と比較的シンプルな日本語入力ユーティリティです。

簡素な日本語入力方法として有名なものにSKKがありますが,その同類ですね。仕組みも使い方も簡単で,使い込むうちにだんだん手になじんでくる……そんな鉛筆みたいなツールを目指しています。

主な特徴は下記の通りです。

  • 簡単なルールに従って動作します。決められキー入力に対しては同じ文字が入力されます。 ただし,学習辞書を使用している場合はこの限りではありません。
  • IMEではなく単なるアプリとして動作します。
  • 高度なキーカスタマイズが可能です。日本語入力のためではなく、単なるキーカスタマイザとしても利用可能です。

プログラムのバグレポート、要望等ありましたら、こちらの掲示板メールにどうぞ。

動作環境

Windows2000、WindowsXPで動作確認済です。
Windows NT4.0では確認していませんが、特に問題ないと思います。
Windown9xではたぶん動作しません。

インストール

GNU General Public License(GPL、参考用の日本語訳)に同意の上、ファイルをダウンロードし、適当なフォルダに展開してください。インストーラ等はありません。

GPLに同意できない場合は本プログラムのダウンロード(コピー)は許可しません。すでにダウンロードしてしまっていた場合は即座にファイルを削除してください。

なお、作成ずみの設定ファイルがsampleフォルダにあります。ファイル名を"saikoropencil.xml"に変更すると、そのファイルを設定ファイルとして読み込みます。

サンプル

qwerty.xml
普通のローマ字入力に対応した設定ファイルです。デフォルトでこのファイルを読み込みます。
SakuraDvorak.xml
かな入力に加え、キーカスタマイズも行っている設定ファイルです。かな入力:さくら配列/アルファベット入力:Dvorakとなっています。
NewJIS_WithGlobalIME.xml
キーカスタマイズのみを行う設定ファイルです。新JIS配列と呼ばれる配列で入力できます。漢字変換はIMEを使用しています。
NewJIS.xml
キーカスタマイズのみを行う設定ファイルです。新JIS配列と呼ばれる配列で入力できます。漢字変換はさいころえんぴつの機能を使用しています。
Hana_WithGlobalIME.xml
キーカスタマイズのみを行う設定ファイルです。花配列と呼ばれる配列で入力できます。漢字変換はIMEを使用しています。
Hana.xml
キーカスタマイズのみを行う設定ファイルです。花配列と呼ばれる配列で入力できます。漢字変換はさいころえんぴつの機能を使用しています。
Hana_ContinualShift_WithGlobalIME.xml
キーカスタマイズのみを行う設定ファイルです。花配列(連続シフト)と呼ばれる配列で入力できます。漢字変換はIMEを使用しています。
Hana_ContinualShift.xml
キーカスタマイズのみを行う設定ファイルです。花配列(連続シフト)と呼ばれる配列で入力できます。漢字変換はさいころえんぴつの機能を使用しています。

使用方法

使ってみよう

まずはじめに、ファイルを展開したフォルダのbin/mswin/フォルダから"SaikoroPencil.exe" を見つけ、ダブルクリックして実行してください。数十秒後、メインウインドウが表示されれば起動終了です。

メインウインドウ

では、漢字を入力してみましょう。右のAltキーを押してください。 漢字が入力できるようになります。

はじめに"入力"と入力してみましょう。"n y u u r y o k u"と入力すると……

変換時

のように、キーボードを摸した画面の "Q","C","J","L" (ローマ字入力であまり使わないキー)上に変換候補が、リターンキーの部分に入力した仮名が表示され ます。

ここで"入力"が表示されている "J" キーを押すと、現在フォーカスのあるウィンドウに文字が入力されます。

"入力を"みたいに助詞がついた文字も同様に入力出来ます。

助詞つき

といっても、文節構造を解析しているわけではなく、単に "辞書に登録されている内容と合致しない後ろの文字を仮名入力としてくっつけている"だけです。

ですので、"入力を簡単にする"を入力しようとして一気に入力してしまうと、"入力をかんたんにする"となってしまいます。"入力を" "簡単にする"と、辞書に登録されている言葉に区切って入力してください。

文字を入力したときに、希望の漢字が画面に出てこなかった場合、スペースキーを押して下さい。例えば "押す" を入力しようとすると、

変換1

このように”おす”に合致する候補が優先して表示され、”お”+”す”の”押す”は表示されません。ここでスペースを押すと、このように

変換2

ほぼ全てのキーに割り振られるので、この中から”押す”を探し出してそのキーを押してください。

なお、さいころえんぴつには学習機能がありますので、次回からはこのように

変換3

”押す”が優先して表示されます。

その他の部分については、普通のIMEと同じになるように調整しています。

#もしなっていなかった場合は、私までレポートをおねがいします。

学習機能について

さいころえんぴつには、

  • いままで入力した回数の多い単語を優先して表示する頻度学習機能

  • 2つの単語を組み合わせて1つの単語に設定する単語学習機能

  • 新しい単語を登録する単語登録機能

があります。
なお、ここで言う『単語』は、辞書に登録されている文字の入力単位のことで、通常の「単語」とは異なります。

頻度学習機能は説明するまでも無いでしょう。1回でも多く入力された単語を、他の単語よりも優先して候補に表示する機能です。

単語学習機能は、辞書に登録されていない単語を学習する機能です。
ちょっと特殊な操作になりますが、

  1. 登録させたい単語のカナを入力する

  2. 漢字に変換されなかった部分を、バックスペースで削除する

  3. 漢字を候補から選択して確定する

  4. 確定した単語に続く単語のカナを入力し、候補から漢字を選択して 確定する

の様な手順で行います。

単語登録機能は、全く新しい読み仮名の単語を登録する方法です。

  1. 登録させたい単語のカナを入力する

  2. ウインドウを右クリックするとプルダウンメニューが表示されるので、項目の中から『単語登録』を選択する。

  3. 『単語』の欄に登録したい単語を入力する

  4. OKボタンを押す

以上で登録完了です。

終了するには

さいころえんぴつを終了する場合は、ウインドウを右クリックして表示されるプルダウンメニューから「終了」を選択してください。

終了

カスタマイズ

さいころえんぴつは、同じディレクトリにある saikoropencil.xml ファイルを変更することにより、キーボードからの入力をどのように処理するかを自由にカスタマイズすることができます。

saikoropencil.xmlは、xml 形式のファイルで、下記のような内容となっています。現在はShift_JIS以外の文字コードは利用できません。

<?xml version="1.0" encoding="Shift_JIS"?> <ルート要素 configuration> <IM部分の設定 appropriateword要素> <辞書の設定 dictionary要素/> <appropriateword/> : <キーの押下/押上時の挙動の設定 table要素> <どのタイミング? event要素> <何を実行する? command要素> </event> : </table> : </configuration>

それでは詳細な説明に入りましょう。

ルート要素 configuration

ルート要素は configuration です。この要素には下記要素が含まれます。

<configuration> <appropriateword要素> IMの設定 <appropriateword/> <table> キーの押下/押上時の挙動の設定 </table> </configuration>

それぞれの要素は下記に説明するような構成になっています。

IMの設定 appropriateword要素

この要素では、入力された仮名をどのように漢字に変換するかを指定します。

appropriateword

形式

<appropriateword id="一意の名称" IMの設定を指定します。現在は、入力された仮名をどのようなルールで漢字に変更するかを定めた辞書ファイルの指定しかできません。 </appropriateword>

id属性(必須)

設定セットの名前です。

IM辞書ファイルの設定 dictionary要素

この要素では、入力された仮名を漢字に変換するためのルールを記載したファイルを指定します。

skkdictionary

概要
SKKスタイルの辞書を使います。
形式

<skkdictionary xml:link="simple" href="辞書ファイルへのパス"/>

href属性

キーからIME入力として入力された文字列を単語に変換するルールを記述した辞書ファイルを指定します。現在はSKK形式、なおかつ文字コードがShift_JISの辞書ファイルのみ利用できます。
XMLの単純リンクとして指定してください。

learningdictionary

概要
入力した文章を学習する辞書を設定します。
形式

<learningdictionar xml:link="simple" href="辞書ファイルへのパス" maxcount="頻度による優先順位変更を行わなくする回数"/>

href属性

入力した文章の入力回数を記憶し、より頻度の高い文字を優先する学習タイプの辞書を指定します。設定ファイル中で1つだけ指定できます。
ある一定以上の回数を入力したあとは(指が文字の場所を覚えているでしょうから)優先順位を変更しないようになります。(Max 65,534回)

キーの押下/押上時の挙動の設定 table要素

この要素では、キーが入力された時の挙動を指定します。

table

形式

<table id="一意のテーブル名" キーが入力された時の挙動をevent要素(後述)で指定します。 </table>

id属性(必須)

テーブルの名前です。
起動直後には"normal"というidのtableを使用しますので、"normal"という名前のtableは必ず作成して下さい。

どのタイミング? event要素

この要素では、どのキーが押下/押上された時にcommand(後述)を実行するかを指定します。

将来的にはマウスのイベント等、様々なイベントにも対応する予定ですが、今の所はキーイベントしか反応しません。

keyevent

形式

<keyevent code="0xXX | otherkey" iskeyup="true | false" dootherkey="true | false"> XXのキーコードを持つキーの押下/押上時の挙動を command(後述)で指定します。 </keyevent>

code属性

どのキーが押下/押上されたときかをキーコード(16進数)で指定します。
otherkeyを指定した場合は、そのtableで指定されていないキー全てを指定したことになります。
指定しない場合は、全てのキーを指定したことになります。

iskeyup属性

押下かあるいは押上かを指定します。
指定しない場合は、押下および押上両方を指定したことになります。

dootherkey属性

otherkeyで指定された要素を実行するかどうかを決めます。
dootherkeyをtrueに設定した場合は、そのイベントを処理したあとでもcode="other"属性のイベントを処理します。

何を実行する? command要素

commandでは、実行する内容を下記属性をもつcommand要素を1つ以上並べて指定します。
それぞれの詳細は下記の通りです。

sendkey

概要

キーの押下/押上を行ないます。

形式

<sendkey code="0xXX" iskeyup="true | false" shift="forceup | forcedown" ctrl ="forceup | forcedown" alt ="forceup | forcedown" kana ="forceup | forcedown" guideword="案内板に表示される文字" />

code属性

押上/押下するキーコードを0xXX(XXは16進数)で指定します。
指定しない場合は、「現在押されたキーをそのまま実行する」という動作になります。

iskeyup属性

押上かどうかを指定します。
指定しない場合は押下を実行し、すぐ押上を実行します。
なお、iskeyupがfalseの場合は、下記の様な特殊な動作をします。
keyeventのiskeyupが"true"の場合
押下の後、直ちにキーの押上を実行します。
keyeventのiskeyupが"false"の場合
そのキーが押上された時にキーの押上を実行します。

shift属性

shiftキーを押上/押下してから押上/押下するかを指定します。指定しない場合はなにもしません
-> forceup(押上した状態で行う) | forcedown(押下した状態で行う)

ctrl属性

ctrlキーを押上/押下してから押上/押下するかを指定します。
-> forceup(押上した状態で行う)
| forcedown(押下した状態で行う)

alt属性

altキーを押上/押下してから押上/押下するかを指定します。
-> forceup(押上した状態で行う)
| forcedown(押下した状態で行う)

kana属性

kanaキーを押上/押下してから押上/押下するかを指定します。
-> forceup(押上した状態で行う)
| forcedown(押下した状態で行う)

guideword属性

案内板に表示されるガイドにどのような文字を表示するか指定します。

usetable

概要

指定されたtableから該当するeventを探して実行します。(現在のtableの代わりに指定されたtableが実行されます)
存在しないkeytableのtablenameを指定した 場合の動作は未定です。 指定しないでください。

形式
<usetable idref="代わりに実行したいkeytable"/>

changetable

概要

現在のキーテーブルを変更します。

形式

<changetable idref="変更したいtableのname"/>

概要

変更したいtableのnameを指定します。
存在しないtableのnameを指定した場合の動作は未定です。指定しないでください。

setglobalimestatus

概要

IMEの設定を変更します。

形式

<changetable status="IMEの状態"/>

概要

IMEの状態を変更します。
-> on:IMEをONにする
| Off:IMEをOFFにする

inputglobalime

概要

IMEに文字を未確定の状態で入力します。

形式

<changetable input="IMEに入力する文字列"/>

概要

IMEに文字を未確定の状態で入力します。IME側の仕様により、一部の文字が指定した文字から変化することがあります。
例:IME2000をデフォルトの設定で使用している場合、「/」が「・」に変化します。

inputime

形式

<inputime input="入力したい索引文字" idref="作用するappropriatewordのid"/>

概要

指定した文字を索引文字として入力します。
索引文字は辞書ファイルから漢字を検索するのに使用されます。
idrefを指定した場合は、そのappropriatewordを使用します。指定しなかった場合は、最も先頭にあるappropriatewordを使用します。

deleteimeheadword

形式

<deleteimeheadword/> idref="作用するappropriatewordのid"/>

概要

索引文字を全て消去します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を削除します。

deleteimefirsttoken

形式

<deleteimefirsttoken idref="作用するappropriatewordのid"/>

概要

最初に入力された索引文字を消去します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を削除します。

deleteimelasttoken

形式

<deleteimelasttoken idref="作用するappropriatewordのid"/>

概要

最後に入力された索引文字を消去します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を削除します。

changeimelasttokentodakuon

形式

<changeimelasttokentodakuon idref="作用するappropriatewordのid"/>

概要

最後に入力された索引文字を濁音に変更します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を変更します。

changeimelasttokentohandakuon

形式

<changeimelasttokentohandakuon idref="作用するappropriatewordのid"/>

概要

最後に入力された索引文字を半濁音に変更します。 idrefを指定したばあいはそのappropriatewordについてのみ、指定しなかった場合は全てのappropriatewordの索引文字を変更します。

sendimeword

形式

<sendimeword index="変換候補の番号を10進数で指定" |"asis" |"katakana" idref="作用するappropriatewordのid"/>

概要

indexが番号の場合、索引文字を利用して辞書ファイルから変換候補を選択します。選択される候補は内容として指定された番号の候補になります。
indexが"asis"の場合、索引文字をそのまま出力します。
indexが"katakana"の場合、索引文字をカタカナに変換し出力します。 idrefを指定した場合は、そのappropriatewordを使用します。指定しなかった場合は、最も先頭にあるappropriatewordを使用します。

storelearndicwithnext

形式

<storelearndicwithnext/>

概要

この要素を指定した直後に、sendimeword要素で確定した文字と、その次にsendimeword要素で確定した文字を1つにまとめてlearningdictionaryで指定した辞書に登録します。

executeafter(未実装)

形式

<executeafter msec="遅らせたい時間をmsec単位で指定"> <遅らせて実行するcommand要素/> </executeafter>

概要

msec単位で指定した時間が経過した後に指定したcommandを実行します。
また、msec属性を指定しない場合、まだ実行されていないaftertime指定のcommandの実行を中止することができます。(command要素は無視されます)

msec属性

遅らせたい時間をmsec単位で指定します。
10msec単位となっているのと、動作時のオーバーヘッドがあるので、あまり精度は高くありません。

setstatus

形式

<setstatus> <valuestatus name="xx" value="false | true"/> </setstatus>

概要

statusの値を内容として指定したものに変更します。
下記のxxの部分には正の整数、または all を指定できます。
初期状態は false です。

valuestatus要素
name属性に指定された番号のvalueに値を設定します。
name属性が指定されていない場合は、今までに使用したことのある value全てに値を設定します。

executeif

形式

<executeif> <valuestatus name="xx" value="false | true"/> <条件が成立したときに実行するcommand要素/> </executeif>

概要

上記の setstatus で指定した値、または索引文字の有無が指定した条件と一致した場合、command 要素を実行します。

status要素

判定する状態を指定します。

<valuestatus name="xx" value="false | true"/>
そのvalueの値

<valuestatus name="headwordexists" value="false | true"/>
索引文字があるかどうか

<valuestatus name="currentequalsecondfromlasttime" value="false | true"/>
KeyTableが変更される前のKeyTableと、Key入力により次に変更するKeyTableが同じかどうか

statusが入れ子になっているときはそれらを全て満たした時に、並列に並んでいるときはそれらのstatusのどれかを満たした時に条件を満たしたと判定します

とりあえず。以上です。これで一通りはカスタマイズ出来ると思います。
添付ファイルのsampleフォルダにサンプルがありますので参考にしてください。

著作権、使用許諾

Copyright (C) 2002年8月、2003年 野分 nowake@debilotte.net

このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョン2)の定める条件の下で再頒布または改変することができます。
このプログラムは有用であることを願って頒布されますが、*全くの無保証* です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含め全く存在しません。詳しくはGNU一般公有使用許諾書(参考用の日本語訳)をご覧ください。
あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団まで請求してください(宛先は the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)。

また、本マニュアルを、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書(第 1.1 版) が定める条件の下で複製、配布、あるいは変更することを許可する。変更不可の章及び表表紙テキスト、裏表紙テキストは指定しない。この利用許諾契約書の複写は「GNU フリー文書利用許諾契約書」(参考用の日本語訳)という章に含まれている。

なお、Yahoo! Japanのような、「アップロードしたすべてのコンテンツについて、GPL/FDLで許可した以上の権利を要求する」プロバイダへの転載は禁止します。
寄付も受け付けています。このユーティリティが気に入ったらよろしくお願いします。
御意見、御感想、質問、バグレポート、パッチも歓迎します。

改版履歴

  • 2003年04月25日 IM回りの仕様を変更
  • 2003年02月16日 仕様変更後の正式版を公開
  • 2003年01月19日 仕様変更したβ版を公開
  • 2002年09月15日 正式版公開
  • 2002年08月25日 ベータ版公開