Man page - uilib(3)
Packages contains this manual
apt-get install libcanna1g-dev
Available languages:
en jaManual
UILIBINTROJRKANJISTRING
名 前説 明
概 要
名 前
形 式
説 明
フ ァ ン ク シ ョ ン キ ー
関 連 情 報
戻 り 値
名 前
形 式
説 明
名 称
記 述 形 式
引 数
説 明
名 前
形 式
説 明
名 前
UILib intro - ユ ー ザ イ ン タ フ ェ ー ス ラ イ ブ ラ リ イ ン ト ロ
説 明
ユ ー ザ イ ン タ フ ェ ー ス ラ イ ブ ラ リ は , 1 文 字 の 入 力 , 1 キ ー の 入 力 に 対 応 し て , 未 確 定 文 字 列 , 確 定 文 字 列 , 注 目 文 節 位 置 , ス テ ー タ ス 表 示 の た め の 文 字 列 , 候 補 一 覧 の た め の 文 字 列 な ど を 返 還 す る ラ イ ブ ラ リ で す . ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム は , 返 還 さ れ た 情 報 に よ っ て 表 示 を 行 い ま す . ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム は , キ ー 入 力 以 外 の ト リ ガ ー に よ っ て (例 え ば マ ウ ス に よ る 選 択 な ど )モ ー ド の 遷 移 を 制 御 す る こ と も で き ま す .
ユ ー ザ イ ン タ フ ェ ー ス ラ イ ブ ラ リ で は , TTYベ ー ス で jrKanjiStringお よ び jrKanjiControl, X ウ ィ ン ド ウ ベ ー ス で XLookupKanjiStringお よ び XKanjiControlを 提 供 し ま す .
ユ ー ザ イ ン タ フ ェ ー ス ラ イ ブ ラ リ を 使 用 す る 場 合 に は 以 下 の フ ァ イ ル が 必 要 に な り ま す .
|
・ |
TTYベ ー ス |
関 数
|
jrKanjiString, jrKanjiControl |
||||
|
ヘ ッ ダ フ ァ イ ル |
canna/jrkanji.h |
|||
|
ラ イ ブ ラ リ |
libcanna.a, libcanna.so |
|||
|
・ |
Xウ ィ ン ド ウ ベ ー ス
|
関 数 |
XLookupKanjiString, XKanjiControl |
|||
|
ヘ ッ ダ フ ァ イ ル |
canna/kanji.h |
|||
|
ラ イ ブ ラ リ |
libXn.a, libXn.so, libcanna.a, libcanna.so |
概 要
|
jrKanjiString |
TTYか ら の 入 力 , X で の 入 力 , 基 本 ウ ィ ン ド ウ で の 入 力 な ど 一 般 的 な キ ー ボ ー ド 入 力 に 対 し て 漢 字 文 字 列 へ の 変 換 を 行 い ま す . |
||
|
jrKanjiControl |
jrKanjiStringで の 制 御 を 指 定 さ れ た パ ラ メ タ に よ り 行 い ま す . |
||
|
XLookupKanjiString |
X ウ ィ ン ド ウ シ ス テ ム に お い て , キ ー ボ ー ド 入 力 (キ ー イ ベ ン ト )の 漢 字 文 字 列 へ の 変 換 を 行 い ま す . |
||
|
XKanjiControl |
XLookupKanjiStringで の 制 御 を 指 定 さ れ た パ ラ メ タ に よ り 行 い ま す . |
名 前
jrKanjiString - 一 般 的 名 キ ー ボ ー ド 入 力 に 対 し て の か な 漢 字 変 換
形 式
#include
<canna/jrkanji.h>
int jrKanjiString(
context_id, ch, buffer_return,
bytes_buffer, kanji_status_return
)
int
context_id
;
int
ch
;
char
*buffer_return
;
int
bytes_buffer
;
jrKanjiStatus
*kanji_status_return
;
説 明
jrKanjiStringは TTYか ら の 入 力 , X で の 入 力 , 基 本 ウ ィ ン ド ウ で の 入 力 な ど , 一 般 的 な キ ー ボ ー ド 入 力 に 対 し て 漢 字 文 字 列 へ の 変 換 を 行 う 関 数 で す .
jrKanjiStringは , ア ス キ ー コ ー ド で 表 さ れ る キ ー 入 力 を 日 本 語 文 字 列 に 対 応 さ せ る 簡 易 ル ー チ ン で , 入 力 さ れ た キ ー を 表 す コ ー ド を ch に て 与 え る こ と に よ り , 表 示 す べ き 文 字 列 を 返 し ま す . jrKanjiStringの 内 部 に お い て ロ ー マ 字 か な 変 換 , か な 漢 字 変 換 が 行 わ れ ま す .
フ ァ ン ク シ ョ ン キ ー や , カ ー ソ ル キ ー な ど の キ ー に つ い て は , そ れ ら の キ ー の 発 生 す る エ ス ケ ー プ シ ー ケ ン ス の 代 わ り に フ ァ ン ク シ ョ ン キ ー の 項 で 示 す 特 別 の コ ー ド を jrKanjiStringに 与 え て 下 さ い .
context_id で 与 え る コ ン テ ク ス ト 識 別 子 は , 実 際 に は そ の ま ま の 値 が 用 い ら れ る わ け で は な く , context_id で 与 え ら れ る コ ン テ ク ス ト 識 別 子 を キ ー と し た コ ン テ ク ス ト が 作 成 さ れ , 用 い ら れ る こ と に な り ま す . し た が っ て ア プ リ ケ ー シ ョ ン プ ロ グ ラ マ は jrKanjiStringに 与 え る コ ン テ ク ス ト 識 別 子 に つ い て は , 適 当 な 値 を 与 え れ ば 良 く , 入 力 ポ ー ト の フ ァ イ ル デ ィ ス ク リ プ タ を 与 え る の が 適 当 と 考 え ら れ ま す . た だ し , 0を 与 え た 時 は 特 別 で , シ ス テ ム に デ フ ォ ル ト で 準 備 さ れ て い る コ ン テ ク ス ト が 用 い ら れ ま す . コ ン テ ク ス ト に 特 別 の 配 慮 を 行 わ な い 場 合 に は 0を 指 定 す る の が 適 当 で す .
入 力 に 対 応 し て , ロ ー マ 字 か な 変 換 , か な 漢 字 変 換 の 中 間 結 果 を 表 示 す る 必 要 が あ り ま す が , 表 示 す べ き 中 間 結 果 は kanji_status_return を 介 し て , ア プ リ ケ ー シ ョ ン に 返 さ れ ま す .
ア プ リ ケ ー シ ョ ン は kanji_status_return に 返 さ れ る 情 報 に し た が っ て 中 間 結 果 を 表 示 し な け れ ば な り ま せ ん . kanji_status_return は jrKanjiStatus型 の 構 造 体 で す .
jrKanjiStatus構 造 体 は 以 下 の よ う に 定 義 さ れ ま す .
typedef struct {
unsigned char *echoStr; /* ロ ー カ
ル エ コ ー の た
め の 文 字 列 */
int length; /* ロ ー カ ル エ
コ ー 文 字 列 の
長 さ */
int revPos; /* ロ ー カ ル
エ コ ー 文 字 列
の う ち 反 転 表
示 部 分 へ の オ
フ セ ッ ト */
int revLen; /* ロ ー カ ル エ
コ ー 文 字 列 の
う ち 反 転 表 示
部 分 の 長 さ */
unsigned long info; /* そ の 他 の
情 報 */
unsigned char *mode; /* モ ー ド 情
報 */
struct {
unsigned char *line; /* 候 補 一 覧
の 文 字 列 */
int length; /* 候 補 一 覧 文
字 列 の 長 さ */
int revPos; /* 候 補 一 覧 文
字 列 の う ち 反
転 表 示 部 分 へ
の オ フ セ ッ ト */
int revLen; /* 候 補 一 覧 文
字 列 の う ち 反
転 表 示 部 分 の
長 さ */
} gline; /* 候 補 一 覧 に
関 す る 情 報 */
} jrKanjiStatus;
か な 漢 字 変 換 を 用 い た 日 本 語 入 力 時 に は 変 換 の 対 象 と な る 読 み な ど を ロ ー カ ル エ コ ー す る 必 要 が あ り ま す . jrKanjiStringは ロ ー カ ル エ コ ー な ど 表 示 に 関 す る こ と は 何 も 行 わ ず , 代 わ り に ロ ー カ ル エ コ ー す る べ き 文 字 列 を jrKanjiStatus構 造 体 を 用 い て ア プ リ ケ ー シ ョ ン 側 に 返 し ま す .
変 換 が 確 定 す る ま で は , ロ ー マ 字 か な 変 換 さ れ て い る 文 字 や , 変 換 候 補 文 字 な ど , ロ ー カ ル エ コ ー す べ き (EUC)文 字 列 が echoStr メ ン バ に よ り 返 さ れ ま す . こ の と き , ロ ー カ ル エ コ ー 文 字 列 の 長 さ , リ バ ー ス 表 示 の 開 始 位 置 と 長 さ (バ イ ト 単 位 )が , そ れ ぞ れ , length メ ン バ , revPos, revLenメ ン バ に て 返 さ れ ま す . ロ ー カ ル エ コ ー す べ き 文 字 列 の た め の バ ッ フ ァ は jrKanjiStringに よ っ て 自 動 的 に 確 保 さ れ ま す が , そ の 領 域 は 読 み と り の み に 用 い ら れ る べ き で あ り , そ の 領 域 に 文 字 列 を 書 き 込 ん で は い け ま せ ん .
ロ ー カ ル エ コ ー す べ き 文 字 列 が な い 場 合 は length メ ン バ に 0 が 返 り ま す .
ロ ー カ ル エ コ ー す べ き 内 容 が 前 回 の jrKanjiStringの 呼 出 し の 時 と 変 わ ら な い 場 合 (例 え ば コ ン ト ロ ー ル 文 字 が 押 さ れ , そ の キ ー が 無 効 で あ っ た 場 合 な ど )は length メ ン バ に -1が 返 り ま す .
モ ー ド の 変 更 や , 候 補 一 覧 に 関 す る 情 報 の 有 無 は , info メ ン バ に よ っ て 渡 さ れ ま す . info メ ン バ の KanjiModeInfoビ ッ ト が onで あ れ ば , mode に 新 し い モ ー ド を 示 す 文 字 列 が 返 さ れ ま す . info メ ン バ の KanjiGLineInfoビ ッ ト が onで あ れ ば , gline 構 造 体 に 候 補 一 覧 等 の 情 報 が 格 納 さ れ て い ま す .
gline 構 造 体 の line メ ン バ に は 候 補 一 覧 表 示 の た め の 文 字 列 が 返 さ れ ま す . gline 構 造 体 の line,revPos,revLen の 各 メ ン バ は , 候 補 一 覧 文 字 列 の そ れ ぞ れ , 長 さ , リ バ ー ス 表 示 の 開 始 位 置 , リ バ ー ス 表 示 の 長 さ が 返 さ れ ま す .
変 換 中 に 確 定 し た (EUC)文 字 列 が あ る 場 合 は , そ の 文 字 列 が buffer_return で 指 定 し た バ ッ フ ァ に 格 納 さ れ , そ の 文 字 列 の 長 さ (バ イ ト 単 位 )が 返 さ れ ま す . 確 定 し た 文 字 列 が 無 い 場 合 は 戻 り 値 は 0に な り ま す . 確 定 文 字 列 を 格 納 す る バ ッ フ ァ buffer_return の 大 き さ を bytes_buffer に て 与 え ま す .
確 定 文 字 列 の 長 さ が bytes_buffer よ り も 長 い 場 合 に は , 確 定 文 字 列 の う ち , bytes_buffer 分 だ け が buffer_return に 格 納 さ れ , jrKanjiStringの 戻 り 値 と し て , bytes_buffer で 与 え た 値 が 返 り ま す .
フ ァ ン ク シ ョ ン キ ー
エ ス ケ ー プ シ ー ケ ン ス を 発 行 す る よ う な フ ァ ン ク シ ョ ン キ ー に 関 し て は , フ ァ ン ク シ ョ ン キ ー に よ る エ ス ケ ー プ シ ー ケ ン ス の 変 わ り に 以 下 の マ ク ロ 名 で 示 さ れ る コ ー ド を ch と し て 与 え て 下 さ い .
|
論 理 名 |
コ ー ド |
|||
|
Nfer |
CANNA_KEY_Nfer |
|||
|
Xfer |
CANNA_KEY_Xfer |
|||
|
Up |
CANNA_KEY_Up |
|||
|
Left |
CANNA_KEY_Left |
|||
|
Right |
CANNA_KEY_Right |
|||
|
Down |
CANNA_KEY_Down |
|||
|
Insert |
CANNA_KEY_Insert |
|||
|
Rollup |
CANNA_KEY_Rollup |
|||
|
Rolldown |
CANNA_KEY_Rolldown |
|||
|
Home |
CANNA_KEY_Home |
|||
|
Help |
CANNA_KEY_Help |
|||
|
S-Nfer |
CANNA_KEY_Shift_Nfer |
|||
|
S-Xfer |
CANNA_KEY_Shift_Xfer |
|||
|
S-Up |
CANNA_KEY_Shift_Up |
|||
|
S-Left |
CANNA_KEY_Shift_Left |
|||
|
S-Right |
CANNA_KEY_Shift_Right |
|||
|
S-Down |
CANNA_KEY_Shift_Down |
|||
|
C-Nfer |
CANNA_KEY_Control_Nfer |
|||
|
C-Xfer |
CANNA_KEY_Control_Xfer |
|||
|
C-Up |
CANNA_KEY_Control_Up |
|||
|
C-Left |
CANNA_KEY_Control_Left |
|||
|
C-Right |
CANNA_KEY_Control_Right |
|||
|
C-Down |
CANNA_KEY_Control_Down |
|||
|
F1 |
CANNA_KEY_F1 |
|||
|
PF1 |
CANNA_KEY_PF1 |
関 連 情 報
jrKanjiControl(3)
戻 り 値
入 力 処 理 中 何 ら か の エ ラ ー が 発 生 し た 場 合 は , こ の 関 数 の 戻 り 値 と し て -1が 返 さ れ , 外 部 変 数 (char *)jrKanjiErrorに , エ ラ ー メ ッ セ ー ジ が 格 納 さ れ ま す .
こ の 関 数 の 呼 出 し に よ り 確 定 し た 文 字 列 が あ る 場 合 は 確 定 し た 文 字 列 の バ イ ト 長 が 返 り ま す .
そ
れ 以 外 の 場 合
は 0が 返 り ま す
.
JRKANJICONTROL
名 前
jrKanjiControl - jrKanjiStringで の モ ー ド や , 処 理 の 制 御 を 行 う
形 式
#include
<canna/jrkanji.h>
int jrKanjiControl(
context_id, request, arg
)
int
context_id
;
int
request
;
char
*arg
;
説 明
jrKanjiControlは context_id で 示 さ れ る 変 換 コ ン テ ク ス ト に 関 し て , request で 示 さ れ る 処 理 を 行 い ま す . 処 理 に よ っ て は , 引 数 を 伴 う 場 合 が あ り , そ の 場 合 , 引 数 は argに て 与 え ま す .
jrKanjiControlで 制 御 さ れ る 機 能 と し て は 以 下 の 5 つ が あ り ま す .
|
request 名 |
機 能 |
|||
|
KC_INITIALIZE |
か な 漢 字 変 換 を 初 期 化 す る . |
|||
|
KC_CHANGEMODE |
入 力 モ ー ド を 変 更 す る . |
|||
|
KC_SETWIDTH |
候 補 一 覧 表 示 の 時 の 幅 を 指 定 す る . |
|||
|
KC_FINALIZE |
か な 漢 字 変 換 の 終 了 処 理 . |
KC_SETUNDEFKEYFUNCTION
未 定 義 キ ー に 対 す る 機 能 の 設 定 を 行 う .
KC_SETMODEINFOSTYLE
モ ー ド 情 報 を 数 値 で 表 現 す る か ど う か を 指 定 す る .
|
KC_KAKUTEI |
入 力 中 の 文 字 列 を 確 定 す る . |
|||
|
KC_KILL |
入 力 中 の 文 字 列 を 削 除 す る . |
|||
|
KC_QUERYMODE |
現 在 の モ ー ド を 問 い 合 わ せ る . |
|||
|
KC_SETSERVERNAME |
接 続 す る サ ー バ を 指 定 す る . |
KC_SETINITFILENAME
カ ス タ マ イ ズ フ ァ イ ル を 指 定 す る .
|
KC_CLOSEUICONTEXT |
コ ン テ ク ス ト を ク ロ ー ズ す る . |
KC_QUERYMAXMODESTR
モ ー ド 表 示 文 字 列 の 最 大 長 を 求 め る .
jrKanjiControlの 作 用 は 基 本 的 に は コ ン テ ク ス ト で 指 定 さ れ た も の に 対 し て の み 作 用 し ま す . た だ し , 初 期 化 の 処 理 や 終 了 の 処 理 に 関 し て は そ の 限 り で は あ
り ま せ ん .
jrKanjiControlの 操 作 に よ っ て 未 確 定 文 字 列 の 状 態 が 変 化 し た り , モ ー ド の 状 態 が 変 わ る こ と が あ り ま す . そ の よ う な 可 能 性 が あ る 場 合 は arg部 分 に 変 化 し た 情 報 を 格 納 で き る よ う な 構 造 体 へ の ポ イ ン タ を 渡 し ま す . そ の 構 造 体 の 定 義 は 以 下 の よ う に な り ま す .
typedef struct {
int val; /* バ ッ フ ァ に
格 納 さ れ た 文
字 列 の 長 さ が
返 る */
unsigned char *buffer; /* 確 定 文
字 列 を 格 納 す
る た め の バ ッ
フ ァ を 与 え る */
int bytes_buffer; /* 上 記 の バ
ッ フ ァ の 大 き
さ を 与 え る */
jrKanjiStatus *ks; /* 未 確 定 文
字 列 の 情 報 を
格 納 す る 構 造
体 へ の ポ イ ン
タ */
} jrKanjiStatusWithValue;
jrKanjiControlの そ れ ぞ れ の 機 能 の 実 行 の し か た は 以 下 の 通 り で す .
|
(1) |
KC_INITIALIZE - か な 漢 字 変 換 の 初 期 化 |
KC_INITIALIZEを request 部 で 指 定 す る こ と に よ り , か な 漢 字 変 換 の 初 期 化 を 行 い ま す . arg に は warningメ ッ セ ー ジ を 格 納 す る た め の (char
**)型 の 変 数 へ の ポ イ ン タ ま た は NULLを 指 定 し ま す . 初 期 化 の 処 理 は 基 本 的 に は jrKanjiString(3)が 最 初 に 呼 ば れ た 時 に 自 動 的 に 行 わ れ ま す が , jrKanjiControlを 用 い て 初 期 化 す る こ と に よ り , jrKanjiString(3)で の 初 期 化 処 理 は 行 わ れ な く な り ま す .
jrKanjiString(3)の 使 用 に 先 立 っ て jrKanjiControlを 用 い て か な 漢 字 変 換 に 関 す る 制 御 を 行 う 時 な ど は , 漢 字 変 換 の 初 期 化 を 行 う 必 要 が あ り ま す .
正 常 終 了 時 に は jrKanjiControlの 戻 り 値 と し て 0が 返 り , 異 常 終 了 時 に は -1が 返 り ま す .
KC_INITIALIZEを 行 っ た 場 合 , エ ラ ー と ま で は い か な く と も 何 ら か の warningが 発 生 す る こ と が あ り ま す . warningが 発 生 し た 場 合 は argに て 与 え ら れ た 変 数 に 対 し て warning文 字 列 の 配 列 へ の ポ イ ン タ が 格 納 さ れ 返 さ れ ま す . warningが な い と き は NULLが 格 納 さ れ 返 さ れ ま す .
(例 )
int res; /* エ ラ ー が 返
っ て く る 場 合
に 備 え る */
char **warning;
.....
res = jrKanjiControl(0, KC_INITIALIZE, &warning);
if (warning) {
char **p;
for (p = warning ; *p ; p++) {
fprintf(stderr, "%s0, *p);
}
}
第 3 引 数 に 返 さ れ る warningメ ッ セ ー ジ は ラ イ ブ ラ リ の 内 部 で mallocさ れ ま す . こ れ は , 次 に KC_INITIALIZEや KC_FINALIZEが 行 わ れ た 時 に 開 放 さ れ ま す . ア プ リ ケ ー シ ョ ン プ ロ グ ラ マ が 勝 手 に freeし て は い け ま せ ん . warningは 今 の と こ ろ 最 大 64メ ッ セ ー ジ に 限 定 さ れ ま す . そ れ 以 上 の メ ッ セ ー ジ は 切 捨 て ら れ ま す .
メ ッ セ ー ジ に 含 ま れ る 可 能 性 の あ る warningに は 以 下 の も の が あ り ま す .
|
・ |
カ ス タ マ イ ズ フ ァ イ ル が シ ス テ ム の も の も 含 め て す べ て 利 用 で き な い . |
||
|
・ |
カ ス タ マ イ ズ フ ァ イ ル に シ ン タ ッ ク ス エ ラ ー が あ る . |
||
|
・ |
ロ ー マ 字 か な 変 換 辞 書 が 利 用 で き な い . |
||
|
・ |
か な 漢 字 変 換 辞 書 が 利 用 で き な い . |
||
|
・ |
か な 漢 字 変 換 サ ー バ に 接 続 で き な い . |
第 3 引 数 と し て NULLを 指 定 し た 場 合 warningメ ッ セ ー ジ は 捨 て ら れ ま す .
|
(2) |
KC_CHANGEMODE - 入 力 モ ー ド の 変 更 |
入 力 モ ー ド を ア プ リ ケ ー シ ョ ン か ら 変 更 し ま す . request の 部 分 に は KC_CHANGEMODEを 指 定 し , arg に jrKanjiStatusWithValue構 造 体 を 指 定 し て 下 さ い . jrKanjiStatusWithValue構 造 体 の val メ ン バ に て モ ー ド 番 号 を 指 定 す る こ と に よ り 日 本 語 モ ー ド が 切 り 替 わ り ま す . モ ー ド 番 号 は 以 下 の マ ク ロ で 示 さ れ ま す .
|
マ ク ロ 番 号 |
モ ー ド |
|||
|
CANNA_MODE_AlphaMode |
ア ル フ ァ ベ ッ ト モ ー ド |
|||
|
CANNA_MODE_HenkanMode |
変 換 入 力 モ ー ド |
|||
|
CANNA_MODE_KigoMode |
記 号 入 力 モ ー ド |
CANNA_MODE_ZenHiraKakuteiMode
全 角 ひ ら が な 確 定 入 力 モ ー ド
CANNA_MODE_ZenKataKakuteiMode
全 角 カ タ カ ナ 確 定 入 力 モ ー ド
CANNA_MODE_HanKataKakuteiMode
半 角 カ タ カ ナ 確 定 入 力 モ ー ド
CANNA_MODE_ZenAlphaKakuteiMode
全 角 ア ル フ ァ ベ ッ ト 確 定 入 力 モ ー ド
CANNA_MODE_HanAlphaKakuteiMode
半 角 ア ル フ ァ ベ ッ ト 確 定 入 力 モ ー ド
|
CANNA_MODE_HexMode |
16進 コ ー ド 入 力 モ ー ド |
|||
|
CANNA_MODE_BushuMode |
部 首 入 力 モ ー ド |
|||
|
CANNA_MODE_TorokuMode |
単 語 登 録 モ ー ド |
こ の 機 能 に よ り モ ー ド を 変 更 す る と モ ー ド 名 を 始 め と し て 多 く の 表 示 が 変 化 を 受 け ま す . 表 示 の 変 更 は argと し て 指 定 し た jrKanjiStatusWithValue構 造 体 に て 返 さ れ ま す .
(例 )
jrKanjiStatus ks;
jrKanjiStatusWithValue ksv;
unsigned char buf[SOMESIZE];
.....
ksv.ks = &ks;
ksv.buffer = buf;
ksv.bytes_buffer = SOMESIZE;
ksv.val = CANNA_MODE_HexMode;
jrKanjiControl(context,
KC_CHANGEMODE, &ksv);
len = ksv.val;
.....
/* 未 確 定 文 字 列
や 確 定 文 字 列
の 情 報 が ksvに よ
り 返 さ れ ま す
. */
|
(3) |
KC_SETWIDTH - 候 補 一 覧 表 示 の た め の 幅 を 指 定 |
候 補 一 覧 の た め に 用 い ら れ る 領 域 の コ ラ ム 数 を 指 定 し ま す . 1 コ ラ ム の 幅 は ア ル フ ァ ベ ッ ト 文 字 あ る い は 半 角 カ タ カ ナ 1 文 字 の 文 字 幅 で あ り , 全 角 漢 字 は 2 コ ラ ム 占 め る こ と に な り ま す . 候 補 一 覧 表 示 の た め の 幅 を 指 定 す る た め に request 部 分 に 指 定 す る 値 は KC_SETWIDTHで , こ の と き arg に コ ラ ム 数 を 指 定 し ま す .
(例 )
jrKanjiControl(0, KC_SETWIDTH, (char *)60);
|
(4) |
KC_FINALIZE - か な 漢 字 変 換 の 終 了 処 理 . |
プ ロ グ ラ ム を 終 了 す る な ど の 局 面 で か な 漢 字 変 換 も 終 了 す る こ と を 指 定 し ま す . か な 漢 字 変 換 処 理 を 終 了 さ せ る 時 は 必 ず こ の 処 理 を 行 っ て 下 さ い . 終 わ る に あ た っ て 今 ま で 学 習 し た 内 容 が フ ァ イ ル に 登 録 さ れ ま す . request 部 分 に は KC_FINALIZEを 指 定 し ま す .
正 常 終 了 時 に 0, 異 常 終 了 時 に -1が 戻 り 値 と し て 返 り ま す .
KC_FINALIZEを 行 っ た 場 合 , エ ラ ー と ま で い か な く と も 何 ら か の warningが 発 生 す る こ と が あ り ま す . warningが 発 生 し た 場 合 は argに て 与 え ら れ た 変 数 に warning文 字 列 の 配 列 へ の ポ イ ン タ が 格 納 さ れ 返 さ れ ま す . warningが な い 場 合 に は NULLポ イ ン タ が 格 納 さ れ 返 さ れ ま す .
(例 )
int res; /* エ ラ ー が 返
る 場 合 に 備 え
る */
char **warning;
.....
res = jrKanjiControl(0, KC_FINALIZE, &warning);
if (warning) {
char **p;
for (p = warning ; *p ; p++) {
fprintf(stderr, "%s0, *p);
}
}
第 3 引 数 に 返 さ れ る warningメ ッ セ ー ジ は , ラ イ ブ ラ リ の 内 部 で mallocさ れ ま す . こ れ は , 次 に KC_INITIALIZEや KC_FINALIZEが 行 わ れ た 時 に 開 放 さ れ ま す . ア プ リ ケ ー シ ョ ン プ ロ グ ラ マ が 勝 手 に freeし て は い け ま せ ん .
warningは 今 の と こ ろ 最 大 64メ ッ セ ー ジ に 限 定 さ れ ま す . そ れ 以 上 の メ ッ セ ー ジ は 切 捨 て ら れ ま す .
メ ッ セ ー ジ に 含 ま れ る 可 能 性 の あ る warningに は 次 の も の が あ り ま す .
|
・ |
辞 書 が ア ン マ ウ ン ト で き な い . |
第 3 引 数 と し て NULLを 指 定 し た 場 合 , warningメ ッ セ ー ジ は 捨 て ら れ ま す .
|
(5) |
KC_SETUNDEFKEYFUNCTION - 未 定 義 キ ー に 対 す る 機 能 の 設 定 |
読 み を 入 力 し て い る 状 態 で C-tを 打 っ た と き の よ う に 未 定 義 キ ー を 入 力 し た 時 に 取 ら れ る 処 理 を 指 定 し ま す . 未 定 義 キ ー に 対 応 し て 行 わ れ る 処 理 と し て は 以 下 の 処 理 が あ り ま す .
|
マ ク ロ 名 |
処 理 |
|||
|
kc_normal |
ビ ー プ |
|||
|
kc_through |
ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム に 渡 す |
|||
|
kc_kakutei |
確 定 し ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム に 渡 す |
|||
|
kc_kill |
消 去 し ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム に 渡 す |
kc_normalを 指 定 し た 場 合 , 外 部 変 数 jrBeepFuncに 設 定 さ れ た 関 数 が 未 定 義 キ ー 入 力 時 に ラ イ ブ ラ リ に よ っ て 自 動 的 に 呼 び 出 さ れ ま す . jrBeepFuncに 値 を 設 定 し な い 場 合 に は (jrBeepFunc == NULLの 場 合 に は )何 も 起 こ り ま せ ん .
(例 )
extern (*jrBeepFunc)(), beep();
jrBeepFunc =
beep;
jrKanjiControl(0, KC_SETUNDEFKEYFUNCTION, kc_normal);
|
(6) |
KC_SETMODEINFOSTYLE - モ ー ド 情 報 の 表 現 |
モ ー ド 情 報 を 文 字 列 で は な く ビ ッ ト マ ッ プ な ど の デ ー タ で 表 示 し た い 場 合 が あ り ま す . そ の よ う な 場 合 に は モ ー ド 情 報 と し て 数 値 デ ー タ が 返 っ て く る と 処 理 が し や す く な り ま す . jrKanjiControlで KC_SETMODEINFOSTYLEを 指 定 し , arg に 1 を 渡 す こ と に よ っ て そ れ 以 後 は jrKanjiStatus構 造 体 の mode メ ン バ に は モ ー ド を 表 す 数 値 に ’@’(0x40)を 加 え た 1 文 字 が 返 さ
れ る よ う に な り ま す . モ ー ド を 表 す 数 値 に 変 換 す る 場 合 に は 返 っ て き た 文 字 列 か ら ’@’(0x40)を 引 き ま す . モ ー ド を 表 す 数 値 に つ い て は 入 力 モ ー ド の 変 更 ((2)KC_CHANGEMODE)の こ う を 参 照 し て 下 さ い .
|
(7) |
KC_KAKUTEI, (8) KC_KILL - 入 力 中 の 文 字 列 の 放 棄 |
入 力 中 の 文 字 列 を 何 ら か の 都 合 で 放 棄 し た い 場 合 が あ り ま す . 放 棄 す る 場 合 に 入 力 中 の 文 字 列 を 確 定 文 字 列 と し て 取 り 込 ん で か ら 放 棄 し た い 場 合 と 全 く 捨 て て し ま っ て か ら 放 棄 し た い 場 合 が あ り ま す . 確 定 す る 場 合 に は jrKanjiControlに て KC_KAKUTEIを 指 定 し , 放 棄 す る 場 合 に は KC_KILLを 指 定 し ま す .
こ の 処 理 は 表 示 に 影 響 を 与 え る の で 第 3 引 数 に は jrKanjiStatusWithValue構 造 体 を 指 定 し な け れ ば な り ま せ ん .
(例 )
jrKanjiStatusWithValue ksv;
jrKanjiStatus ks;
unsigned char buf[SOMESIZE];
.....
ksv.ks = &ks;
ksv.buffer = buf;
ksv.bytes_buffer = SOMESIZE;
jrKanjiControl(context,
KC_KAKUTEI, &ksv);
len = ksv.val;
.....
|
(9) |
KC_QUERYMODE - モ ー ド の 問 い 合 わ せ |
現 在 の モ ー ド を 問 い 合 わ せ る に は jrKanjiControlで KC_QUERYMODEを 指 定 し ま す .
第 3 引 数 に は モ ー ド 文 字 列 を 格 納 す る た め の 文 字 配 列 の ポ イ ン タ を 指 定 し ま す . モ ー ド 文 字 列 は ヌ ル 文 字 で 終 わ る 文 字 列 で す . こ こ に 数 値 が 返 る よ う に す る に は jrKanjiControlで KC_SETMODEINFOSTYLEを 指 定 し て モ ー ド 文 字 列 の ス タ イ ル を 変 更 し て お き ま す .
(例 )
char currentMode[MAXMODELEN];
.....
jrKanjiControl(0, KC_QUERYMODE, currentMode);
.....
|
(10) |
KC_SETSERVERNAME - サ ー バ の 指 定 |
か な 漢 字 変 換 サ ー バ と し て ど の サ ー バ を 使 う か を ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム を 終 了 す る こ と な し に 切 替 え る こ と が 可 能 で す . か な 漢 字 変 換 サ ー バ と し て 接 続 す る べ き サ ー バ を 指 定 す る に は jrKanjiControlで KC_SETSERVERNAMEを 指 定 し ま す . 第 3 引 数 に は 接 続 し た い サ ー バ 名 を 指 定 し ま す .
|
(11) |
KC_SETINITFILENAME - カ ス タ マ イ ズ フ ァ イ ル の 指 定 |
カ ス タ マ イ ズ フ ァ イ ル を ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム 側 か ら 変 更 す る こ と が で き ま す . カ ス タ マ イ ズ フ ァ イ ル の 変 更 は jrKanjiControlの 第 2 引 数 に KC_SETINITFILENAMEを 指 定 し , 第 3 引 数 に フ ァ イ ル 名 文 字 列 を 指 定 す る こ と に よ り 行 い ま す . こ の 処 理 を 行 う 場 合 は KC_INITIALIZEに 先 立 っ て 実
行 し て お か な け れ ば な り ま せ ん .
(例 )
char *inifile = "app-own.canna"
.....
jrKanjiControl(0, KC_SETINITFILENAME, initfile);
.....
|
(12) |
KC_CLOSEUICONTEXT - コ ン テ ク ス ト の ク ロ ー ズ |
変 換 コ ン テ ク ス ト を 表 す コ ン テ ク ス ト IDは 任 意 の 整 数 を 割 り 当 て る こ と が で き ま す . 今 ま で 使 わ れ て い な い コ ン テ ク ス ト IDを jrKanjiStringあ る い は jrKanjiControlに 与 え る こ と が 可 能 で あ り , そ の 場 合 , そ の コ ン テ ク ス ト 用 の イ ニ シ ャ ラ イ ズ が 行 わ れ 必 要 な メ モ リ が 確 保 さ れ ま す .
そ れ ま で 使 用 し て い た 入 力 ポ ー ト が 使 わ れ な く な っ た 場 合 に , そ の ポ ー ト に 割 り 当 て て 使 っ て い た コ ン テ ク ス ト ID用 に 確 保 さ れ た メ モ リ を 開 放 す る に は jrKanjiControlを 第 2 引 数 に KC_CLOSEUICONTEXTを 指 定 し て 呼 び 出 し ま す .
こ の 処 理 は 表 示 の 変 化 を と も な う の で 第 3 引 数 に は jrKanjiStatusWithValue構 造 体 を 与 え ま す .
(例 )
jrKanjiStatusWithValue ksv;
jrKanjiStatus ks;
unsigned char buf[SOMESIZE];
.....
ksv.ks = &ks;
ksv.buffer = buf;
ksv.bytes_buffer = SOMESIZE;
jrKanjiControl(0,
KC_CLOSEUICONTEXT, &ksv);
.....
|
(13) |
KC_QUERYMAXMODESTR - モ ー ド 表 示 文 字 列 の 最 大 長 を 求 め る . |
初 期 化 フ ァ イ ル に て モ ー ド 表 示 文 字 列 が カ ス タ マ イ ズ で き ま す が , カ ス タ マ イ ズ さ れ た 結 果 モ ー ド 表 示 文 字 列 に ど れ だ け の 表 示 領 域 を 確 保 す る か を 調 べ る 必 要 が あ る 場 合 が あ り ま す . jrKanjiControlを 第 2 引 数 に KC_QUERYMAXMODESTRを 指 定 し て 呼 び 出 す こ と に よ り , モ ー ド 表 示 文 字 列 と し て 何 コ ラ ム 必 要 か が 返 り 値 と し て 返 さ れ ま す . こ こ で 言 う コ ラ ム と は 半 角 英 数 文 字 の 文 字 幅 を 1 と し た と き の 値 を 示 し ま す .
第 3 引 数 は 用 い ら れ な い の で ダ ミ ー 値 と し て 0を 与 え ま す .
(例 )
int max_mode_columns;
.....
max_mode_columns = jrKanjiControl(0, KC_QUERYMAXMODESTR, 0);
.....
XLookupKanjiString
名 称
XLookupKanjiString - キ ー ボ ー ド 入 力 の 漢 字 文 字 列 へ の 変 換
記 述 形 式
#include
<X11/Xlib.h>
#include <X11/kanji.h>
int
XLookupKanjiString(
event_struct, buffer_return,
bytes_buffer,
keysym_return, status_return, kanji_status_return
)
XKeyEvent
*event_struct
;
char
*buffer_return
;
int
bytes_buffer
;
KeySym
*keysym_return
;
XComposeStatus
*status_return
;
XKanjiStatus
*kanji_status_return
;
引 数
|
event_struct |
キ ー イ ベ ン ト を 指 定 し ま す 。 |
||
|
buffer_return |
変 換 し た 漢 字 文 字 列 が 返 さ れ ま す 。 |
||
|
bytes_buffer |
バ ッ フ ァ の 長 さ を 指 定 し ま す 。 |
||
|
keysym_return |
キ ー シ ン ボ ル を 返 し ま す 。 NULLを 指 定 す る こ と も で き ま す 。 |
||
|
status_return |
XCompose構 造 体 へ の ポ イ ン タ を 指 定 し ま す 。 |
kanji_status_return
か な 漢 字 変 換 の 様 子 が 返 さ れ ま す 。
説 明
XLookupKanjiString は 、 キ ー イ ベ ン ト を 日 本 語 文 字 列 に 対 応 さ せ る 簡 易 ル ー チ ン で 、 キ ー イ ベ ン ト の 修 飾 キ ー ビ ッ ト を 使 用 し て シ フ ト 、 ロ ッ ク 、 コ ン ト ロ ー ル 等 の 処 理 を 行 い ま す 。
XLookupKanjiString に よ っ て 8bitア ル フ ァ ベ ッ ト 文 字 及 び 16bit日 本 語 文 字 を 取 り 扱 う こ と が で き ま す 。
ア ル フ ァ ベ ッ ト 文 字 の 取 り 扱 い に つ い て は 、 XLookupKanjiString は XLookupString と 同 様 の 動 作 に な り ま す 。
日 本 語 文 字 の 取 り 扱 い に つ い て は 、 こ の 関 数 の 内 部 に お い て ロ ー マ 字 か な 変 換 、 か な 漢 字 変 換 が 行 わ れ ま す 。 日 本 語 の 入 力 時 に XKanjiStatus構 造 体 が 用 い ら れ ま す 。 XKanjiStatus構 造 体 は 以 下 の よ う に 定 義 さ れ ま す 。
|
typedef struct _XKanjiStatus { |
|
|
unsigned char *echoStr; /* local echo string */ |
|
|
int length; |
|
|
/* length of echo string */ |
|
|
int revPos; /* reverse position */ |
|
|
int revLen; /* reverse length */ |
|
|
unsigned long info; |
|
|
/* other information */ │ |
|
|
unsigned char *mode; |
|
|
/* mode information */ │ |
|
|
struct { │ |
|
|
unsigned char *line; |
|
|
/* a grance of Kanji characters */ │ |
|
|
int length; |
|
|
/* length of it */ │ |
|
|
int revPos; |
|
|
/* reverse position of it */ │ |
|
|
int revLen; |
|
|
/* reverse length of it */ │ |
|
|
} gline; |
|
|
/* a grancing line information */ │ |
|
|
} XKanjiStatus; |
|
01 │
|
|
|
02 │ |
か な 漢 字 変 換 を 用 い た 日 本 語 入 力 時 に は 変 換 の 対 象 と な る 読 み な ど を ロ ー カ ル エ コ ー す る 必 要 が あ り ま す 。 XLookupKanjiStringは ロ ー カ ル エ コ ー な ど 表 示 に 関 す る こ と は 何 も 行 わ ず 、 代 わ り に ロ ー カ ル エ コ ー す る べ き 文 字 列 を XKanjiStatus 構 造 体 を 用 い て ア プ リ ケ ー シ ョ ン 側 に 返 し ま す 。
変 換 が 確 定 す る ま で は 、 ロ ー マ 字 か な 変 換 さ れ て い る 文 字 や 、 変 換 候 補 文 字 な ど 、 ロ ー カ ル エ コ ー す べ き (EUC) 文 字 列 が echoStr メ ン バ に よ り 返 さ れ ま す 。 こ の と き 、 ロ ー カ ル エ コ ー 文 字 列 の 長 さ 、 リ バ ー ス 表 示 の 開 始 位 置 と 長 さ ( バ イ ト 単 位 ) が 、 そ れ ぞ れ 、 length メ ン バ 、 revPos 、 revLen メ ン バ に て 返 さ れ ま す 。 ロ ー カ ル エ コ ー す べ き 文 字 列 の た め の バ ッ フ ァ は XLookupKanjiStringに よ っ て 自 動 的 に 確 保 さ れ ま す が 、 そ の 領 域 は 読 み 取 り の み に 用 い ら れ る べ き で あ り 、 そ の 領 域 に 文 字 列 を 書 き 込 ん で は い け ま せ ん 。
ロ ー カ ル エ コ ー す べ き 文 字 列 が 無 い 場 合 は length メ ン バ に 0 が 返 り ま す 。
ロ ー カ ル エ コ ー す べ き 内 容 が 前 回 の XLookupKanjiStringの 呼 び 出 し の と き と 変 わ ら な い 場 合 ( 例 え ば シ フ ト キ ー が 押 さ れ た 場 合 な ど ) は length メ ン バ に −1 が 返 り ま す 。 │
モ ー ド の 変 更 や 、 候 補 一 覧 に 関 す る 情 報 の 有 無 は 、 infoメ ン バ に よ っ て 渡 さ れ │ ま す 。 infoメ ン バ の KanjiModeInfoビ ッ ト が onで あ れ ば 、 modeに 新 し い モ ー ド │ を 示 す 文 字 列 が 返 さ れ ま す 。 infoメ ン バ の KanjiGLineInfoビ ッ ト が onで あ れ ば 、 │ gline構 造 体 に 候 補 一 覧 等 の 情 報 が 格 納 さ れ て い ま す 。 │
gline構 造 体 の lineメ ン バ に は 候 補 一 覧 表 示 の た め の 文 字 列 が 返 さ れ ま す 。 │ gline構 造 体 の line,revPos,revLenの 各 メ ン バ は 、 候 補 一 覧 文 字 列 の そ れ ぞ れ 、 │ 長 さ 、 リ バ ー ス 表 示 の 開 始 位 置 、 リ バ ー ス 表 示 の 長 さ が 返 さ れ ま す 。
変 換 中
に 確 定 し た (EUC)文
字 列 が あ る 場
合 は 、 そ の 文
字 列 が
buffer_return
に
格 納 さ れ 、 そ
の 文 字 列 の 長
さ ( バ イ ト 単
位 ) が こ の 関
数 の 戻 り 値 と
し て 返 さ れ ま
す 。 確 定 し た
文 字 列 が 無 い
場 合 は 戻 り 値
は 0 に な り ま
す 。
XKANJICONTROL
名 前
XKanjiControl - XLookupKanjiStringで の モ ー ド や , 処 理 の 制 御 を 行 う
形 式
#include
<X11/kanji.h>
int XKanjiControl(
dpy, win, request,
arg
)
Display
dpy
;
Window
win
;
int
request
;
char
*arg
;
説 明
XKanjiControlは dpy, win で 示 さ れ る ウ ィ ン ド ウ に お け る 日 本 語 入 力 に 関 し て , request で 示 さ れ る 処 理 を 行 い ま す . 処 理 に よ っ て は , 引 数 を
伴 う 場 合 が あ り , そ の 場 合 , 引 数 は argに て 与 え ま す .
XKanjiControlで 制 御 さ れ る 機 能 と し て は 以 下 が あ り ま す .
|
request 名 |
機 能 |
|||
|
KC_INITIALIZE |
か な 漢 字 変 換 を 初 期 化 す る . |
|||
|
KC_CHANGEMODE |
入 力 モ ー ド を 変 更 す る . |
|||
|
KC_SETWIDTH |
候 補 一 覧 表 示 の 時 の 幅 を 指 定 す る . |
|||
|
KC_FINALIZE |
か な 漢 字 変 換 の 終 了 処 理 . |
KC_SETUNDEFKEYFUNCTION
未 定 義 キ ー に 対 す る 機 能 の 設 定 を 行 う .
KC_SETMODEINFOSTYLE
モ ー ド 情 報 を 数 値 で 表 現 す る か ど う か を 指 定 す る .
|
KC_KAKUTEI |
入 力 中 の 文 字 列 を 確 定 す る . |
|||
|
KC_KILL |
入 力 中 の 文 字 列 を 削 除 す る . |
|||
|
KC_QUERYMODE |
現 在 の モ ー ド を 問 い 合 わ せ る . |
|||
|
KC_SETSERVERNAME |
接 続 す る サ ー バ を 指 定 す る . |
KC_SETINITFILENAME
カ ス タ マ イ ズ フ ァ イ ル を 指 定 す る .
|
KC_CLOSEUICONTEXT |
コ ン テ ク ス ト を ク ロ ー ズ す る . |
KC_QUERYMAXMODESTR
モ ー ド 表 示 文 字 列 の 最 大 長 を 求 め る .
XKanjiControlの 作 用 は 基 本 的 に は dpy, win で 指 定 さ れ た ウ ィ ン ド ウ で の 日 本 語 入 力 に 対 し て の み 作 用 し ま す . た だ し , 初 期 化 の 処 理 や 終 了 の 処 理 に 関 し て は そ の 限 り で は あ り ま せ ん .
XKanjiControlの 操 作 に よ っ て 未 確 定 文 字 列 の 状 態 が 変 化 し た り , モ ー ド の 状 態 が 変 わ る こ と が あ り ま す . そ の よ う な 可 能 性 が あ る 場 合 は arg部 分 に 変 化 し た 情 報 を 格 納 で き る よ う な 構 造 体 へ の ポ イ ン タ を 渡 し ま す . そ の 構 造 体 の 定 義 は 以 下 の よ う に な り ま す .
typedef struct {
int val; /* バ ッ フ ァ に
格 納 さ れ た 文
字 列 の 長 さ が
返 る */
unsigned char *buffer; /* 確 定 文
字 列 を 格 納 す
る た め の バ ッ
フ ァ を 与 え る */
int bytes_buffer; /* 上 記 の バ
ッ フ ァ の 大 き
さ を 与 え る */
XKanjiStatus *ks; /* 未 確 定 文
字 列 の 情 報 を
格 納 す る 構 造
体 へ の ポ イ ン
タ */
} XKanjiStatusWithValue;
XKanjiControlの そ れ ぞ れ の 機 能 の 実 行 の し か た は 以 下 の 通 り で す .
|
(1) |
KC_INITIALIZE - か な 漢 字 変 換 の 初 期 化 |
KC_INITIALIZEを request 部 で 指 定 す る こ と に よ り , か な 漢 字 変 換 の 初 期 化 を 行 い ま す . arg に は warningメ ッ セ ー ジ を 格 納 す る た め の (char **)型 の 変 数 へ の ポ イ ン タ ま た は NULLを 指 定 し ま す . 初 期 化 の 処 理 は 基 本 的 に は XKanjiString(3)が 最 初 に 呼 ば れ た 時 に 自 動 的 に 行 わ れ ま す が , XKanjiControlを 用 い て 初 期 化 す る こ と に よ り , XKanjiString(3)で の 初 期 化 処 理 は 行 わ れ な く な り ま す .
XKanjiString(3)の 使 用 に 先 立 っ て XKanjiControlを 用 い て か な 漢 字 変 換 に 関 す る 制 御 を 行 う 時 な ど は , 漢 字 変 換 の 初 期 化 を 行 う 必 要 が あ り ま す .
正 常 終 了 時 に は XKanjiControlの 戻 り 値 と し て 0が 返 り , 異 常 終 了 時 に は -1が 返 り ま す .
KC_INITIALIZEを 行 っ た 場 合 , エ ラ ー と ま で は い か な く と も 何 ら か の warningが 発 生 す る こ と が あ り ま す . warningが 発 生 し た 場 合 は argに て 与 え ら れ た 変 数 に 対 し て warning文 字 列 の 配 列 へ の ポ イ ン タ が 格 納 さ れ
返 さ れ ま す . warningが な い と き は NULLが 格 納 さ れ 返 さ れ ま す .
(例 )
int res; /* エ ラ ー が 返
っ て く る 場 合
に 備 え る */
char **warning;
.....
res = XKanjiControl(dpy, win, KC_INITIALIZE, &warning);
if (warning) {
char **p;
for (p = warning ; *p ; p++) {
fprintf(stderr, "%s0, *p);
}
}
第 4引 数 に 返 さ れ る warningメ ッ セ ー ジ は ラ イ ブ ラ リ の 内 部 で mallocさ れ ま す . こ れ は , 次 に KC_INITIALIZEや KC_FINALIZEが 行 わ れ た 時 に 開 放 さ れ ま す . ア プ リ ケ ー シ ョ ン プ ロ グ ラ マ が 勝 手 に freeし て は い け ま せ ん . warningは 今 の と こ
ろ 最 大 64メ ッ セ ー ジ に 限 定 さ れ ま す . そ れ 以 上 の メ ッ セ ー ジ は 切 捨 て ら れ ま す .
メ ッ セ ー ジ に 含 ま れ る 可 能 性 の あ る warningに は 以 下 の も の が あ り ま す .
|
・ |
カ ス タ マ イ ズ フ ァ イ ル が シ ス テ ム の も の も 含 め て す べ て 利 用 で き な い . |
||
|
・ |
カ ス タ マ イ ズ フ ァ イ ル に シ ン タ ッ ク ス エ ラ ー が あ る . |
||
|
・ |
ロ ー マ 字 か な 変 換 辞 書 が 利 用 で き な い . |
||
|
・ |
か な 漢 字 変 換 辞 書 が 利 用 で き な い . |
||
|
・ |
か な 漢 字 変 換 サ ー バ に 接 続 で き な い . |
第 4引 数 と し て NULLを 指 定 し た 場 合 warningメ ッ セ ー ジ は 捨 て ら れ ま す .
|
(2) |
KC_CHANGEMODE - 入 力 モ ー ド の 変 更 |
入 力 モ ー ド を ア プ リ ケ ー シ ョ ン か ら 変 更 し ま す . request の
部 分 に は KC_CHANGEMODEを 指 定 し , arg に XKanjiStatusWithValue構 造 体 を 指 定 し て 下 さ い . XKanjiStatusWithValue構 造 体 の val メ ン バ に て モ ー ド 番 号 を 指 定 す る こ と に よ り 日 本 語 モ ー ド が 切 り 替 わ り ま す . モ ー ド 番 号 は 以 下 の マ ク ロ で 示 さ れ ま す .
|
マ ク ロ 番 号 |
モ ー ド |
|||
|
CANNA_MODE_AlphaMode |
ア ル フ ァ ベ ッ ト モ ー ド |
|||
|
CANNA_MODE_HenkanMode |
変 換 入 力 モ ー ド |
|||
|
CANNA_MODE_KigoMode |
記 号 入 力 モ ー ド |
CANNA_MODE_ZenHiraKakuteiMode
全 角 ひ ら が な 確 定 入 力 モ ー ド
CANNA_MODE_ZenKataKakuteiMode
全 角 カ タ カ ナ 確 定 入 力 モ ー ド
CANNA_MODE_HanKataKakuteiMode
半 角 カ タ カ ナ 確 定 入 力 モ ー ド
CANNA_MODE_ZenAlphaKakuteiMode
全 角 ア ル フ ァ ベ ッ ト 確 定 入 力 モ ー ド
CANNA_MODE_HanAlphaKakuteiMode
半 角 ア ル フ ァ ベ ッ ト 確 定 入 力 モ ー ド
|
CANNA_MODE_HexMode |
16進 コ ー ド 入 力 モ ー ド |
|||
|
CANNA_MODE_BushuMode |
部 首 入 力 モ ー ド |
|||
|
CANNA_MODE_TorokuMode |
単 語 登 録 モ ー ド |
こ の 機 能 に よ り モ ー ド を 変 更 す る と モ ー ド 名 を 始 め と し て 多 く の 表 示 が 変 化 を 受 け ま す . 表 示 の 変 更 は argと し て 指 定 し た XKanjiStatusWithValue構 造 体 に て 返 さ れ ま す .
(例 )
XKanjiStatus ks;
XKanjiStatusWithValue ksv;
unsigned char buf[SOMESIZE];
.....
ksv.ks = &ks;
ksv.buffer = buf;
ksv.bytes_buffer = SOMESIZE;
ksv.val = CANNA_MODE_HexMode;
XKanjiControl(dpy, win,
KC_CHANGEMODE, &ksv);
len = ksv.val;
.....
/* 未 確 定 文 字 列
や 確 定 文 字 列
の 情 報 が ksvに よ
り 返 さ れ ま す
. */
|
(3) |
KC_SETWIDTH - 候 補 一 覧 表 示 の た め の 幅 を 指 定 |
候 補 一 覧 の た め に 用 い ら れ る 領 域 の コ ラ ム 数 を 指 定 し ま す . 1 コ ラ ム の 幅 は ア
ル フ ァ ベ ッ ト 文 字 あ る い は 半 角 カ タ カ ナ 1 文 字 の 文 字 幅 で あ り , 全 角 漢 字 は 2 コ ラ ム 占 め る こ と に な り ま す . 候 補 一 覧 表 示 の た め の 幅 を 指 定 す る た め に request 部 分 に 指 定 す る 値 は KC_SETWIDTHで , こ の と き arg に コ ラ ム 数 を 指 定 し ま す .
(例 )
XKanjiControl(dpy, win, KC_SETWIDTH, (char *)60);
|
(4) |
KC_FINALIZE - か な 漢 字 変 換 の 終 了 処 理 . |
プ ロ グ ラ ム を 終 了 す る な ど の 局 面 で か な 漢 字 変 換 も 終 了 す る こ と を 指 定 し ま す . か な 漢 字 変 換 処 理 を 終 了 さ せ る 時 は 必 ず こ の 処 理 を 行 っ て 下 さ い . 終 わ る に あ た っ て 今 ま で 学 習 し た 内 容 が フ ァ イ ル に 登 録 さ れ ま す . request 部 分 に は KC_FINALIZEを 指 定 し ま す .
正 常 終 了 時 に 0, 異 常 終 了 時 に -1が 戻 り 値 と し て 返 り ま す .
KC_FINALIZEを 行 っ た 場 合 , エ ラ ー と ま で い か な く と も 何 ら か の warningが 発 生
す る こ と が あ り ま す . warningが 発 生 し た 場 合 は argに て 与 え ら れ た 変 数 に warning文 字 列 の 配 列 へ の ポ イ ン タ が 格 納 さ れ 返 さ れ ま す . warningが な い 場 合 に は NULLポ イ ン タ が 格 納 さ れ 返 さ れ ま す .
(例 )
int res; /* エ ラ ー が 返
る 場 合 に 備 え
る */
char **warning;
.....
res = XKanjiControl(dpy, win, KC_FINALIZE, &warning);
if (warning) {
char **p;
for (p = warning ; *p ; p++) {
fprintf(stderr, "%s0, *p);
}
}
第 4引 数 に 返 さ れ る warningメ ッ セ ー ジ は , ラ イ ブ ラ リ の 内 部 で mallocさ れ ま
す . こ れ は , 次 に KC_INITIALIZEや KC_FINALIZEが 行 わ れ た 時 に 開 放 さ れ ま す . ア プ リ ケ ー シ ョ ン プ ロ グ ラ マ が 勝 手 に freeし て は い け ま せ ん .
warningは 今 の と こ ろ 最 大 64メ ッ セ ー ジ に 限 定 さ れ ま す . そ れ 以 上 の メ ッ セ ー ジ は 切 捨 て ら れ ま す .
メ ッ セ ー ジ に 含 ま れ る 可 能 性 の あ る warningに は 次 の も の が あ り ま す .
|
・ |
辞 書 が ア ン マ ウ ン ト で き な い . |
第 4引 数 と し て NULLを 指 定 し た 場 合 , warningメ ッ セ ー ジ は 捨 て ら れ ま す .
|
(5) |
KC_SETUNDEFKEYFUNCTION - 未 定 義 キ ー に 対 す る 機 能 の 設 定 |
読 み を 入 力 し て い る 状 態 で C-tを 打 っ た と き の よ う に 未 定 義 キ ー を 入 力 し た 時 に 取 ら れ る 処 理 を 指 定 し ま す . 未 定 義 キ ー に 対 応 し て 行 わ れ る 処 理 と し て は 以 下 の 処 理 が あ り ま す .
|
マ ク ロ 名 |
処 理 |
|||
|
kc_normal |
ビ ー プ |
|||
|
kc_through |
ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム に 渡 す |
|||
|
kc_kakutei |
確 定 し ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム に 渡 す |
|||
|
kc_kill |
消 去 し ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム に 渡 す |
kc_normalを 指 定 し た 場 合 , 外 部 変 数 jrBeepFuncに 設 定 さ れ た 関 数 が 未 定 義 キ ー
入 力 時 に ラ イ ブ ラ リ に よ っ て 自 動 的 に 呼 び 出 さ れ ま す . jrBeepFuncに 値 を 設 定 し な い 場 合 に は (jrBeepFunc == NULLの 場 合 に は )何 も 起 こ り ま せ ん .
(例 )
extern (*jrBeepFunc)(), beep();
jrBeepFunc = beep;
XKanjiControl(dpy, win, KC_SETUNDEFKEYFUNCTION,
kc_normal);
|
(6) |
KC_SETMODEINFOSTYLE - モ ー ド 情 報 の 表 現 |
モ ー ド 情 報 を 文 字 列 で は な く ビ ッ ト マ ッ プ な ど の デ ー タ で 表 示 し た い 場 合 が あ り ま す . そ の よ う な 場 合 に は モ ー ド 情 報 と し て 数 値 デ ー タ が 返 っ て く る と 処 理 が し や す く な り ま す . XKanjiControlで KC_SETMODEINFOSTYLEを 指 定 し , arg に 1 を 渡 す こ と に よ っ て そ れ 以 後 は XKanjiStatus構 造 体 の mode メ ン バ に は モ ー ド を 表 す 数 値 に ’@’(0x40)を 加 え た 1 文 字 が 返 さ れ る よ う に な り ま す . モ ー ド を 表 す 数 値 に 変 換 す る 場 合 に は 返 っ て き た 文 字 列 か ら ’@’(0x40)を 引 き ま す . モ ー ド を 表 す 数 値 に つ い て は 入 力 モ ー ド の 変 更 ((2)KC_CHANGEMODE)の こ う を 参 照 し て 下 さ い .
|
(7) |
KC_KAKUTEI, (8) KC_KILL - 入 力 中 の 文 字 列 の 放 棄 |
入 力 中 の 文 字 列 を 何 ら か の 都 合 で 放 棄 し た い 場 合 が あ り ま す . 放 棄 す る 場 合 に 入 力 中 の 文 字 列 を 確 定 文 字 列 と し て 取 り 込 ん で か ら 放 棄 し た い 場 合 と 全 く 捨 て て し ま っ て か ら 放 棄 し た い 場 合 が あ り ま す . 確 定 す る 場 合 に は XKanjiControlに て KC_KAKUTEIを 指 定 し , 放 棄 す る 場 合 に は KC_KILLを 指 定 し ま す .
こ の 処 理 は 表 示 に 影 響 を 与 え る の で 第 4引 数 に は XKanjiStatusWithValue構 造 体 を 指 定 し な け れ ば な り ま せ ん .
XKanjiStatusWithValue ksv;
XKanjiStatus ks;
unsigned char buf[SOMESIZE];
.....
ksv.ks = &ks;
ksv.buffer = buf;
ksv.bytes_buffer = SOMESIZE;
XKanjiControl(dpy, win,
KC_KAKUTEI, &ksv);
len = ksv.val;
.....
|
(9) |
KC_QUERYMODE - モ ー ド の 問 い 合 わ せ |
現 在 の モ ー ド を 問 い 合 わ せ る に は XKanjiControlで KC_QUERYMODEを 指 定 し ま す .
第 4引 数 に は モ ー ド 文 字 列 を 格 納 す る た め の 文 字 配 列 の ポ イ ン タ を 指 定 し ま す . モ ー ド 文 字 列 は ヌ ル 文 字 で 終 わ る 文 字 列 で す . こ こ に 数 値 が 返 る よ う に す る に は XKanjiControlで KC_SETMODEINFOSTYLEを 指 定 し て モ ー ド 文 字 列 の ス タ イ ル を 変 更 し て お き ま す .
(例 )
char currentMode[MAXMODELEN];
.....
XKanjiControl(dpy, win, KC_QUERYMODE, currentMode);
.....
|
(10) |
KC_SETSERVERNAME - サ ー バ の 指 定 |
か な 漢 字 変 換 サ ー バ と し て ど の サ ー バ を 使 う か を ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム を 終 了 す る こ と な し に 切 替 え る こ と が 可 能 で す . か な 漢 字 変 換 サ ー バ と し て 接 続 す る べ き サ ー バ を 指 定 す る に は XKanjiControlで KC_SETSERVERNAMEを 指 定 し ま す . 第 4引 数 に は 接 続 し た い サ ー バ 名 を 指 定 し ま す .
|
(11) |
KC_SETINITFILENAME - カ ス タ マ イ ズ フ ァ イ ル の 指 定 |
カ ス タ マ イ ズ フ ァ イ ル を ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム 側 か ら 変 更 す る こ と が で き ま す . カ ス タ マ イ ズ フ ァ イ ル の 変 更 は XKanjiControlの 第 3引 数 に KC_SETINITFILENAMEを 指 定 し , 第 4引 数 に フ ァ イ ル 名 文 字 列 を 指 定 す る こ と に よ り 行 い ま す . こ の 処 理 を 行 う 場 合 は KC_INITIALIZEに 先 立 っ て 実 行 し て お か な け れ ば な り ま せ ん .
(例 )
char *inifile = "app-own.canna"
.....
XKanjiControl(dpy, win, KC_SETINITFILENAME, initfile);
.....
|
(12) |
KC_CLOSEUICONTEXT - コ ン テ ク ス ト の ク ロ ー ズ |
XKanjiControlや XKanjiStringを 呼 び 出 す と , dpy, win の 組 み 合 わ せ に 対 し て ひ と つ の 変 換 コ ン テ ク ス ト を 割 り 当 て ま す .
今 ま で 使 わ れ て い な い dpy, win の 組 み 合 わ せ を XKanjiStringあ る い は XKanjiControlに 与 え る こ と が 可 能 で あ り , そ の 場 合 , そ の ウ ィ ン ド ウ 用 に 新 た に コ ン テ ク ス ト が 作 成 さ れ 必 要 な メ モ リ が 確 保 さ れ ま す .
そ れ ま で 使 用 し て い た ウ ィ ン ド ウ が 使 わ れ な く な っ た 場 合 に , そ の ウ ィ ン ド ウ に 割 り 当 て て 使 っ て い た コ ン テ ク ス ト 用 に 確 保 さ れ た メ モ リ を 開 放 す る に は XKanjiControlを 第 3引 数 に KC_CLOSEUICONTEXTを 指 定 し て 呼 び 出 し ま す .
こ の 処 理 は 表 示 の 変 化 を と も な う の で 第 4引 数 に は XKanjiStatusWithValue構 造 体 を 与 え ま す .
(例 )
XKanjiStatusWithValue ksv;
XKanjiStatus ks;
unsigned char buf[SOMESIZE];
.....
ksv.ks = &ks;
ksv.buffer = buf;
ksv.bytes_buffer = SOMESIZE;
XKanjiControl(dpy, win,
KC_CLOSEUICONTEXT, &ksv);
.....
|
(13) |
KC_QUERYMAXMODESTR - モ ー ド 表 示 文 字 列 の 最 大 長 を 求 め る . |
初 期 化 フ ァ イ ル に て モ ー ド 表 示 文 字 列 が カ ス タ マ イ ズ で き ま す が , カ ス タ マ イ
ズ さ れ た 結 果 モ ー ド 表 示 文 字 列 に ど れ だ け の 表 示 領 域 を 確 保 す る か を 調 べ る 必 要 が あ る 場 合 が あ り ま す . XKanjiControlを 第 3引 数 に KC_QUERYMAXMODESTRを 指 定 し て 呼 び 出 す こ と に よ り , モ ー ド 表 示 文 字 列 と し て 何 コ ラ ム 必 要 か が 返 り 値 と し て 返 さ れ ま す . こ こ で 言 う コ ラ ム と は 半 角 英 数 文 字 の 文 字 幅 を 1 と し た と き の 値 を 示 し ま す .
第 4引 数 は 用 い ら れ な い の で ダ ミ ー 値 と し て 0を 与 え ま す .
(例 )
int max_mode_columns;
.....
max_mode_columns = XKanjiControl(dpy, win,
KC_QUERYMAXMODESTR, 0);
.....