Man page - uilib(3)

Packages contains this manual

Available languages:

en ja

Manual

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;

#define KanjiModeInfo

01 │
#define KanjiGLineInfo

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);
.....