% Copyright 1994 NEC Corporation, Tokyo, Japan.
%
% Permission to use, copy, modify, distribute and sell this software
% and its documentation for any purpose is hereby granted without
% fee, provided that the above copyright notice appear in all copies
% and that both that copyright notice and this permission notice
% appear in supporting documentation, and that the name of NEC
% Corporation not be used in advertising or publicity pertaining to
% distribution of the software without specific, written prior
% permission.  NEC Corporation makes no representations about the
% suitability of this software for any purpose.  It is provided "as
% is" without express or implied warranty.
%
% NEC CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
% INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN 
% NO EVENT SHALL NEC CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
% CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF 
% USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 
% OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
% PERFORMANCE OF THIS SOFTWARE. 
%
% $Id: custom.tex,v 1.3 2003/09/17 01:37:01 aida_s Exp $
%
\chapter{カスタマイズ}
\label{3.3カスタマイズ}

かな漢字変換に関して変換に利用する辞書を始めとしてキー操作やローマ字か
な変換テーブルにいたるまでユーザの好みに合うように \HIDX{カスタマイズ}
{かすたまいす}{H0.4.0.0.0} することができます。 

カスタマイズに用いられるファイルとしては、以下のファイルがあります。

\vspace{5mm}
%\begin{center}
\begin{tabular}{ll}
日本語入力の機能やキー操作を設定する&\hpref{count=10,label=H0.4.1.0.0}カスタマイズファイル \\
ローマ字かな変換の規則を設定する&\hpref{count=11,label=H0.4.4.2.0}ローマ字かな変換ソース \\
                                     &  　　　　　　　　　　(×××.ctd) \\
                                     & \hpref{count=12,label=H0.4.4.0.0}ローマ字かな変換テーブル \\
                                     &  　　　　　　　　　　(×××.cbp) \\
\end{tabular}
%\end{center}
\vspace{5mm}

ここではそれぞれのユーザに合わせたカスタマイズ方法について説明します。

% ------------------------------ 3.3.1
%\section{\HIDX{初期化ファイル(カスタマイズファイル)}
%{しよきかふあいる（かすたまいすふあいる）}{H0.4.1.0.0}}
\section{\HIDX{カスタマイズファイル}{かすたまいすふあいる}{H0.4.1.0.0}}
\label{3.3.1カスタマイズファイル}

カスタマイズはカスタマイズファイルを用いて行います。カ
スタマイズファイルは特別の指定がないかぎりホームディレクトリに
ある \HIDX{.canna}{．ＣＡＮＮＡ}{H0.4.1.0.0} というファイルが用いられます。

\subsection{カスタマイズのための初期設定}

カスタマイズを行うにはまず \refCANNALIBDIR /sample/default.canna
を自分のホームディレクトリに持ってきて \verb+.canna+ という名前でセー
ブします。

\vspace{2mm}

\begin{nquote}{3em}
{\ttfamily
　　\%  cp  \CANNALIBDIR/sample/default.canna  .canna \\
　　\%  chmod  u+w  .canna 
}
\end{nquote}

\vspace{2mm}

すでに .canna を持っている人は上記の操作は不要です。

\subsection{カスタマイズファイルの指定}

環境変数の設定により参照するカスタマイズファイルを変更することが
できます。

カスタマイズファイルは以下の順にサーチされます。

\begin{enumerate}

\item 環境変数 \HIDX{CANNAFILE}{ＣＡＮＮＡＦＩＬＥ}{H0.4.1.2.0} が
設定されているとき

環境変数 CANNAFILE によって示されるファイルが存在すれば、そのファイルが
カスタマイズファイルとして使用されます。

\item\label{.canna} \$HOME/.cannaが存在するとき

そのファイルがカスタマイズファイルとして使用されます。

\item\label{other} 上記のいずれでもないとき

\refCANNALIBDIR /\HIDX{default.canna}{ＤＥＦＡＵＬＴ．ＣＡＮＮＡ}
{H0.4.1.2.0.a1} \hptar{label=H0.4.1.2.0.a1} がカスタマイズファイルとして用いられます。

\end{enumerate}

また、(\ref{.canna}), (\ref{other})の場合は
それぞれ次のファイルも読み込まれます。

\begin{itemize}
\item (\ref{.canna})の場合
\begin{nquote}{1em}
\begin{namelist}{　　　}
\item[{\dm \rm (2.1)}]環境変数 \HIDX{DISPLAY}{ＤＩＳＰＬＡＹ}{H0.4.1.2.0.a2} \hptar{label=H0.4.1.2.0.a2}に
値が設定されており、その値が ×××:0 であるときに、ホームディレクトリに 
~.canna-$\times\times\times$ という名前のファイルが存在する場合、さらに
このファイルも読み込まれます。

\item[{\dm \rm (2.2)}]環境変数 \HIDX{TERM}{ＴＥＲＭ}{H0.4.1.2.0.a3} \hptar{label=H0.4.1.2.0.a3}に
値が設定されており、その値が $\times\times\times$ であるときに、
ホームディレクトリに ~.canna-$\times\times\times$ という名前のファイルが
存在する場合、さらにこのファイルも読み込まれます。
\end{namelist}
\end{nquote}

\item (\ref{other})の場合
\begin{nquote}{1em}
\begin{namelist}{　　　}
\item[{\dm \rm (3.1)}]環境変数 DISPLAY に値が設定されており、その値が 
$\times\times\times$:0 であるときに \refCANNALIBDIR に 
$\times\times\times$.canna という名前のファイルが存在する場合、
さらにこのファイルも読み込まれます。

\item[{\dm \rm (3.2)}]環境変数 TERM に値が設定されており、
その値が $\times\times\times$ であるときに \refCANNALIBDIR に 
$\times\times\times$.canna という名前のファイルが存在する場合、
さらにこのファイルも読み込まれます。
\end{namelist}
\end{nquote}
\end{itemize}

以上をまとめるとカスタマイズファイルのサーチ順は 表\ref{カスタマイズファ
イルのサーチ順} のとおりになります。 

\vspace{5mm}

%{\tt
\begin{table}[hbtp]
\caption{カスタマイズファイルのサーチ順}
\label{カスタマイズファイルのサーチ順}
\begin{center}
\begin{tabular}{|l|l|}
\hline
   &  \multicolumn{1}{|c|}{ファイル} \\
\hline
1  &   CANNAFILE で指定したファイル \\
\hline
2  &   \$HOME/.canna \\
   &   \$HOME/.canna-Xのディスプレイ名 \\
   &   \$HOME/.canna-term名 \\
\hline
3  &   \refCANNALIBDIR /default.canna \\
   &   \refCANNALIBDIR /Xのディスプレイ名.canna \\
   &   \refCANNALIBDIR /term名.canna \\
\hline
\end{tabular}
\end{center}
\end{table}
%}

%\vspace{5mm}

% ------------------------------ newnew
\subsection{サンプルとして提供するカスタマイズファイル}
\label{サンプルとして提供するカスタマイズファイル}

『かんな』以外のフロントエンドプロセッサになれていらっしゃる方もいるで
しょう。 そのような方のために、システムでは、他のフロントエンドプロセッ
サの操作性を有したカスタマイズファイル\raisebox{0.6ex}{\footnotesize
\dg 注 1} を提供しています。  

サンプルとして提供されているカスタマイズファイルとしては表\ref{提供するカ
スタマイズファイル} があります。
これらのサンプルファイルは \refCANNALIBDIR /sample の下にファイルの形
で存在します。%\raisebox{0.6ex}{\footnotesize \dg 注 2} 

default.canna がデフォルトの設定をカスタマイズファイルで表したものになっ
ています。


%{\tt
\begin{table}[hbtp]
\begin{center}
\caption{サンプルとして提供するカスタマイズファイル}\label{提供するカ
スタマイズファイル}
\begin{tabular}{|l|p{10cm}|}
\hline
\multicolumn{1}{|c|}{ファイル名} &  \multicolumn{1}{|c|}{備　　　　　　　考} \\
\hline
default.canna  & デフォルトの設定をカスタマイズファイルで表したもの \\
\hline
sample.canna & カスタマイズの方法の例を記述したカスタマイズファイル\\
\hline
just.canna    & 一太郎 \footnotemark とほぼ同じキー操作を提供するカス
タマイズファイル \\ 
\hline 
matsu.canna     & 松茸\footnotemark とほぼ同じキー操作を提供するカスタ
マイズファイル \\ 
\hline
vje.canna     & vje$-\beta$\footnotemark とほぼ同じキー操作を提供するカス
タマイズファイル \\ 
\hline 
wx2+.canna     & WXII+\footnotemark とほぼ同じキー操作を提供するカスタマ
イズファイル \\ 
\hline 
verbose.canna  & カスタマイズ可能な全キーワードを列挙したカスタマイズ
ファイル \\ 
\hline 
\end{tabular}
\end{center}
\end{table}
%}

\addtocounter{footnote}{-3}\footnotetext{一太郎はジャストシステム(株)
の商標です} 
\addtocounter{footnote}{1}\footnotetext{松茸は(株)管理工学研究所の商標です} 
\addtocounter{footnote}{1}\footnotetext{VJE$-\beta$は(株)バックスの商標です}
\addtocounter{footnote}{1}\footnotetext{WXII+はエー・アイ・ソフト(株)
の商標です} 

サンプルのカスタマイズファイルを使用したい場合は、環境変数 CANNAFILE 
を設定する$^{(1)}$か、自分のホームディレクトリ にサンプルファイルを 
.canna としてコピーして使用する$^{(2)}$とよいでしょう。
just.canna を使用したい場合は次のいずれかを実行します。

\vspace{3mm}

\begin{nquote}{3em}
\begin{enumerate}
\item \texttt{\% setenv  CANNAFILE  \CANNALIBDIR/sample/just.canna}
\item \texttt{\% cp  \CANNALIBDIR/sample/just.canna  \textasciitilde/.canna}
\end{enumerate}
\end{nquote}

\vspace{3mm}

\begin{nquote}{1em}
\begin{namelist}{　}
\item [注 1] カスタマイズファイルは、できるかぎり各々のフロントエン
ドプロセッサのキー操作と同じになるように設定してありますが、X ウィンドウ 
においてのみ機能するキー (表 \ref{Xウィンドウのみのキー一覧} 参照) なども
存在するため、必ずしも、全く同じ操作方法が実現できるわけではありません。 

%% \item [注 2] サンプルファイルは、cannasmp パッケージに含まれています。
%% \refCANNALIBDIR /sample が存在しない場合は、 cannasmp パッケージをイン
%% ストールしてください。
\end{namelist}
\end{nquote}

\subsection{カスタマイズファイルの例}

次頁に\HIDX{カスタマイズファイルの例}{かすたまいすふあいるのれい}
{H0.4.1.4.0} を示します。

カスタマイズファイルは \HIDX{Lisp}{ＬＩＳＰ}{H0.4.1.4.0} 言語と同様の
シンタックスにより記述します。
また、「;」(セミコロン)から行末まではコメントとみなされます。

\vspace{5mm}

\begin{Verbatim}[frame=single]
 ;;
 ;;カスタマイズファイルの例
 ;;
 (setq cursor-wrap                t)    ;カーソルが循環するようにする。
 (setq gakushu                    t)    ;学習するようにする。
 (setq kakutei-if-end-of-bunsetsu t)    ;文節の最後で右に行くと確定する。
 (setq break-into-roman           t)    ;BSでいったんローマ字に戻す。
 (setq grammatical-question       nil)  ;単語登録のとき品詞の質問をしない。
 (setq kouho-count                t)    ;候補一覧のとき 1/25 などの表示をする。
 (setq n-henkan-for-ichiran       3)    ;変換キー3回で一覧を出すようにする。

 ; 使用するローマ字かな変換テーブルの設定
 (setq romkana-table   "default.cbp")

 ; 使用するかな漢字変換辞書の設定
 (use-dictionary
    "iroha"
    "fuzokugo"
    "hojoswd"
    :bushu  "bushu"     ; 部首変換用辞書
    )
 ; ローマ字かな変換の多候補設定
 (defsymbol
   ?["「" "『 " "[" "〔 " "［ "
   ?]"」" "』" "]" " 〕" "］") 

 (defsymbol
   ?．"。" "．" "."
   ?，"、" "，" ",")

 ;;キーの定義
 (global-set-key "\F1" 'kigou-mode)
 (global-set-key "\F2" 'hex-mode)
 (global-set-key "\F3" 'bushu-mode)
\end{Verbatim}

% ------------------------------ 3.3.2
\section{使用する\HIDX{辞書の指定}{ししよのしてい}{H0.4.2.0.0}}
\label{3.3.2使用する辞書の指定}

本日本語入力システムでは複数の辞書を同時に利用することができます。
利用する辞書の指定方法は、その辞書をどのように利用するかにより、
表\ref{辞書指定キーワード}に示す 5 種類があります。

%\vspace{5mm}

%{\tt
\begin{table}[hbtp]
\begin{center}
\caption{辞書指定キーワード}\label{辞書指定キーワード}
\begin{tabular}{|l|l|p{7cm}|} \hline
\multicolumn{1}{|c|}{キーワード} & \multicolumn{1}{|c|}{辞書の種類} & \multicolumn{1}{|c|}{備考} \\ \hline
\multicolumn{1}{|c|}{−} & システム辞書   & システム辞書として用いる辞書を指定します。この辞書には単語の登録は行えません。 \\ \hline
:bushu                   & 部首変換用辞書 & 部首変換に用いる辞書を指定します。 \\ \hline
:grammar                 & 文法情報用辞書 & 品詞の定義、品詞間の接続情報を持つ辞書を指定します。 \\ \hline
:user                    & 単語登録用辞書 & 単語登録用の辞書を指定します。この辞書には単語を登録することができます。この辞書の形式はテキスト形式でなければなりません。\raisebox{0.6ex}{\footnotesize \dg 注} \\ \hline
:katakana                & 自動登録用辞書 & カタカナ語を自動登録する辞書を指定します。 \\ \hline
\end{tabular}
\end{center}
\end{table}
%}

%\vspace{5mm}

\begin{nquote}{1em}
\begin{namelist}{　}
\item[注意]テキスト形式辞書、
バイナリ形式辞書については {\dg\bf \ref{概説・かな漢字変換辞書}　
\hpref{count=8,label=H0.3.1.2.0}かな漢字変換辞書} および {\dg\bf
\ref{3.4.2辞書}　\hpref{count=2,label=H0.5.2.0.0}辞書} を参照してください。
\end{namelist}
\end{nquote}

使用する辞書の指定はカスタマイズファイルの中で次のように行います。

\HIDXAS{use-dictionary}{ＵＳＥ−ＤＩＣＴＩＯＮＡＲＹ}{H0.4.2.0.0}
\begin{nquote}{3em}
\begin{verbatim}
(use-dictionary   "iroha"
                  "fuzokugo"
                  "hojomwd"
                  "hojoswd"
                  "yuubin"
 :katakana        "katakana"
 :bushu           "bushu"
 :grammar         "grammar"
 :user            "mine" )
\end{verbatim}
\end{nquote}

\begin{nquote}{3em}
\begin{namelist}{　　}
\item[注意] use-dictionary は一度の記述でたくさんの
辞書を指定しても$^{(1)}$、複数回の記述に分けて、
辞書を指定しても$^{(2)}$同じ効果が得られます。
すなわち、以下の (1) と (2) は同じ意味を持ちます。
\begin{nquote}{3em}
\begin{enumerate}
\item (use-dictionary "A"  "B"  "C")
\item (use-dictionary "A") \\
(use-dictionary "B") \\ (use-dictionary "C")
\end{enumerate}
\end{nquote}
\end{namelist}

\end{nquote}

指定できるシステム辞書としては表\ref{指定できる辞書}に示すものがあります。

%\vspace{5mm}

%{\tt
\begin{table}[hbtp]
\begin{center}
\caption{指定できる辞書}\label{指定できる辞書}
\begin{tabular}{|l|l|}
\hline
\multicolumn{1}{|c|}{辞 書 名}    & \multicolumn{1}{|c|}{説　　　　　明} \\
\hline
 %%%%% %%%%%% %%%%% %%%%%% %%%%% %%%%%%
 %iroha     & 基幹辞書(8万語) \\
iroha     & \HIDX{基幹辞書}{きかんししよ}{H0.4.2.0.0.a} \hptar{label=H0.4.2.0.0.a} \\
\hline
fuzokugo  & \HIDX{付属語辞書}{ふそくこししよ}{H0.4.2.0.0.a} \\
\hline
bushu     & \HIDX{部首辞書}{ふしゆししよ}{H0.4.2.0.0.a} \\
\hline
yuubin    & \HIDX{郵便番号辞書}{ゆうひんはんこうししよ}{H0.4.2.0.0.a} \\
\hline
hojomwd   & 口語表現などの補助的な自立語 \\
\hline
hojoswd   & 口語表現などの補助的な付属語 \\
\hline
 %%%%% %%%%%% %%%%% %%%%%% %%%%% %%%%%% 
 %necgaiji  & 日本電気の外字を含む語 \\
 %\hline
 %%%%% %%%%%% %%%%% %%%%%% %%%%% %%%%%%
\end{tabular}
\end{center}
\end{table}
%}

%\vspace{5mm}

これらの辞書のうち、iroha が基本的な辞書になります。
また、iroha を使用するときは fuzokugo も必ず指定しなければなりません。
したがって最低限使用する辞書は iroha および fuzokugo であり、
次のように指定することになります。

\begin{nquote}{3em}
\begin{verbatim}
(use-dictionary  "iroha"  "fuzokugo" )
\end{verbatim}
\end{nquote}

郵便番号辞書は郵便番号から地名への変換を行うための辞書です。
必要に応じてご利用ください。

hojomwd,hojoswdは補助的に追加された付属語の辞書です。口語表現などはこの辞書を使用することにより変換し易くなります。必要に応じてご利用ください。

上記の 3 つの辞書は以下のように指定することにより利用できます。

\begin{nquote}{3em}
\begin{verbatim}
(use-dictionary  "yuubin"  "hojomwd"  "hojoswd" )
\end{verbatim}
\end{nquote}

bushu は部首変換を行うときに使われる辞書です。
部首変換を利用する場合はこの辞書を使うことを以下のようにして指定してください。
辞書の指定のためのキーワード \HIDX{:bushu}{：ＢＵＳＨＵ}{H0.4.2.0.0} が
必要ですので、ご注意ください。

\begin{nquote}{3em}
\begin{verbatim}
(use-dictionary  :bushu  "bushu" )
\end{verbatim}
\end{nquote}

品詞の定義および品詞間の接続情報を持つ辞書を指定するためには、
キーワード \HIDX{:grammar}{：ＧＲＡＭＭＡＲ}{H0.4.2.0.0} を用います。
:grammar で指定された辞書がない場合、
および :grammar で指定された辞書に付属語情報が記述されていない場合は、
fuzokugo.cbd に記述されている文法情報を使用します。
また、:grammar が 2 つ以上指定された場合は、後に指定された辞書を使用します。
:grammar の指定は以下のように行います。

\begin{nquote}{3em}
\begin{verbatim}
(use-dictionary :grammar "myGrammarDictionary" )
\end{verbatim}
\end{nquote}

ユーザ自身が追加登録した単語を納めておくための辞書を指定するためには、
キーワード \HIDX{:user}{：ＵＳＥＲ}{H0.4.2.0.0} を用います。
単語登録の際、登録された単語をどの辞書に納めるかを尋ねられますが、
そのとき選択できる辞書は :user で指定した辞書に限られます。

:user で指定する辞書は単語登録を行う関係上、単語登録用辞書として作成された
テキスト形式の辞書でなければなりません\raisebox{0.6ex}{\footnotesize \dg 注}。 
:user の指定は以下のように行います。

\begin{nquote}{3em}
\begin{verbatim}
(use-dictionary :user "myTextDictionary" )
\end{verbatim}
\end{nquote}

\begin{nquote}{1em}
\begin{namelist}{　}
\item[注意]テキスト形式辞書、
バイナリ形式辞書については {\dg\bf \ref{概説・かな漢字変換辞書}　 
\hpref{count=8,label=H0.3.1.2.0}かな漢字変換辞書} および {\dg\bf
\ref{3.4.2辞書}　\hpref{count=2,label=H0.5.2.0.0}辞書} を参照してください。
\end{namelist}
\end{nquote}

単語登録用辞書は mkdic コマンドで作成できます。
最初は空のファイルを指定しておき、
順次辞書登録により単語を追加していくのがよいでしょう。

参考用としてシステムファイル(\refCANNALIBDIR /dic/canna)に
含まれている辞書を表\ref{テキスト形式システム辞書}に示します。
単語登録用辞書を作成するときの参考にしてください。

%\vspace{5mm}

%{\tt
\begin{table}[hbtp]
\begin{center}
\caption{\refCANNALIBDIR /dic/canna ディレクトリにあるテキスト形式システム辞書}\label{テキスト形式システム辞書}
\begin{tabular}{|l|l|}
\hline
\multicolumn{1}{|c|}{辞 書 名} & \multicolumn{1}{|c|}{説　　　明} \\
\hline
kanasample  & カタカナ語 \\
\hline
software  & ソフトウェア語　　　　 \\
\hline
chimei    & 地名 \\
\hline
\end{tabular}
\end{center}
\end{table}
%}

\begin{nquote}{1em}
\begin{namelist}{　}
\item[注意]デフォルトカスタマイズファイル(\refCANNALIBDIR/default.canna)では、単語登録用辞書としてあらかじめ "user" が指定されています。
\end{namelist}
\end{nquote}

キーワード \HIDX{:katakana}{：ＫＡＴＡＫＡＮＡ}{H0.4.2.0.0} で指定されるカタカ
ナ語自動登録辞書は特殊な辞書です。字種変換（\textbf{\ref{字種変換による入力}
字種変換による入力}参照）で全角カタカナに確定したときに、そのカタカナ
を自動登録することができます。自動登録の指定は、カスタマイズファイル中
で以下のように記述します。

\begin{nquote}{3em}
\begin{verbatim}
(use-dictionary :katakana "katakana")
\end{verbatim}
\end{nquote}

自動登録用の辞書はテキスト形式で、書き込み可能になっていなければなりま
せん（\textbf{\ref{辞書のREAD・WRITE権}辞書のREAD・WRITE権}参照）。自
動登録機能を使うときは、あらかじめ単語登録用辞書と同様に
\texttt{mkdic} コマンドで辞書を作っておくことをおすすめします。

% ------------------------------ 3.3.3
\section{\HIDX{ローマ字かな変換テーブルの設定}{ろーましかなへんかんてー
ふるのせつてい}{H0.4.3.0.0}}
\label{3.3.3ローマ字かな変換テーブルの設定}

使用したいローマ字かな変換テーブルを記述します。

\HIDXAS{romkana-table}{ＲＯＭＫＡＮＡ−ＴＡＢＬＥ}{H0.4.3.0.0}
\begin{nquote}{3em}
\begin{verbatim}
(setq romkana-table  "romaji.cbp")
\end{verbatim}
\end{nquote}

romkana-table に指定するものはファイル名です。
指定されたファイル名をカレントディレクトリ、
ユーザのホームディレクトリ、\refCANNALIBDIR /dic の順にサーチし、 
最初に見つかったファイルがローマ字かな変換テーブルとして用いられます。

% ------------------------------ 3.3.4
\section{\HIDX{ローマ字かな変換テーブルのカスタマイズ}{ろーましかなへ
んかんてーふるのかすたまいす}{H0.4.4.0.0}}
\label{3.3.4ローマ字かな変換テーブルのカスタマイズ}

ローマ字かな変換に関して、たとえば「こんにちは」と
入力するのに、「konnichiha」と入力するのに慣れている場合と、「konnnichiha」
と入力する(「n」の回数が違います)のに慣れている場合があります。

このようにローマ字かな変換だけをとってみてもユーザの好みは
いろいろあります。

ローマ字かな変換に関してはカスタマイズファイルにより
好みのテーブルを指定することができます。
また、標準的に用意しているテーブルに好みのものがない場合は、
自分でローマ字かな変換テーブルを作成することもできます。

% ------------------------------ 3.3.4.1
\subsection{標準的に提供するローマ字かな変換テーブル}
\label{3.3.4.1標準的に提供するローマ字かな変換テーブル}

標準的に提供されるローマ字かな変換テーブルとしては
表 \ref{提供するローマ字辞書テーブル} のものがあります。 これらのテー
ブルは \refCANNALIBDIR /dic の下にファイルの形で存在します。 

\newpage

%{\tt
\begin{table}[hbtp]
\begin{center}
\caption{提供するローマ字辞書テーブル}\label{提供するローマ字辞書テーブル}
\begin{tabular}{|l|p{10cm}|}
\hline
\multicolumn{1}{|c|}{辞書名} &  \multicolumn{1}{|c|}{備　　　　　　　考} \\
\hline
default.cbp  & デフォルトのローマ字かな変換テーブル \\
\hline
 %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
 %jdaemon.cbp  & EWS-UX/V R6.×以前の日本語入力システムと互換のローマ字
 %かな変換テーブル \\ 
 %\hline
 %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
just.cbp     & 一太郎\footnotemark と同一のローマ字かな変換規則を持つロー
マ字かな変換テー ブル \\
\hline
matsu.cbp     & 松茸\footnotemark と同一のローマ字かな変換規則を持つロー
マ字かな変換テーブル \\ 
\hline
vje.cbp     & vje$-\beta$\footnotemark と同一のローマ字かな変換規則を持
つローマ字かな変換 テーブル \\ 
\hline
wx2+.cbp     & WXII+\footnotemark と同一のローマ字かな変換規則を持つロー
マ字かな変換テーブル \\
\hline
kana.cbp     & アルファベットキーボードで疑似的に
かな入力を行うためのテーブル。このテーブルを用いることにより、
日本語モードとアルファベットモードの切り替えだけで、
かな入力とアルファベット入力の切り替えも行えます。 \\
\hline
newjis.cbp   & アルファベットキーボードで疑似的に新JISキーボードのカナ配列をシミュレートするためのテーブル \\
\hline
kaisoku.cbp  & 快速ローマ字配列をシミュレートするためのテーブル \\
\hline
\end{tabular}
\end{center}
\end{table}
%}

\addtocounter{footnote}{-3}\footnotetext{一太郎はジャストシステム(株)
の商標です}
\addtocounter{footnote}{1}\footnotetext{松茸は(株)管理工学研究所の商標です}  
\addtocounter{footnote}{1}\footnotetext{VJE$-\beta$は(株)バックスの商
標です}
\addtocounter{footnote}{1}\footnotetext{WXII+はエー・アイ・ソフト(株) 
の商標です}  

%\vspace{5mm}

デフォルトではdefault.cbpが選ばれますが、そのほかのローマ字かな変換テーブルを
利用する場合はカスタマイズファイルに次のような行を加えます。

\begin{nquote}{3em}
\begin{verbatim}
;kana.cbpを利用する場合
(setq romkana-table "kana.cbp")
\end{verbatim}
\end{nquote}

指定した名前はファイル名とみなされ、次の順にサーチされます。

\begin{nquote}{3em}
\begin{namelist}{　　}
\item[(1) カレントディレクトリ] 　\\
指定されたファイルをカレントディレクトリでサーチします。
\item[(2) ホームディレクトリ]　 \\
指定されたファイルをホームディレクトリでサーチします。
\item[(3) 辞書ディレクトリ]　 \\
指定されたファイルを\refCANNALIBDIR /dicでサーチします。
\end{namelist}
\end{nquote}

いずれのディレクトリにもローマ字かな変換テーブルが存在しない場合は
ローマ字かな変換入力が行えませんのでご注意ください。

% ------------------------------ 3.3.4.2
\subsection{\HIDX{ローマ字かな変換テーブルの作成}
{ろーましかなへんかんてーふるのさくせい}{H0.4.4.2.0}方法}
\label{3.3.4.2自分自身のローマ字かな変換テーブルの作成の仕方}

システムで提供されているローマ字かな変換テーブルでは満足できない場合は、
ローマ字かな変換テーブルをカスタマイズすることができます。

カスタマイズする場合は、デフォルトのローマ字かな変換テーブルのソースファ
イルである \\ 
\refCANNALIBDIR /sample/src/default.ctd をコピーして書き換えるのが簡
単です。 
ローマ字かな変換テーブルは1行にローマ字とそれに対応する『かな』とが記
述されているテーブルです。表 \ref{ローマ字かな変換テーブルの内容} のよ
うな内容になっています。

\begin{table}[htbp]
\centering
\caption{ローマ字かな変換テーブルの内容}
\label{ローマ字かな変換テーブルの内容}
\begin{tabular}{|lll|}
\hline
a   & あ       &     \\
i   & い       &     \\
u   & う       &     \\
e   & え       &     \\
o   & お       &     \\
ka  & か       &     \\
ki  & き       &     \\
    & ・・・・ &     \\
n   & ん       &     \\
n'  & ん       &     \\
mn  & ん       &     \\
nn  & ん       &     \\
    & ・・・・ &     \\
tch & っ       & ch　　　\\
kk  & っ       & k     \\
ss  & っ       & s     \\
tt  & っ       & t     \\
hh  & っ       & h     \\
\hline
\end{tabular}
\end{table}

「同じ子音が重なった場合は促音を発生する」といった規則も
ローマ字かな変換テーブルに記述します。
たとえば、以下のように記述します。

\vspace{5mm}

{\tt
\begin{center}
\begin{tabular}{|p{6cm}|}
\hline
\multicolumn{1}{|c|}{ kk　　っ　　k　　　} \\
\hline
\end{tabular}
\end{center}
}

\vspace{5mm}

これは、kkと入力が来たときは「っ」を発生させ、k を
次の入力とつなげるために残しておくという意味です。

この規則を用いて、「まっち」と入力するときに「matchi」のように
入力するためのルールを以下のように記述することができます。

\vspace{5mm}

{\tt
\begin{center}
\begin{tabular}{|p{6cm}|}
\hline
\multicolumn{1}{|c|}{tch　　っ　　ch　　　} \\
\hline
\end{tabular}
\end{center}
}

\vspace{5mm}

特殊な文字を指定するときのためにバックスラッシュ($\backslash$)を
エスケープ文字として使用することができます。
特殊な文字としては、スペース文字、
シャープ(\#),バックスラッシュ($\backslash$)があります。

たとえば、バックスラッシュ($\backslash$)を入力したときに ￥ が入力される
ようにする場合は、以下のように記述します。

\vspace{5mm}

{\tt
\begin{center}
\begin{tabular}{|p{6cm}|}
\hline
\multicolumn{1}{|c|}{$\backslash \backslash $ ￥　　　} \\
\hline
\end{tabular}
\end{center}
}

\subsubsection{テーブルに記述されている規則の用いられ方}
\HIDXAS{変換規則}{へんかんきそく}{H0.4.4.2.1}

ローマ字かな変換テーブルを基にローマ字かな変換が行われますが、
ローマ字かな変換テーブルで記述された変換規則は、最長一致法の原則で使用されます。
たとえば、「べんりな」と入力するときは 図 \ref{最長一致法の原則} のようにテーブルが参照されます。

\begin{figure}[htbp]
\centering
\caption{最長一致法の原則}
\label{最長一致法の原則}
\begin{tabular}{|l|l|p{8cm}|}
\hline
\multicolumn{1}{|c|}{入力} & \multicolumn{1}{|c|}{表　示} & \multicolumn{1}{|c|}{備　　　　　　考}\\
\hline
ben   &  べn       & 「n」についてはもっと長い規則である「na」のようなものが存在するのでローマ字のままエコーされます。 \\
\hline
r     &  べんr     & 「nr」で始まる規則がないので「n」→「ん」の規則が適用されます \\
\hline
i    &  べんり    &  \\
\hline
n    &  べんりn    &  \\
\hline
a     &  べんりな  & 「na」で始まる規則が「na」→「な」だけであるのでこの規則が適用されます。 \\
\hline
\end{tabular}
\end{figure}



\subsubsection{ローマ字かな変換テーブルの\HIDX{コンパイル}{こんはいる}
{H0.4.4.2.2}}

ローマ字かな変換テーブルはシステムが読み易いバイナリ形式に
変換しなければなりません。
すなわち、上記のようなテキスト形式のファイルを
バイナリ形式にコンパイルする必要があります。

次のようにして、ローマ字かな変換テーブルをテキスト形式から
バイナリ形式にコンパイルしてください。

\begin{nquote}{3em}
  \%　mkromdic　ファイル名 \RETURN
\end{nquote}

mkromdic を行うと、$\ast$.cbp ファイルができます。

システムで提供されるローマ字かな変換テーブルのソースファイルが
\refCANNALIBDIR /sample/src の下に
$\ast$.ctd として存在しますので参照してください。

\begin{nquote}{1em}
\begin{namelist}{　}
\item[注意]バイナリ形式のローマ字かな変換テーブルは dpromdic コマンドにより
テキスト形式に戻すことが可能です。詳細は、{\dg\bf \ref{4かな漢字変
換ユーティリティ} \hpref{count=13,label=H0.6.0.0.0} かな漢字変換ユーティリティ} を参照してください。
\end{namelist}
\end{nquote}

% ------------------------------ 3.3.5
\section{\HIDX{キー操作のカスタマイズ}{きーそうさのかすたまいす}{H0.4.5.0.0}}
\label{3.3.5キー操作のカスタマイズ}

たとえば、日本語モードとアルファベットモードを切り替えるキーがデフォルト
では \XFER または \CTRL + \fbox{o} ですが、
利用者はこのキーを好みに応じて変更することができます。
カスタマイズファイルを用いて、かな漢字変換に用いられるキーの割り当てを
デフォルトとは異なるキーに割り当て直すことができます。

\subsection{キーの割り当ての有効範囲}

かな漢字変換では多くのモードの遷移があります。キーの割り当ては各モード
ごとに個別に変更することができます。また、すべてのモードのキーの割り当
てを一括して変更することもできます。

\subsection{変更できる機能}

キーの割り当ての変更はキー名に対して\HIDX{機能名}{きのうめい}{H0.4.5.2.0}を
記述することにより行います。
主な機能名としては 表\ref{主な機能名} のものがあります。\\
そのほかの機能名に関しては
{\dg 付録 \ref{Cカスタマイズに用いる機能名一覧表} 
\hpref{count=16,label=H0.C.0.0.0}カスタマイズに用いる機能名一覧表} を
参照してください。

%・　主な機能名

%{\tt
{\small
\begin{table}[hbtp]
\begin{center}
\caption{主な機能名}\label{主な機能名}
\begin{tabular}{|l|l|c|c|}
\hline
\multicolumn{1}{|c|}{名　　前} & \multicolumn{1}{|c|}{機　　　　　能} &\multicolumn{1}{|c|}{デフォルト} & \multicolumn{1}{|c|}{備　 考} \\
\hline
\HIDX{alpha-mode}{ＡＬＰＨＡ−ＭＯＤＥ}{H0.4.5.2.0.a} \hptar{label=H0.4.5.2.0.a}  
		& アルファベットモードに移行する& Xfer,C-o & \\
\hline
\HIDX{quoted-insert}{ＱＵＯＴＥＤ−ＩＮＳＥＲＴ}{H0.4.5.2.0.a} 
		& 次の一文字を無条件に入力する  & C-q & 　\\
\hline
\HIDX{kakutei}{ＫＡＫＵＴＥＩ}{H0.4.5.2.0.a} 
		& 確定する                      & Return, Nfer & 　\\
\hline
\HIDX{extend}{ＥＸＴＥＮＤ}{H0.4.5.2.0.a} 
		& 領域伸ばし                    & S-→, C-o & 　\\
\hline
\HIDX{shrink}{ＳＨＲＩＮＫ}{H0.4.5.2.0.a} 
		& 領域縮め                      & S-←, C-i & 　\\
\hline
\HIDX{touroku}{ＴＯＵＲＯＫＵ}{H0.4.5.2.0.a} 
		& 単語登録                      & Help & 　\\
\hline
\HIDX{forward}{ＦＯＲＷＡＲＤ}{H0.4.5.2.0.a} 
		& 右選択                        & →, C-f & 　\\
\hline
\HIDX{backward}{ＢＡＣＫＷＡＲＤ}{H0.4.5.2.0.a} 
		& 左選択                        & ←, C-b & 　\\
\hline
\HIDX{previous}{ＰＲＥＶＩＯＵＳ}{H0.4.5.2.0.a} 
		& 前選択                        & ↑, C-p & 　\\
\hline
\HIDX{next}{ＮＥＸＴ}{H0.4.5.2.0.a} 
		& 次選択                        & ↓, C-n & 　\\
\hline
\HIDX{beginning-of-line}{ＢＥＧＩＮＮＩＮＧ−ＯＦ−ＬＩＮＥ}{H0.4.5.2.0.a} 
		& 先頭選択                      & C-a & 　\\
\hline
\HIDX{end-of-line}{ＥＮＤ−ＯＦ−ＬＩＮＥ}{H0.4.5.2.0.a} 
		& 末尾選択                      & C-e & 　\\
\hline
\HIDX{delete-next}{ＤＥＬＥＴＥ−ＮＥＸＴ}{H0.4.5.2.0.a} 
		& 次一文字消去                  & C-d & 　\\
\hline
\HIDX{delete-previous}{ＤＥＬＥＴＥ−ＰＲＥＶＩＯＵＳ}{H0.4.5.2.0.a} 
		& 前一文字消去                  & Backspace & 　\\
\hline
\HIDX{kill-to-end-of-line}{ＫＩＬＬ−ＴＯ−ＥＮＤ−ＯＦ−ＬＩＮＥ}{H0.4.5.2.0.a} 
		& 行末まで消去                  & C-k & 　\\
\hline
\HIDX{bubun-kakutei}{ＢＵＢＵＮ−ＫＡＫＵＴＥＩ}{H0.4.5.2.0.a} 
		& カーソル前まで確定            & C-j & 　\\
\hline
\HIDX{henkan}{ＨＥＮＫＡＮ}{H0.4.5.2.0.a} 
		& 変換                          & Space, Xfer & 　\\
\hline
\HIDX{quit}{ＱＵＩＴ}{H0.4.5.2.0.a}
		& 取りやめ                      & C-g & 　\\
\hline
\HIDX{self-insert}{ＳＥＬＦ−ＩＮＳＥＲＴ}{H0.4.5.2.0.a} 
		& 文字挿入                      & a, b, c … & 　\\
\hline
\end{tabular}
\end{center}
\end{table}
}	%% small no tame
%}

\vspace{5mm}

\subsection{機能への\HIDX{キーの割り当て}{きーのわりあて}{H0.4.5.3.0}}
\label{4.5.2機能へのキーの割り当て}

ある機能に対してキーを割り当てるときは、global-set-key または set-key を
用いて、以下のように記述することにより割り当てます。
ある機能に対して複数のキーを割り当てる場合は、
{\dg\bf \ref{4.5.5複数処理でのキーの割り当て} \hpref{count=13,label=H0.4.5.4.0}複数処理でのキーの割り当て} を
参照してください。

\HIDXAS{global-set-key}{ＧＬＯＢＡＬ−ＳＥＴ−ＫＥＹ}{H0.4.5.3.0}
\begin{nquote}{3em}
\begin{verbatim}
(global-set-key  "キー"   '機能名)
\end{verbatim}
\end{nquote}

\HIDXAS{set-key}{ＳＥＴ−ＫＥＹ}{H0.4.5.3.0}
\begin{nquote}{3em}
\begin{verbatim}
(set-key  'モード名  "キー"  '機能名)
\end{verbatim}
\end{nquote}

global-set-key では、日本語入力時のすべてのモードに対して
キーの割り当てが行われます。
set-key では、特定のモードに対してのみ、キーの割り当てが行われます。

set-key を指定することにより、特定のモードでのキーの割り当てを
そのモードのときだけ単独で変更することができます。


\HIDX{キー}{きー}{H0.4.5.3.0.a1} \hptar{label=H0.4.5.3.0.a1}は \verb!"a"! や \verb!"b"! のように指定します。
コントロールキーを押しながら何らかのキーを押すというのは
キーの指定の前に \verb!"\C-"! を付けることで表現します。
ファンクションキーなどの\HIDX{特殊キー}{とくしゆきー}{H0.4.5.3.0.a2} \hptar{label=H0.4.5.3.0.a2}については表
\ref{特殊キー一覧}に示す名前で指定することができます。

キーの名前は、大文字・小文字を区別します。ご注意ください。

%\vspace{5mm}

%{\tt
{\small
\begin{table}[hbtp]
\begin{center}
\caption{特殊キーの種類}\label{特殊キー一覧}
\begin{tabular}{|l|l|}
\hline
\multicolumn{1}{|c|}{キ　　ー} & \multicolumn{1}{|c|}{名　　　前} \\
\hline
f・1(以下2,3…)   & \tt "$\backslash$F1",~"$\backslash$F2",~\ldots \\
 %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
 %透明(左から1,2,…)& \tt "$\backslash$Pf1",~"$\backslash$Pf2",~\ldots \\
 %%%%% %%%%% %%%%% %%%%% %%%%% %%%%%
ESC               & \tt "$\backslash$Escape" \\
TAB               & \tt "$\backslash$Tab" \\
NFER              & \tt "$\backslash$Nfer" \\
XFER              & \tt "$\backslash$Xfer" \\
BS                & \tt "$\backslash$Backspace" \\
INS               & \tt "$\backslash$Insert" \\
DEL               & \tt "$\backslash$Delete" \\
ROLLUP(PAGEDOWN)  & \tt "$\backslash$Rollup" \\
ROLLDOWN(PAGEUP)  & \tt "$\backslash$Rolldown" \\
↑                & \tt "$\backslash$Up" \\
←                & \tt "$\backslash$Left" \\
→                & \tt "$\backslash$Right" \\
↓                & \tt "$\backslash$Down" \\
HOME              & \tt "$\backslash$Home" \\
CLR               & \tt "$\backslash$Clear" \\
HELP              & \tt "$\backslash$Help" \\
ENTER             & \tt "$\backslash$Enter" \\
END               & \tt "$\backslash$End" \\
(SPACE)           & \tt "$\backslash$Space" \\
(RETURN)          & \tt "$\backslash$Return" \\
\hline
\end{tabular}
\end{center}
\end{table}
}	%% small no tame
%}

%\vspace{5mm}

また、X ウィンドウにおけるアプリケーションには
表\ref{Xウィンドウのみのキー一覧}の
記述を受けつけるものもあります
(TTYベースの日本語入力では、これらのキー記述は無視されます)。
\HIDXAS{X ウィンドウのキー}{Ｘういんとうのきー}{H0.4.5.3.0.a3}
\hptar{label=H0.4.5.3.0.a3}
%{\tt
{\small
\begin{table}[hbtp]
\begin{center}
\caption{Xウィンドウのみのキー一覧}\label{Xウィンドウのみのキー一覧}
\begin{tabular}{|l|l|}
\hline
\multicolumn{1}{|c|}{キ　ー} & \multicolumn{1}{|c|}{名　　前} \\
\hline
CTRL+NFER & \tt "$\backslash$C-Nfer" \\
CTRL+XFER & \tt "$\backslash$C-Xfer" \\
CTRL+↑   & \tt "$\backslash$C-Up" \\
CTRL+←   & \tt "$\backslash$C-Left" \\
CTRL+→   & \tt "$\backslash$C-Right" \\
CTRL+↓   & \tt "$\backslash$C-Down" \\
SHIFT+NFER& \tt "$\backslash$S-Nfer" \\
SHIFT+XFER& \tt "$\backslash$S-Xfer" \\
SHIFT+↑  & \tt "$\backslash$S-Up" \\
SHIFT+←  & \tt "$\backslash$S-Left" \\
SHIFT+→  & \tt "$\backslash$S-Right" \\
SHIFT+↓  & \tt "$\backslash$S-Down" \\
ひらがな  & \tt "$\backslash$Hiragana" \\
カタカナ  & \tt "$\backslash$Katakana" \\
半角/全角 & \tt "$\backslash$Hankakuzenkaku" \\
英数      & \tt "$\backslash$Eisu" \\
\hline
\end{tabular}
\end{center}
\end{table}
}	%% small no tame
%}

%\vspace{5mm}

表\ref{＜参考＞等価なキー一覧}のキーはほかのキーと等価な場合がありますの
で、どちらか一方のキーに機能を割り当てると、
そのキーと\HIDX{等価なキー}{とうかなきー}{H0.4.5.3.0.a4} \hptar{label=H0.4.5.3.0.a4}にも
機能を割り当てたことになります。

%\vspace{5mm}

%{\tt
\begin{table}[hbtp]
\begin{center}
\caption{＜参考＞等価なキー一覧}\label{＜参考＞等価なキー一覧}
\begin{tabular}{|ll|l|}
\hline
\multicolumn{2}{|c|}{キ　ー} & \multicolumn{1}{|c|}{等 価 な キ ー} \\
\hline
\tt CTRL+h & \tt (C-h) &  BS(Backspace) \\
\tt CTRL+i & \tt (C-i) &  TAB(Tab) \\
\tt CTRL+k & \tt (C-k) &  HOMECLR(Clear) \\
\tt CTRL+m & \tt (C-m) &  ENTER(Enter), RETURN(Return) \\
\tt CTRL+[ & \tt (C-[) &  ESC(Escape) \\
\tt CTRL+@ & \tt (C-@) &  CTRL+SPACE(C+Space) \\
\hline
\end{tabular}
\end{center}
\end{table}
%}

%\vspace{5mm}


\HIDX{モード名}{もーとめい}{H0.4.5.3.0.a5} \hptar{label=H0.4.5.3.0.a5}は
表\ref{キー割り当てのできるモード一覧}に示すものがあります。

%\vspace{5mm}

%{\tt
\begin{table}[hbtp]
\begin{center}
\caption{キー割り当てのできるモード一覧}\label{キー割り当てのできるモード一覧}
\begin{tabular}{|l|l|}
\hline
\multicolumn{1}{|c|}{名　　前} & \multicolumn{1}{|c|}{説　　　　　　　明} \\
\hline
\HIDX{alpha-mode}{ＡＬＰＨＡ−ＭＯＤＥ}{H0.4.5.3.0.b} \hptar{label=H0.4.5.3.0.b} 
		& アルファベットを入力している状態  \\ \hline
\HIDX{empty-mode}{ＥＭＰＴＹ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& 日本語入力モードでまだ文字を入力していない状態\\ \hline
\HIDX{yomi-mode}{ＹＯＭＩ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& 読みを入力している状態\\ \hline
\HIDX{mojishu-mode}{ＭＯＪＩＳＨＵ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& 文字種変換を行っている状態\\ \hline
\HIDX{tankouho-mode}{ＴＡＮＫＯＵＨＯ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& 変換キーを押して候補を表示している状態\\ \hline
\HIDX{ichiran-mode}{ＩＣＨＩＲＡＮ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& 候補一覧表示をしている状態\\ \hline
\HIDX{henkan-nyuuryoku-mode}{ＨＥＮＫＡＮ−ＮＹＵＵＲＹＯＫＵ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& empty-modeとyomi-modeの総称\\ \hline 
\HIDX{kigou-mode}{ＫＩＧＯＵ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& 記号一覧を入力している状態\\ \hline
\HIDX{yes-no-mode}{ＹＥＳ−ＮＯ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& YES/NOを問い合わせる質問をしている状態\\ \hline
\HIDX{on-off-mode}{ＯＮ−ＯＦＦ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& 辞書マウントアンマウントを指定している状態\\ \hline
\HIDX{shinshuku-mode}{ＳＨＩＮＳＨＵＫＵ−ＭＯＤＥ}{H0.4.5.3.0.b}
		& 文節を伸ばし縮めしている状態\\ \hline
\end{tabular}
\end{center}
\end{table}
%}

%\vspace{5mm}

モード名は、大文字・小文字を区別します。ご注意ください。

\subsection{複数処理でのキーの割り当て(\HIDX{マルチシーケンス}{まるち
しーけんす}{H0.4.5.4.0})}
\label{4.5.5複数処理でのキーの割り当て}

{\dg\bf \ref{4.5.2機能へのキーの割り当て} \hpref{count=11,label=H0.4.5.3.0}
機能へのキーの割り当て} では、
1 つの機能に 1 つのキー操作を割り当てる方法を説明しました。
しかし、キーの割り当てはキーと機能を 1 対 1 にしか対応させるだけではなく、
多対多対応させることもできます。
すなわち、複数の機能を複数のキー操作に割り当てることができます。
次のような記述をすることにより割り当てられます。

\begin{nquote}{3em}
\begin{verbatim}
(set-key  'モード名  "キー1 キー2 … キーn "
                            '(機能名1 機能名2 … 機能名n))
\end{verbatim}
\end{nquote}

\begin{nquote}{3em}
\begin{verbatim}
(global-set-key  "キー1 キー2 … キーn "
                            '(機能名1 機能名2 … 機能名n))
\end{verbatim}
\end{nquote}

\begin{nquote}{3em}
\begin{tabular}{ll}
(例)  & \\
 & ;C-xスペースと押されたとき、かな漢字変換し、\\
 & ;右端の文節が反転されるようにする。 \\
 & \verb!(set-key 'yomi-mode "\C-x\Space"! \\
 & \verb!　　　　　　　　　　　　　'(henken end-of-line)) !
\end{tabular}
\end{nquote}

キーシーケンス入力中にその状態から抜ける場合は quit(取りやめ)を
割り当てたキーを押してください。
デフォルトでは \CTRL + \fbox{g} です。

\subsection{\HIDX{キーの割り当て解除}{きーのわりあてかいしよ}{H0.4.5.5.0}}

ある機能に対するキーの割り当てを未定義状態に戻すときは、
global-unbind-key-function または unbind-key-function を
用いて、以下のように記述します。

\HIDXAS{global-unbind-key-function}{ＧＬＯＢＡＬ−ＵＮＢＩＮＤ−ＫＥＹ
−ＦＵＮＣＴＩＯＮ}{H0.4.5.5.0.a1}
\hptar{label=H0.4.5.5.0.a1}
\begin{nquote}{3em}
\begin{verbatim}
(global-unbind-key-function '機能名)
\end{verbatim}
\end{nquote}

\HIDXAS{unbind-key-function}{ＵＮＢＩＮＤ−ＫＥＹ−ＦＵＮＣＴＩＯＮ}
{H0.4.5.5.0.a2}
\hptar{label=H0.4.5.5.0.a2}
\begin{nquote}{3em}
\begin{verbatim}
(unbind-key-function 'モード名 '機能名)
\end{verbatim}
\end{nquote}

\vspace{5mm}

\begin{nquote}{3em}
\begin{tabular}{ll}
(例)  & \\
      & ;全体的に「取りやめ」機能を未定義にする \\
      & \verb!(global-unbind-key-function 'quit)! \\
      & ;読みモードで「変換」機能を未定義にする \\
      & \verb!(unbind-key-function 'yomi-mode 'henkan)!
\end{tabular}
\end{nquote}

% ------------------------------ 3.3.6
\section{そのほかのカスタマイズ}
\label{3.3.6その他のカスタマイズ}

ここで、カスタマイズファイル(.canna)の \HIDX{シンタックス規則}
{しんたっくすきそく}{H0.4.6.0.0}や、
カスタマイズファイルで用いられるデータについて説明します。

% ------------------------------ 3.3.6.1
\subsection{\HIDX{シンタックスの基本}{しんたつくすのきほん}{H0.4.6.1.0}}
\label{3.3.6.1シンタックスの基本}

.canna のシンタックスは Lisp と同じものです。
すなわち、「 (」と「) 」で囲まれた部分で 1 つのことがらを表現しています。

通常は、「 (」と「) 」で囲まれたもののうち、左端に
記述されているものが関数となっています。

\begin{CODEBOX}
(例)  \\
　　(set-mode-display 'alpha-mode "--") \\
　　set-mode-display は関数です。 \\
\end{CODEBOX}

それ以外のもので「 (」と「) 」の間に入っているものは関数の引数です。

\begin{CODEBOX}
(例)  \\
　　(set-mode-display 'alpha-mode "--") \\
　　'alpha-mode, "-" は引数です。 \\
\end{CODEBOX}

引数の部分にさらに「 (」と「) 」で囲まれた式を書くことも可能です。

\begin{CODEBOX}
(例)  \\
　　 (set-mode-display 'alpha-mode \\
　　　　　　　　　　　　(if use-default "  " "--")) \\
use-defaultという変数の値の真理値によってalpha-modeのモードのモード表示文字列を切り替えています。 \\
\end{CODEBOX}

引数は一度「\HIDX{評価}{ひようか}{H0.4.6.1.0.a1} \hptar{label=H0.4.6.1.0.a1}」
(\HIDX{evaluate}{ＥＶＡＬＵＡＴＥ}{H0.4.6.1.0.a2} \hptar{label=H0.4.6.1.0.a2})されてから
関数に渡されますが、いくつかの例外もあります。
たとえば、setq, if, defmode などの関数(正確には関数とは呼ばない Lisp 処理系
が多い)では、すべての引数が「評価」されるわけではありません。

ここで「評価」とは一度その式が実行されてその式の値を求めることを指します。

% ------------------------------ 3.3.6.2
\subsection{さまざまなデータ}
\label{3.3.6.2さまざまなデータ}

.cannaでは表\ref{.cannaにおける評価型}に示す型のデータが登場します。
\HIDXAS{.cannaにおける評価型}{．CANNAにおけるひょうかかた}{H0.4.6.2.0}
%\vspace{5mm}

%{\tt
\begin{table}[hbtp]
\begin{center}
\caption{.cannaにおける\HIDX{評価型}{ひようかかた}{H0.4.6.2.0}}
\label{.cannaにおける評価型}
\begin{tabular}{|l|l|}
\hline
\multicolumn{1}{|c|}{データ型} & \multicolumn{1}{|c|}{例} \\
\hline
真理値        & t, nil \\
整　数          & 1, 2, 3, …… \\
文　字          & ?a, ?$\backslash$C-a, ?$\backslash$Xfer, …… \\
文字列        & "romaji.cbp", "fuzokugo", "[ あ ]", …… \\
シンボル(記号) & forward, next, alpha-mode, …… \\
リスト        & (henkan end-of-line), (katakana kakutei), … \\
\hline
\end{tabular}
\end{center}
\end{table}
%}

%\vspace{5mm}

特に、真理値を \HIDX{t}{Ｔ}{H0.4.6.2.0}(真)
と\HIDX{nil}{ＮＩＬ}{H0.4.6.2.0}(偽)で表現することにご注意ください。

% ------------------------------ 3.3.6.3
\subsection{\HIDX{変数}{へんすう}{H0.4.6.3.0}}
\label{3.3.6.3変数}

変数はシンボルで表現されます。

変数に値を代入する処理は\HIDX{setq}{ＳＥＴＱ}{H0.4.6.3.0}で行われます。

\vspace{5mm}

\begin{CODEBOX}
(例) \\
　　(setq bunsetsu-kugiri  t) \\
　　変数bunsetsu-kugiriに真を代入します。 \\
　　(setq n-henkan-for-ichiran  5) \\
　　変数n-henkan-for-ichiranに5を代入します。 \\
\end{CODEBOX}

その変数を参照するには変数自身を関数の引数に記述します。

\begin{CODEBOX}
(例) \\
　　(if bunsetsu-kugiri (setq select-direct nil)) \\
　　「文節区切り」が真になっていればselect-directを偽にします。 \\
\end{CODEBOX}

シンボルは関数の引数に与えられたときは変数として「評価」され、
変数としての内容が得られます。シンボル自身を値として与えたい場合は、
「'」(シングルクォート)をシンボルの前につけます。

\vspace{5mm}

{\tt
\begin{center}
\begin{tabular}{|p{1cm}p{13cm}|}
\hline
(例) & \\
 & (global-set-key "$\backslash$Space" 'self-insert) \\
 & スペースキーは変換ではなく入力として取り扱います。この場合 \\
 & self-insertというシンボル自身をglobal-set-keyという関数に与えたかっ
たので、 
self-insertに対して「'」を付けています。 \\
\hline
\end{tabular}
\end{center}
}

\vspace{5mm}

シンボル以外のデータの「評価」後の値を表\ref{シンボル以外のデータ型}に示します。

%\vspace{5mm}

{\tt
\begin{table}[hbtp]
\begin{center}
\caption{シンボル以外のデータ型}\label{シンボル以外のデータ型}
\begin{tabular}{|l|l|}
\hline
\multicolumn{1}{|c|}{データ型} & \multicolumn{1}{|c|}{評価後の値} \\
\hline
真理値        & その値自身 \\
整数          & 整数データ自身 \\
文字          & 文字データ自身 \\
文字列        & 文字列データ自身 \\
シンボル(記号)& 変数の中身 \\
リスト        & 関数を実行したリターン値 \\
\hline
\end{tabular}
\end{center}
\end{table}
}

%\vspace{5mm}

表\ref{シンボル以外のデータ型}からわかるように、
シンボルとリストに関してはそれらのデータ自身を引数にしたい場合は
「'」が必要になります。
しかし、それ以外のデータの場合は「'」をつけなくとも構いません。

どのような名前のシンボルでも変数として用いることができます。代入処理を行わ
ないで変数の参照を行うと「Unbound Variable」エラーになります。

{\dg\bf \ref{3.3.6.4カスタマイズのキーワード} 
(\ref{カスタマイズ・その他のキーワード}) \hpref{count=10,label=H0.4.6.4.0.100}そのほかのキーワード} に記述されている変数は、
かな漢字変換のカスタマイズキーワードとしての意味を持ちます。
そのような変数に値を代入する操作は、かな漢字変換処理に影響を与えます。

% ------------------------------ 3.3.6.4
\subsection{カスタマイズのキーワード}
\label{3.3.6.4カスタマイズのキーワード}

カスタマイズのための\HIDX{キーワード}{きーわーと}{H0.4.6.4.0}は
すべてシンボルとしての表記を持っていますが、
その実態は関数であったり変数であったりします。以下に概要を示します。

\begin{enumerate}
% ------------------------------ (1)
\hptar{label=H0.4.6.4.0.1}
\item {\dg\bf \HIDX{辞書の利用}{ししよのりよう}
{H0.4.6.4.0.1} $-$ \HIDX{use-dictionary}{ＵＳＥ−ＤＩＣＴＩＯＮＡＲＹ}
{H0.4.6.4.0.1}}

\begin{CODEBOX}
(use-dictionary "iroha" "fuzokugo") \\
\end{CODEBOX}

使用する辞書を指定します。

% misao … 文法辞書追加 %
部首辞書、文法辞書、単語登録用辞書、カタカナ語自動登録用辞書を指定する
には辞書の 
名前の直前に \HIDX{:bushu}{：ＢＵＳＨＵ}{H0.4.6.4.0.1} や 
\HIDX{:grammar}{：ＧＲＡＭＭＡＲ}{H0.4.6.4.0.1}, 
\HIDX{:user}{：ＵＳＥＲ}{H0.4.6.4.0.1}, \HIDX{:katakana}{：ＫＡＴＡＫＡＮＡ}{H0.4.6.4.0.1} を
先行させます。

\vspace{5mm}

\begin{CODEBOX}
(use-dictionary "iroha" "fuzokugo" :bushu "bushu" \\
　　　　　　　　:katakana "mykatakana"　:grammar "mygram" ) \\
　　　　　　　　　　　　　　　　　　　　:user "mydic" ) \\
\end{CODEBOX}

\begin{nquote}{1em}
\begin{namelist}{　}
\item[注意] :bushu, :grammar, :user, :katakana はシンボルなので
本来は ':bushu, ':user のように「'」(シングルクォート)をつけなければ
ならないのですが、
「:」(コロン)から始まるシンボル(キーワードシンボルといいます)に限っては
不要です。
\end{namelist}
\end{nquote}

「 (」と「) 」の間は適当に改行しても構いません。

\vspace{5mm}
\begin{center}\tt
\begin{tabular}{|p{20em}|} \hline
(use-dictionary \\
"iroha" "fuzokugo" :bushu "bushu" :katakana "mykatakana" :grammar "mygram" :user "mydic") \\ \hline
\end{tabular}
\end{center}
\vspace{5mm}


use-dictionary に関する説明は {\bf\dg \ref{3.3.2使用する辞書の指定} 
\hpref{count=9,label=H0.4.2.0.0}使用する辞書の指定} にもあります
ので参照してください。

% ------------------------------ (2)
\hptar{label=H0.4.6.4.0.2}
\item {\dg\bf \HIDX{モード表示の変更}{もーとひょうしのへんこう}
{H0.4.6.4.0.2} $-$ \HIDX{set-mode-display}{ＳＥＴ−ＭＯＤＥ−ＤＩＳＰＬＡＹ}
{H0.4.6.4.0.2}}
\label{カスタマイズ・モード表示の変更}

\begin{CODEBOX}
(set-mode-display 'henkan-nyuuryoku-mode "[変換入力]") \\
\end{CODEBOX}

入力モードの表示文字列を変更します。
結果は次のようになります。

\begin{SCREEN}
\verb+% + \CURSOR \\
{[変換入力]} \\
\end{SCREEN}

モード表示文字列を変更しないで、前のモードのモード表示文字列と同じ表示に
したい場合は、文字列の代わりに nil を記述します。

指定できるモードを表\ref{モード一覧}に示します。
\HIDXAS{モード名}{もーとめい}{H0.4.6.4.0.2.a}
\hptar{label=H0.4.6.4.0.2.a} 

アルファベット入力モード(alpha-mode)・変換入力モード(henkan-nyuuryoku-mode)で
モード表示文字列を nil に設定した場合、アプリケーションによっては、
モード表示文字列が表示されなくなることがあります。
アルファベット入力モード、変換入力モードでは nil の記述は
避けた方が良いでしょう。

あまり長い文字列を指定すると、アプリケーションによっては
文字列の後方が切れて表示されたり、不正動作したりすることがあります。

%%%%%
\newpage
%%%%%
\HIDXAS{モード一覧}{もーといちらん}{H0.4.6.4.0.2.b}

{\tt \small
\begin{table}[hbtp]
\begin{center}
\caption{モード一覧}\label{モード一覧}
\begin{tabular}{|l|c|l|}
\hline
\multicolumn{1}{|c|}{指　　　　定} & \multicolumn{1}{|c|}{デフォルト} & \multicolumn{1}{|c|}{説　　　　　　　明} \\
\hline
\HIDX{alpha-mode}{ＡＬＰＨＡ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 &          &  アルファベット入力モード \\
\hline
\HIDX{henkan-nyuuryoku-mode}{ＨＥＮＫＡＮ−ＮＹＵＵＲＹＯＫＵ−ＭＯＤＥ}{H0.4.6.4.0.2.b} 
		 & [ あ ]   &  変換入力モード \\
\hline
\HIDX{kigou-mode}{ＫＩＧＯＵ−ＭＯＤＥ}{H0.4.6.4.0.2.b} \hptar{label=H0.4.6.4.0.2.b} 
		 & [記号]   &  記号一覧表示状態 \\
\hline
\HIDX{yomi-mode}{ＹＵＭＩ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & nil      &  読みを入力している状態 \\
\hline
\HIDX{mojishu-mode}{ＭＯＪＩＳＨＵ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [字種]   &  文字種変換状態 \\
\hline
\HIDX{tankouho-mode}{ＴＡＮＫＯＵＨＯ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [漢字]   &  単候補表示状態 \\
\hline
\HIDX{ichiran-mode}{ＩＣＨＩＲＡＮ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [一覧]   &  候補一覧表示状態 \\
\hline
\HIDX{yes-no-mode}{ＹＥＳ−ＮＯ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [質問]   &  利用者に質問をしている状態 \\
\hline
\HIDX{on-off-mode}{ＯＮ−ＯＦＦ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & nil      &  辞書マウントアンマウント状態など \\
\hline
\HIDX{shinshuku-mode}{ＳＨＩＮＳＨＵＫＵ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [文節]   &  文節伸縮モード \\
\hline
\HIDX{chikuji-yomi-mode}{ＣＨＩＫＵＪＩ−ＹＯＭＩ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [逐次]   &  逐次自動入力時の読み部分 \\
\hline
\HIDX{chikuji-bunsetsu-mode}{ＣＨＩＫＵＪＩ−ＢＵＮＳＥＴＳＵ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [逐次]   &  逐次自動入力時の文節部分 \\
\hline
\HIDX{zen-hira-henkan-mode}{ＺＥＮ−ＨＩＲＡ−ＨＥＮＫＡＮ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [全あ]   &  全角ひらがなモード \\
\hline
\HIDX{han-hira-henkan-mode}{ＨＡＮ−ＨＩＲＡ−ＨＥＮＫＡＮ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [半あ]   &  半角ひらがなモード \\
\hline
\HIDX{zen-kata-henkan-mode}{ＺＥＮ−ＫＡＴＡ−ＨＥＮＫＡＮ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [全ア]   &  全角カタカナモード \\
\hline
\HIDX{han-kata-henkan-mode}{ＨＡＮ−ＫＡＴＡ−ＨＥＮＫＡＮ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [半ア]   &  半角カタカナモード \\
\hline
\HIDX{zen-alpha-henkan-mode}{ＺＥＮ−ＡＬＰＨＡ−ＨＥＮＫＡＮ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [全英]   &  全角英数モード \\
\hline
\HIDX{han-alpha-henkan-mode}{ＨＡＮ−ＡＬＰＨＡ−ＫＥＮＫＡＮ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [半英]   &  半角英数モード \\
\hline
\HIDX{zen-hira-kakutei-mode}{ＺＥＮ−ＨＩＲＡ−ＫＡＫＵＴＥＩ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & $<$全あ$>$   &  全角ひらがな確定モード \\
\hline
\HIDX{han-hira-kakutei-mode}{ＨＡＮ−ＨＩＲＡ−ＫＡＫＵＴＥＩ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & $<$半あ$>$   &  半角ひらがな確定モード \\
\hline
\HIDX{zen-kata-kakutei-mode}{ＺＥＮ−ＫＡＴＡ−ＫＡＫＵＴＥＩ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & $<$全ア$>$   &  全角カタカナ確定モード \\
\hline
\HIDX{han-kata-kakutei-mode}{ＨＡＮ−ＫＡＴＡ−ＫＡＫＵＴＥＩ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & $<$半ア$>$   &  半角カタカナ確定モード \\
\hline
\HIDX{zen-alpha-kakutei-mode}{ＺＥＮ−ＡＬＰＨＡ−ＫＡＫＵＴＥＩ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & $<$全英$>$   &  全角英数確定モード \\
\hline
\HIDX{han-alpha-kakutei-mode}{ＨＡＮ−ＡＬＰＨＡ−ＫＡＫＵＴＥＩ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & $<$半英$>$   &  半角英数確定モード \\
\hline
\HIDX{hex-mode}{ＨＥＸ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [16進]   &  コード入力状態 \\
\hline
\HIDX{bushu-mode}{ＢＵＳＨＵ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [部首]   &  部首入力モード \\
\hline
\HIDX{extend-mode}{ＥＸＴＥＮＤ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [拡張]   &  ユーティリティモード \\
\hline
\HIDX{russian-mode}{ＲＵＳＳＩＡＮ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [~ロ~]   &  ロシア文字一覧状態 \\
\hline
\HIDX{greek-mode}{ＧＲＥＥＫ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [~ギ~]   &  ギリシャ文字一覧状態 \\
\hline
\HIDX{line-mode}{ＬＩＮＥ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [罫線]   &  罫線一覧状態 \\
\hline
\HIDX{changing-server-mode}{ＣＨＡＮＧＩＮＧ−ＳＥＲＶＥＲ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [変更]   &  サーバ変更状態 \\
\hline
\HIDX{henkan-method-mode}{ＨＥＮＫＡＮ−ＭＥＴＨＯＤ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [変換]   &  変換方法変更状態 \\
\hline
\HIDX{delete-dic-mode}{ＤＥＬＥＴＥ−ＤＩＣ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [削除]   &  単語削除状態 \\
\hline
\HIDX{touroku-mode}{ＴＯＵＲＯＫＵ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [登録]   &  単語登録状態 \\
\hline
\HIDX{touroku-hinshi-mode}{ＴＯＵＲＯＫＵ−ＨＩＮＳＨＩ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [品詞]   &  品詞選択状態 \\
\hline
\HIDX{touroku-dic-mode}{ＴＯＵＲＯＫＵ−ＤＩＣ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [辞書]   &  辞書選択状態 \\
\hline
\HIDX{quoted-insert-mode}{ＱＵＯＴＥＤ−ＩＮＳＥＲＴ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [~ｑ~]   &  引用入力状態 \\
\hline
\HIDX{mount-dic-mode}{ＭＯＵＮＴ−ＤＩＣ−ＭＯＤＥ}{H0.4.6.4.0.2.b}
		 & [辞書]   &  辞書マウント／アンマウント選択状態 \\
\hline
\end{tabular}
\end{center}
\end{table}
}

%\vspace{5mm}

%\newpage
% ------------------------------ (3)
\hptar{label=H0.4.6.4.0.3}
\item {\dg\bf \HIDX{キーのバインド}{きーのはいんと}
{H0.4.6.4.0.3} $-$ \HIDX{set-key}{ＳＥＴ−ＫＥＹ}{H0.4.6.4.0.3},
\HIDX{global-set-key}{ＧＬＯＢＡＬ−ＳＥＴ−ＫＥＹ}{H0.4.6.4.0.3}}
\label{カスタマイズ・キーのバインド}

%\vspace{5mm}

\begin{CODEBOX}
(set-key  'モード名  "キー列"  '機能列) \\
(global-set-key  "キー列"  '機能列) \\
\end{CODEBOX}

set-key では「モード名」で指定されたモードに対してのみキーバインドします。
global-set-key はすべてのモードに対して同様にキーをバインドします。

キー列には 1 文字以上の文字を記述します。キーは {\tt "a", "B"} などと書
けるほか、コントロールキーは {\tt "$\backslash$C-a"} のように {\tt
$\backslash$C-} を先行させて記述することができます。C-x を押してから C-a を
押した場合に対してキーを割り当てるというように C-x, C-a というシーケン
スを表現するときは {\tt "$\backslash$C-x$\backslash$C-a"} と記述します。
C-\textbackslash を表現するときは \texttt{"\textbackslash
  C-\textbackslash"} と記述します。

Xfer など特殊なキーに関しては以下のように記述します。
\HIDXAS{特殊キー}{とくしゆきー}{H0.4.6.4.0.3}

\vspace{5mm}

{\tt \small
\begin{center}
\begin{tabular}{|l|}
\hline
\verb+ "\Space"    "\Escape"   "\Tab"      "\Nfer"     "\Xfer"     "\Backspace" + \\
\verb+ "\Delete"   "\Insert"   "\Rollup"   "\Rolldown" "\Up"       "\Left" + \\
\verb+ "\Right"    "\Down"     "\Home"     "\Clear"    "\Help"     "\Enter" + \\
\verb+ "\Return"   "\End"      "\F1"       "\F2"       "\F3"       "\F4" + \\
\verb+ "\F5"       "\F6"       "\F7"       "\F8"       "\F9"       "\F10" + \\
\verb+ "\Pf1"      "\Pf2"      "\Pf3"      "\Pf4"      "\Pf5"      "\Pf6" + \\
\verb+ "\Pf7"      "\Pf8"      "\Pf9"      "\Pf10"     "\S-Nfer"   "\S-Xfer" + \\
\verb+ "\S-Up"     "\S-Down"   "\S-Left"   "\S-Right"  "\C-Nfer"   "\C-Xfer" + \\
\verb+ "\C-Up"     "\C-Down"   "\C-Left"   "\C-Right"  "\Hiragana" "\Katakana" + \\
\verb+ "\Eisu"     "\Hankakuzenkaku" + \\
\hline
\end{tabular}
\end{center}
}

\vspace{5mm}

機能列には、単一の機能を記述するか複数の機能を「 (」と「) 」で囲んで指
定します。複数の機能を指定した場合は、指定した機能が指定した順に実行されます。
指定できる機能名の一覧は
{\dg\bf 付録\ref{Cカスタマイズに用いる機能名一覧表} \hpref{count=16,label=H0.C.0.0.0}カスタマイズに用いる機能名一覧表} を参照してください。

set-key, global-set-key については、{\dg\bf\ref{3.3.5キー操作のカスタマ
イズ} \hpref{count=11,label=H0.4.5.0.0}キー操作のカスタマイズ} にも
記述がありますので参照してください。

% ------------------------------ (4)
\hptar{label=H0.4.6.4.0.4}
\item {\bf\dg \HIDX{キーと機能のアンバインド}{きーときのうのあんはいんと}
{H0.4.6.4.0.4} $-$ \HIDX{unbind-key-function}
{ＵＮＢＩＮＤ−ＫＥＹ−ＦＵＮＣＴＩＯＮ}{H0.4.6.4.0.4}, 
\HIDX{global-unbind-key-function}
{ＧＬＯＢＡＬ−ＵＮＢＩＮＤ−ＫＥＹ−ＦＵＮＣＴＩＯＮ}{H0.4.6.4.0.4}}

%\vspace{5mm}

\begin{CODEBOX}
(unbind-key-function 'モード名 '機能名) \\
(global-unbind-key-function '機能名) \\
\end{CODEBOX}

unbind-key-function では
「モード名」で指定されたモードに対してのみキーをアンバインドします。
global-unbind-key-function ではすべてのモードに対してキーをアンバインドします。

機能名には機能リストを記述することはできません。

% ------------------------------ (5)
\hptar{label=H0.4.6.4.0.5}
\item {\dg\bf \HIDX{モード定義}{もーとていき}{H0.4.6.4.0.5} $-$ 
\HIDX{defmode}{ＤＥＦＭＯＤＥ}{H0.4.6.4.0.5}}
\label{カスタマイズ・モード定義}

%\vspace{5mm}

\begin{CODEBOX}
(defmode モードシンボル "モード表示" "ローマ字かな変換テーブル" \\
　　　　　　　　　　　　'(機能リスト) 記号利用フラグ)\\
\end{CODEBOX}

新しいモードを定義します。

新しいモードでは、キーバインド用のそのモード独自のキーマップテーブルと独
自のローマ字かな変換テーブルと独自のモード表示文字列などを備えています。

モードシンボルには、そのモードを参照するときのためのシンボルを指定します。
以下そのモードを参照するときにはこのモードシンボルで参照されます。モード
シンボルは評価されず用いられます。したがって「'」をつける必要はありま
せん。モードシンボルは必ず指定してください。

このシンボルは次のように利用できます。

\begin{enumerate}
% ------------------------------ (a)
\item 「そのモードに移行する」という機能を表す機能名

\begin{CODEBOX}
(例) \\
　　(set-key 'henkan-nyuuryoku-mode "\verb!\!C-t" \\
　　　　　　　　　　　　　　　　　'定義されたシンボル) \\
\end{CODEBOX}

% ------------------------------- (b)
\item そのモードでのみキーを割り当てたり、そのモードに対応するモード文字列を設定したりするときのモード名

\end{enumerate}

\begin{CODEBOX}
(例) \\
　　(set-mode-display '定義されたシンボル \\
　　　　　　　　　　　　　　　　　"[新モード]") \\
　　(set-key '定義されたシンボル \\
　　　　　　"\verb!\!C-t" 'henkan-nyuuryoku-mode) \\
\end{CODEBOX}

モードシンボル以外の引数は省略可能です。
省略した場合は nil が指定されたのと同じ処理が行われます。

機能リストには、katakana, hiragana, romaji, kakutei, zenkaku, hankaku などが
指定できます。これらはローマ字かな変換に伴って実行される機能を表しています。

最後の引数「記号利用フラグ」には、
defsymbolによる設定を defmode で作成したモードで使用するかどうかを指定します
(defsymbol については、
{\dg\bf (\ref{カスタマイズ・記号定義}) \hpref{count=4,label=H0.4.6.4.0.6}記号定義} を参照してください)。

\begin{CODEBOX}
(例) \\
　　;カタカナ入力モードを定義します。 \\
　　(defmode katakana-mode "[カタ]" romkana-table \\
　　　　　　　　　　　　　　　'(katakana) t) \\
　　;C-kでトグルするようにします。 \\
　　(set-key 'henkan-nyuuryoku-mode "\verb!\!C-k" \\
　　　　　　　　　　　　　　　'katakana-mode) \\
　　(set-key 'katakana-mode "\verb!\!C-k" \\
　　　　　　　　　　　　　　　'henkan-nyuuryoku-mode) \\
　　;カナ入力モード(疑似的な)を定義します。 \\
　　(defmode kana-input-mode "[カナ]" "kana.cbp") \\
　　;C-rでトグルするようにします。 \\
　　(set-key 'henkan-nyuuryoku-mode "\verb!\!C-r" \\
　　　　　　　　　　　　　　　'kana-input-mode) \\
　　(set-key 'kana-input-mode "\verb!\!C-r" \\
　　　　　　　　　　　　　　　'henkan-nyuuryoku-mode) \\
\end{CODEBOX}

% ------------------------------ (6)
\hptar{label=H0.4.6.4.0.6}
\item {\dg\bf \HIDX{記号定義}{きこうていき}{H0.4.6.4.0.6} $-$ 
\HIDX{defsymbol}{ＤＥＦＳＹＭＢＯＬ}{H0.4.6.4.0.6}}
\label{カスタマイズ・記号定義}

\begin{CODEBOX}
(defsymbol ?[ "「" "『" ) \\
\end{CODEBOX}

defsymbol はローマ字かな変換を補佐する規則を記述します。
ローマ字かな変換規則においては入力のキーと変換される
「かな」との規則が 1 対 1 でしか対応できませんでしたが、
defsymbol で定義される規則では 1 つのキーに対して
いくつもの候補を定義することができます。

上の例は {\tt"［ "} に対して {\tt"「 "} か {\tt"『 "} に変換せよ
というルールを記述した例です。

このようにすることにより、通常は {\tt"［ "} に対して {\tt"「 "} が
入力されますが、{\tt"［ "} だけを入力している状態で
変換キーを打つことにより {\tt"［ "} を {\tt"『 "} に
変換するように切り替えることができます。
ひとたび切り替えられると、
次からは {\tt"『 "} が恒常的に入力されるようになります。

defsymbol は複数列記述をすることにより、切り替えをリンクすることができます。

\begin{CODEBOX}
(例) \\
\verb!　　(defsymbol ?[ "「" "『 "! \\
\verb!　　　　　　　 　?] "」" "』 " )! \\
\end{CODEBOX}

このように定義することにより {\tt"［"} が {\tt"『"} に切り替わると、自動的に 
{\tt"］"} も {\tt" 』"} に切り替わります。

defsymbol では、入力キーに対して他のキーが入力されたように振舞わせるこ
ともできます。

\begin{CODEBOX}
(例) F1 を押したら全角スペースを入力する。その時入力キーはあたかも
         スペースキーであったかのようにする。\\
\verb!         (defsymbol ?\F1 ?\Space "　")! \\
\end{CODEBOX}

% ------------------------------ (7)
\hptar{label=H0.4.6.4.0.7}
\item {\dg\bf \HIDX{メニューの定義}{めにゆーのていき}{H0.4.6.4.0.7} $-$ 
\HIDX{defmenu}{ＤＥＦＭＥＮＵ}{H0.4.6.4.0.7}}

\begin{CODEBOX}
(defmenu メニュー名 \\
　　("表示文字列1" 機能シンボル1) \\
　　("表示文字列2" 機能シンボル2) \\
　　　　　：\\
) \\
\end{CODEBOX}

新しいメニューを定義します。

メニュー名に指定した名前は、そのメニューを呼び出すときの機能名として使
えるようになるとともに、set-mode-display でモード表示文字列を変更する
ときのモード名としても使えるようになります。set-mode-display については、
{\dg\bf (\ref{カスタマイズ・モード表示の変更}) 
\hpref{count=8,label=H0.4.6.4.0.2}モード表示の変更} を参照してください。

表示文字列には、そのメニューの一覧表示で表示される候補名を指定します。

機能シンボルには、表\ref{メニュー}に示す機能名、または defselection で定義した
機能シンボルを指定します。defselection については、
{\dg\bf (\ref{カスタマイズ・文字一覧の作成}) 
\hpref{count=7,label=H0.4.6.4.0.8}文字一覧の作成} を参照してください。
また、機能シンボルに、別の defmenu で定義されたメニュー名を指定することにより
メニューツリーを構成することもできます。


\begin{table}[hbtp]
\begin{center}

\caption{\dg\bf メニューに指定できる機能名一覧}\label{メニュー}
\begin{tabular}{|l|l|}
\hline
\multicolumn{1}{|c|}{機  能  名} & \multicolumn{1}{|c|}{機　　　　　　能} \\
\hline
\HIDX{kigou-mode}{ＫＩＧＯＵ−ＭＯＤＥ}{H0.4.6.4.0.7.a} \hptar{label=H0.4.6.4.0.7.a} 
		 & 記号全般の一覧モードになる\\ 
\hline
\HIDX{russian-mode}{ＲＵＳＳＩＡＮ−ＭＯＤＥ}{H0.4.6.4.0.7.a}
		 & ロシア文字一覧モードになる\\
\hline
\HIDX{greek-mode}{ＧＲＥＥＫ−ＭＯＤＥ}{H0.4.6.4.0.7.a}
		 & ギリシャ文字一覧モードになる\\
\hline
\HIDX{line-mode}{ＬＩＮＥ−ＭＯＤＥ}{H0.4.6.4.0.7.a}
		 & 罫線一覧モードになる\\
\hline
\HIDX{hex-mode}{ＨＥＸ−ＭＯＤＥ}{H0.4.6.4.0.7.a}
		 & 16 進コード入力モードになる\\
\hline
\HIDX{bushu-mode}{ＢＵＳＨＵ−ＭＯＤＥ}{H0.4.6.4.0.7.a}
		 & 部首入力モードになる\\
\hline
\HIDX{touroku-mode}{ＴＯＵＲＯＫＵ−ＭＯＤＥ}{H0.4.6.4.0.7.a}
		 & 単語登録モードになる\\
\hline
\HIDX{delete-dic-mode}{ＤＥＬＥＴＥ−ＤＩＣ−ＭＯＤＥ}{H0.4.6.4.0.7.a}
		 & 単語削除モードになる\\
\hline
\HIDX{jisho-ichiran}{ＪＩＳＨＯ−ＩＣＨＩＲＡＮ}{H0.4.6.4.0.7.a}
		 & 辞書マウント／アンマウントを行う\\
\hline
\HIDX{chikuji-mode}{ＣＨＩＫＵＪＩ−ＭＯＤＥ}{H0.4.6.4.0.7.a}
		 & 逐次自動変換に切り替える\\
\hline
\HIDX{renbun-mode}{ＲＥＮＢＵＮ−ＭＯＤＥ}{H0.4.6.4.0.7.a}
		 & 連文節変換に切り替える\\
\hline
\HIDX{disconnect-server}{ＤＩＳＣＯＮＮＥＣＴ−ＳＥＲＶＥＲ}{H0.4.6.4.0.7.a}
		 & サーバとの接続を切る\\
\hline
\HIDX{switch-server}{ＳＷＩＴＣＨ−ＳＥＲＶＥＲ}{H0.4.6.4.0.7.a}
		 & サーバの切り替えを行う\\
\hline
\HIDX{show-server-name}{ＳＨＯＷ−ＳＥＲＶＥＲ−ＮＡＭＥ}{H0.4.6.4.0.7.a}
		 & サーバ名を表示する\\
\hline
\HIDX{show-gakushu}{ＳＨＯＷ−ＧＡＫＵＳＨＵ}{H0.4.6.4.0.7.a}
		 & 学習状態を表示する\\
\hline
\HIDX{show-canna-version}{ＳＨＯＷ−ＣＡＮＮＡ−ＶＥＲＳＩＯＮ}{H0.4.6.4.0.7.a}
		 & バージョンを表示する\\
\hline
\HIDX{show-romkana-table}{ＳＨＯＷ−ＲＯＭＫＡＮＡ−ＴＡＢＬＥ}{H0.4.6.4.0.7.a}
		 & ローマ字かな変換テーブル名を表示する\\
\hline
\HIDX{show-canna-file}{ＳＨＯＷ−ＣＡＮＮＡ−ＦＩＬＥ}{H0.4.6.4.0.7.a}
		 & カスタマイズファイル名を表示する\\
\hline
\HIDX{sync-dictionary}{ＳＹＮＣ−ＤＩＣＴＩＯＮＡＲＹ}{H0.4.6.4.0.7.a}
		 & 辞書に書き込む\\
\hline
\end{tabular}
\end{center}
\end{table}

defmenu で定義したメニュー名を機能名として使用し、set-key などでキーを
バインドすることにより、自分で作成したメニューを使用することができるよ
うになります。set-key については、
{\dg\bf (\ref{カスタマイズ・キーのバインド}) 
\hpref{count=7,label=H0.4.6.4.0.3}キーのバインド} を参照してください。

\vspace{5mm}
\newpage
\begin{Verbatim}[frame=single]
 (例) 
     ; メニューツリーを構成する
     ; topmenu の定義
     (defmenu  topmenu
       ("記号一覧" kigou-mode)       ; 機能 kigou-mode を実行する
       ("登録" menu1)                ; menu1 へ
     )

     ; menu1 の定義
     (defmenu menu1
       ("登録" touroku-mode)         ; 機能 touroku-mode を実行する
       ("削除" delete-dic-mode)      ; 機能 delete-dic-mode を実行する
       ("辞書一覧" jisho-ichiran)    ; 機能 jisho-ichiran を実行する
     )

    (set-key 'empty-mode "\Help" 'topmenu)
\end{Verbatim}

\vspace{5mm}

メニューツリーを構成する際、カスタマイズの順番は任意です。
すなわち、上記の例のように \verb+ (defmenu menu1 … ) + を設定するより
も前に \verb+ (defmenu topmenu … ) + の中で menu1 を指定すること
が可能です。ただし、再帰的にメニューを設定することはできません。

カスタマイズファイルのメニューの設定にエラーが存在した場合、
そのメニューを選択したとき、
ガイドラインに "この項目は正しく定義されていません" と表示して、
empty モードに戻ります。


% misao … defselectin の追加 %
% ------------------------------ (8)
\hptar{label=H0.4.6.4.0.8}
\item {\dg\bf \HIDX{文字一覧の作成}{もしいちらんのさくせい}{H0.4.6.4.0.8} $-$ 
\HIDX{defselection}{ＤＥＦＳＥＬＥＣＴＩＯＮ}{H0.4.6.4.0.8}}
\label{カスタマイズ・文字一覧の作成}

\begin{CODEBOX}
(defselection 機能シンボル "表示文字列" '(文字一覧)) \\
\end{CODEBOX}

文字一覧を作成します。

機能シンボルには、その機能を参照するときのためのシンボルを指定します。
以下その機能を参照するときには、この機能シンボルで参照されます。

表示文字列には、その機能に移行したときにガイドラインに表示する
文字列を指定します。表示文字列は省略することもできます。
省略する場合は、表示文字列に nil を指定します。
省略時は、文字列一覧を表示する直前の表示文字列が表示されます。

文字一覧には、表示したい一覧を記述します。
文字一覧の指定方法は次の 2 つの方法があります。

\begin{nquote}{3em}
\begin{enumerate}
\item \label{string} 各要素を文字列として指定する
(ダブルクォーテーションで囲む)。

\item \label{character} 各要素を文字として指定する
(要素の前にクエスチョンマークをつける)。
\end{enumerate}
\end{nquote}

(\ref{string}) の場合は、各要素をすべて指定します。

%\begin{CODEBOX}
\vspace{5mm}
\begin{center}\tt
\begin{tabular}{|p{14cm}|} \hline
(例1) 1 文字ずつ表示する場合 \\
　　;文字一覧 kakko の定義 \\
　　(defselection kakko "[括弧]" \\
　　　'("（" "）" "〔" "〕" "［" "］" "｛" "｝")) \\
(例2) 2 文字ずつ表示する場合 \\
　　;文字一覧 kakko の定義 \\
　　(defselection kakko "[括弧]" '("（）" "〔〕" "［］" "｛｝")) \\
\hline
\end{tabular}
\end{center}
\vspace{5mm}
%\end{CODEBOX}

(\ref{character}) の場合は、文字一覧の要素をすべて記述するのではなく、
範囲指定することもできます。ただし、範囲は EUC コードのコード番号の
昇順に指定してください。

%\begin{CODEBOX}
\vspace{5mm}
\begin{center}\tt
\begin{tabular}{|p{14cm}|} \hline
(例3) 要素をすべて指定する場合 \\
　　;文字一覧 keisan の定義 \\
　　(defselection keisan "[計算]" \\
　　　'(?＋ ?− ?± ?× ?÷ ?＝ ?≠ ?＜ ?＞ ?≦ ?≧ ?∞ ?∴)) \\
(例4) 要素を範囲指定する場合 \\
　　;文字一覧 keisan の定義 \\
　　(defselection keisan "[計算]" '(?＋ - ?∴)) \\
\hline
\end{tabular}
\end{center}
\vspace{5mm}
%\end{CODEBOX}

さらに、(例1) 〜 (例4) までの指定を合わせて指定することもできます。

\vspace{5mm}
\begin{center}\tt
\begin{tabular}{|p{14cm}|} \hline
(例5) いろいろな方法を合わせて指定する \\
　　;部首 "ぎょうにんべん" の定義 \\
　　(defselection gyou "[ぎょうにんべん]" \\
　　　("徽" ?彳 - ?徼 ?衒 - ?衢 ?鵆 ?黴)) \\
\hline
\end{tabular}
\end{center}
\vspace{5mm}


% ------------------------------ (9)
\hptar{label=H0.4.6.4.0.9}
\item {\dg\bf \HIDX{初期状態の設定}{しよきしようたいのせつてい}
{H0.4.6.4.0.9} $-$ \HIDX{initialize-function}{ＩＮＩＴＩＡＬＩＺＥ−Ｆ
ＵＮＣＴＩＯＮ}{H0.4.6.4.0.9}}


\begin{CODEBOX}
(initialize-function '(初期状態設定シーケンス))\\
\end{CODEBOX}

initialize-function はアプリケーションが起動したときのかな漢字変換の状態を
指定します。
初期状態設定シーケンスの部分には機能名を記述します。
複数の機能名を指定することも可能です。

たとえば、アプリケーションプログラムの起動時に日本語入力モードであって
ほしい場合は、

\begin{CODEBOX}
(initialize-function '(japanese-mode)) \\
\end{CODEBOX}

のように記述します。

起動時にはアルファベットモードであってほしいが、\XFER で日本語入力モードに
移行したときにカタカナベースのモードであってほしい場合は次のように記述します。

\begin{CODEBOX}
(initialize-function '(japanese-mode base-katakana \\
　　　　　　　　　　　　　　　　　　　　　　 alpha-mode)) \\
\end{CODEBOX}

% ------------------------------ (10)
\hptar{label=H0.4.6.4.0.10}
\item {\dg\bf ほかの\HIDX{カスタマイズファイルの読み込み}{かすたまいすふあ
いるのよみこみ}{H0.4.6.4.0.10} $-$ \HIDX{load}{ＬＯＡＤ}{H0.4.6.4.0.10}}

\vspace{5mm}

\begin{CODEBOX}
(load "ファイル名") \\
\end{CODEBOX}

.canna からほかのカスタマイズファイルを読み込むことができます。ファイル名
は絶対パス名で書くことが望ましいです。ホームディレクトリを表すチルダマー
クは使用できません。

% ------------------------------ (11)
\hptar{label=H0.4.6.4.0.11}
\item {\dg \HIDX{バージョンを表す変数}{はーしよんをあらわすへんすう}
{H0.4.6.4.0.11}}

以下の変数には『かんな』のバージョン、かな漢字変換サーバのバージョン、
かな漢字変換サーバとの通信に用いられているプロトコルのバージョンが
それぞれ格納されています。

\begin{CODEBOX}
\verb+ canna-version     数字    『かんな』のバージョン + \\
\verb+ protocol-version  数字    プロトコルのバージョン + \\
\verb+ server-version    数字    サーバのバージョン + \\
\end{CODEBOX}

たとえば『かんな』Version3.3 では canna-version には 3003 が入っています。
次のように利用することができます。

\vspace{5mm}

{\tt
\begin{center}
\begin{tabular}{|p{1cm}p{12cm}|}
\hline
(例) & \\
 & (if (> protocol-version 1999) (setq auto t)) \\
 & かな漢字変換プロトコルが2.0以上のときに限って逐次自動変換を利用します。 \\
\hline
\end{tabular}
\end{center}
}

\vspace{5mm}

% ------------------------------ (12)
\hptar{label=H0.4.6.4.0.100}
\item {\dg そのほかのキーワード}
\label{カスタマイズ・その他のキーワード}

以下で、そのほかのキーワードについて説明します。

%
% カスタマイズのキーワードはアルファベット順に並べ直しました。
%

\begin{itemize}

% ------- ・
\hptar{label=H0.4.6.4.0.101}
\item \HIDX{abandon-illegal-phonogram}{ＡＢＡＮＤＯＮ−ＩＬＬＥＧＡＬ
−ＰＨＯＮＯＧＲＡＭ}{H0.4.6.4.0.101}

ローマ字かな変換で不正なローマ字が入力として残るかどうかを指定します。
デフォルトでは不正なローマ字は残りますが、abandon-illegal-phonogram に 
t を 指定すると不正なローマ字は入力から捨てられます。
デフォルトは nil です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq abandon-illegal-phonogram nil)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.102}
\item \HIDX{allow-next-input}{ＡＬＬＯＷ−ＮＥＸＴ−ＩＮＰＵＴ}{H0.4.6.4.0.102}

候補一覧表示状態で数字以外のキーを押したときに、現在カーソルが位置して
い る候補が選択され次の入力となるかどうかを指定します。
allow-next-input が t の場合、候補一覧表示状態で数字以外のキーを打つと、
次の 入力となります。
allow-next-input が nil の場合、「ピッ」という音が鳴り、次の入力には用
いられません。
デフォルトは t です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq allow-next-input t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.103}
\item \HIDX{auto}{ＡＵＴＯ}{H0.4.6.4.0.103}

逐次自動変換を用いるかどうかを指定します。t で逐次自動変換を用います。
デフォルトは nil です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq auto nil)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.104}
\item \HIDX{auto-sync}{ＡＵＴＯ−ＳＹＮＣ}{H0.4.6.4.0.104}

単語登録削除した直後に自動的に辞書の書き出し処理を行うかどうかを指定し
ます。 auto-sync が t の場合は、自動的に辞書の書き出し処理を行います。
auto-sync が nil の場合は、辞書に対するアクセスがなくなった時点で辞書
の書き出し処理が行われます。 デフォルトは t です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;単語登録削除の直後に辞書の書き出し処理を行います。
    (setq auto-sync t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.105}
\item \HIDX{break-into-roman}{ＢＲＥＡＫ−ＩＮＴＯ−ＲＯＭＡＮ}
{H0.4.6.4.0.105} 

バックスペースキーを打ったときに直前のローマ字かな変換された文字列が
ローマ字に戻るかどうかを指定します。デフォルトは nil です。 

\begin{nquote}{2em}
\begin{verbatim}
(例) 
    (setq break-into-roman t) 
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.106}
\item \HIDX{bunsetsu-kugiri}{ＢＵＮＳＥＴＳＵ−ＫＵＧＩＲＩ}
{H0.4.6.4.0.106}

候補を表示しているときに文節ごとに空白で区切るかどうかを指定します。
t で区切ります。デフォルトは nil です。

\begin{nquote}{2em}
\begin{verbatim}
(例) 
    ;候補表示状態で文節句切りを行います。
    (setq bunsetsu-kugiri t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.107}
\item \HIDX{character-based-move}{ＣＨＡＲＡＣＴＥＲ−ＢＡＳＥＤ−ＭＯ
ＶＥ}{H0.4.6.4.0.107}

読みを入力しているときにカーソル移動を行う場合に、文字単位で移動を行う
かどうかを指定します。デフォルトは t です。character-based-move を nil
にする と、ローマ字かな変換の確定の単位をもとにしてカーソルを移動しま
す。すなわち、"ju" と入力した場合は、『じゅ』は一文字とみなされてカー
ソルが移動します。文字削除のときも同様に取り扱われます。

\begin{nquote}{2em}
\begin{verbatim}
(例) 
    ;読みを入力しているとき、カーソルは文字単位で移動します。
    (setq character-based-move t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.107.5}
\item \HIDX{code-input}{ＣＯＤＥ−ＩＮＰＵＴ}{H0.4.6.4.0.107.5}

コード変換の機能を利用してコード入力を行う場合、JIS コード(``jis'')、シ
フト JIS コード(``sjis'')、区点コード(``kuten'')の 3 つのコード種別のいずれ
かを指定することができます。デフォルトは ``jis'' です。

ただし、メニューを利用したコード入力は、JIS コードのみサポートします。

\begin{nquote}{2em}
\begin{verbatim}
(例) 
    ;JIS コードでコード入力します。
    (setq code-input "jis")
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.108}
\item \HIDX{cursor-wrap}{ＣＵＲＳＯＲ−ＷＲＡＰ}{H0.4.6.4.0.108}

読みを入力している状態や候補を表示している状態でカーソルを移動するとき
に右端から右へ移動する操作をしたときや左端から左や移動する操作をしたと
きに反対側の端にカーソルが移動することを指定します。t で移動し、nil で
移動しません。デフォルトは t です。

\begin{nquote}{2em}
\begin{verbatim}
(例) 
    ;カーソルラップしないようにします。 
    (setq cursor-wrap nil) 
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.109}
\item \HIDX{define-esc-sequence}{ＤＥＦＩＮＥ−ＥＳＣ−ＳＥＱＵＥＮＣＥ}
{H0.4.6.4.0.109}

端末のタイプごとにエスケープシーケンスと機能キーの対応を設定します。
%vi(1) や cannad(1) などが
canuum(1) が
ファンクションキーなどを解釈する際に参照されます。

なお、アプリケーションによってはこの機能に対応していないことがあります。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (define-esc-sequence "kterm" "\Escape[28~" ?\Help)
    (define-esc-sequence "kterm" "\Escape[210z" ?\Xfer)
\end{verbatim}
\end{nquote}

ターミナル名とエスケープシーケンスは文字列を許しますが、最後のキーは単
キーとするため、文字を指定するように構文上の制約を加えています。 

% ------- ・
\hptar{label=H0.4.6.4.0.109.5}
\item \HIDX{delay-connect}{ＤＥＬＡＹ−ＣＯＮＮＥＣＴ}{H0.4.6.4.0.109.5}

最初の変換の時までサーバへの接続を遅延するかどうかを指定します。
 nil のときは初期化時にすぐに接続します。デフォルトは nil です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq delay-connect nil)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.110}
\item \HIDX{gakushu}{ＧＡＫＵＳＨＵ}{H0.4.6.4.0.110}

かな漢字変換が学習を行うかどうかを指定します。デフォルトは t です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq gakushu t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.111}
\item \HIDX{grammatical-question}{ＧＲＡＭＭＡＴＩＣＡＬ−ＱＵＥＳＴＩ
ＯＮ}{H0.4.6.4.0.111}

単語登録で品詞を指定した後、詳細な品詞分類のための質問を行うか否かを
指定します。t で質問を行い、nil では質問をしません。デフォルトは t です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq grammatical-question nil)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.112}
\item \HIDX{henkan-or-do-nothing}{ＨＥＮＫＡＮ−ＯＲ−ＤＯ−ＮＯＴＨＩＮＧ}
{H0.4.6.4.0.112}

逐次自動変換を用いている場合、ベース切替え機能を利用してベースを切替え
た際のキーの動作を指定します。

たとえば、句点の入力時に変換を行うように指定してあるが、ベースがひらが
な以外の場合は変換を行わないようにするためには以下のように記述します。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;句点入力時に変換を行うが、ベースが
    ;ひらがな以外の場合はなにも行わない。
    (set-key 'chikuji-yomi-mode "." 
      '(self-insert henkan-or-do-nothing))
    (set-key 'chikuji-bunsetsu-mode "." 
      '(self-insert henkan-or-do-nothing))
\end{verbatim}
\end{nquote}
    
% ------- ・
\hptar{label=H0.4.6.4.0.113}
\item \HIDX{henkan-or-self-insert}{ＨＥＮＫＡＮ−ＯＲ−ＳＥＬＦ−ＩＮ
ＳＥＲＴ} {H0.4.6.4.0.113}

連文節変換を用いている場合、ベース切替え機能を利用してベースを切替えた
際のキーの動作を指定します。

たとえば、ベース切替え機能を利用して、bese-eisu 機能により英数入力モー
ドに移行する際、入力ベースがひらがなの場合は変換を行い、ひらがな以外の
場合は self-insert を行うためには以下のように記述します。 

\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;読み入力中に C-o を押すことにより
    ;日本語入力モードの ON/OFF を行う。
    (set-key 'yomi-mode "\C-o" 'base-kana-eisu-toggle)
    ;ベースがひらがな以外の場合は self-insert を行う。
    (set-key 'yomi-mode "\Space" 'henkan-or-self-insert)
\end{verbatim}
\end{nquote}


% ------- ・
\hptar{label=H0.4.6.4.0.114}
\item \HIDX{hex-direct}{ＨＥＸ−ＤＩＲＥＣＴ}{H0.4.6.4.0.114}

16 進コード入力時に 4 ケタ目を入れた時点で 16 進コード入力モードが終了
するかどうかを指定します。
nil を指定すると 4 ケタ目を入れた時点でも入力が確定しない状態となります。
デフォルトは nil です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq hex-direct nil)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.115}
\item \HIDX{ignore-case}{ＩＧＮＯＲＥ−ＣＡＳＥ}{H0.4.6.4.0.115}

ローマ字かな変換テーブルには普通小文字の規則だけが定義されており、通常
は大文字を入力するとアルファベットのまま入力され、かなには変換されませ
ん。
ignore-case を t にした場合、大文字で入力してもローマ字かな変換では小
文字として取り扱われます。
デフォルトは nil です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq ignore-case nil)
\end{verbatim}
\end{nquote}

% ------- ・

\hptar{label=H0.4.6.4.0.116}
\item \HIDX{index-hankaku}{ＩＮＤＥＸ−ＨＡＮＫＡＫＵ}{H0.4.6.4.0.116}

候補一覧の番号を全角文字から半角文字に変更するかどうかを指定します。

デフォルトは nil(全角文字)です。

% ------- ・
\hptar{label=H0.4.6.4.0.117}
\item \HIDX{index-separator}{ＩＮＤＥＸ−ＨＡＮＫＡＫＵ}{H0.4.6.4.0.117}

候補一覧の番号を半角文字にカスタマイズしている場合の、番号と候補との区
切りのセパレータ文字を指定します。? の次の 1 文字をセパレータ文字とし
て使用します。 
デフォルトはピリオドです。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;セパレータをコロンにします。
    (setq index-separator ?:)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.117.5}
\item \HIDX{inhibit-hankaku-kana}{ＩＮＨＩＢＩＴ−ＨＡＮＫＡＫＵ−ＫＡＮＡ}{H0.4.6.4.0.117.5}

文字種変換で半角カタカナを禁止するどうかを指定します。t のときは禁止します。
デフォルトは nil です。
\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;半角カタナナを禁止します。
    (setq inhibit-hankaku-kana t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.118}
\item \HIDX{kakutei-if-end-of-bunsetsu}{ＫＡＫＵＴＥＩ−ＩＦ−ＥＮＤ−
ＯＦ−ＢＵＮＳＥＴＳＵ}{H0.4.6.4.0.118}

最右文節で次文節へ移動しようとしたときに、確定するか否かを指定します。
t で確定します。nil を指定すると最左文節がカレント文節になります。
デフォルトは nil です。また、stay-after-validate が nil のときで 
kakutei-if-end-bunsetsu が t のときは最右文節で候補一覧状態から候補を 
選択すると全文が確定します。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq kakutei-if-end-of-bunsetsu nil)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.119}
\item \HIDX{kouho-count}{ＫＯＵＨＯ−ＣＯＵＮＴ}{H0.4.6.4.0.119}

候補一覧など一覧表示をしているときに、いま選択している項目が
全体の項目の何番目であるのかを表示するかどうかを指定します。
t で表示し、nil で表示しません。
デフォルトは t です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq kouho-count t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.119.5}
\item \HIDX{mojishu-continue}{ＭＯＪＩＳＨＵ−ＣＯＮＴＩＮＵＥ}{H0.4.6.4.0.119.5}

文字種変換後、文字種変換部分を確定しないで次の入力を行うかどうかを指
定します。t のときは確定しないで次の入力を行います。
デフォルト値は t です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq mojishu-continue t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.120}
\item \HIDX{n-henkan-for-ichiran}{Ｎ−ＨＥＮＫＡＮ−ＦＯＲ−ＩＣＨＩＲ
ＡＮ}{H0.4.6.4.0.120}

変換キー(デフォルトではスペースキーとXfer)を何回か押すと候補一覧表示が
行われるようにすることができます。n-henkan-for-ichiran に対して数を指
定すると、 指定された回数変換キーを押すことにより候補一覧が表示されます。
0 を指定すると何回変換キーを押しても一覧表示が行われなくなります。
デフォルトは 2 で、2 回変換キーを押すと一覧表示になります。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;変換キーを 3 回押すと候補一覧が表示されます。
    (setq n-henkan-for-ichiran 3)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.121}
\item \HIDX{n-keys-to-disconnect}{Ｎ−ＫＥＹＳ−ＴＯ−ＤＩＳＣＯＮＮＥ
ＣＴ}{H0.4.6.4.0.121}

アルファベットを入力し続けた場合のサーバとの接続の切れるストローク数を
指定します。
デフォルトは 500 です。0 を指定した場合は、サーバとの接続は切れなくなり
ます。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq n-keys-to-dicsonnect 500)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.122}
\item \HIDX{n-kouho-bunsetsu}{Ｎ−ＫＯＵＨＯ−ＢＵＮＳＥＴＳＵ}{H0.4.6.4.0.122}

逐次自動変換時に漢字に自動的に変換された文節をいくつまで確定せずに保持
するかを 指定します。3 〜 32 の範囲で指定してください。
デフォルトは 16 です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    (setq n-kouho-bunsetsu 16)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.123}
\item \HIDX{numerical-key-select}{ＮＵＭＥＲＩＣＡＬ−ＫＥＹ−ＳＥＬＥ
ＣＴ}{H0.4.6.4.0.123}

候補一覧を表示しているときに、数字キーを用いて候補を選択できるかどうかを
指定します。デフォルトは t です。nil を指定すると、候補一覧の番号が表
示されません。また、数字キーを押した場合、選択されている候補が確定し、
押したキーは次の読みの入力として取り扱われます。 

\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;一覧選択を数字キーで行いません。
    (setq numerical-key-select nil) 
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.124}
\item \HIDX{reverse-widely}{ＲＥＶＥＲＳＥ−ＷＩＤＥＬＹ}
{H0.4.6.4.0.124}

t を指定すると読みを入力しているときの文字列の反転範囲が広くなります。デ
フォルトは nil です。

\begin{nquote}{2em}
\begin{verbatim}
(例) 
    ;読み入力時、読み全体を反転させます。
    (setq reverse-widely t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.125}
\item \HIDX{romaji-yuusen}{ＲＯＭＡＪＩ−ＹＵＵＳＥＮ}{H0.4.6.4.0.125}

romaji-yuusen が t の場合、現在の入力モードが読み入力モードまたは
それに準ずるモードであり、ローマ字かな変換が途中の状態のとき、
次の入力文字がローマ字かな変換で有効なキーであれば、self-insert が行われます。
romaji-yuusen が nil の場合、どのような状態においても、キーに割り当てられた
機能が実行されます。
デフォルトは nil です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;ローマ字かな変換を優先します。
    ;  たとえば "x" + " "(スペース)に対して、ローマ字かな変換テーブル
    ;  で "　"(全角のスペース)を割り当てている場合、romaji-yuusen が
    ;  t の時は全角のスペースが表示されますが、romaji-yuusen が nil 
    ;  の時は、スぺースが『変換』の意味として用いられます。
    (setq romaji-yuusen t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.126}
\item \HIDX{quickly-escape-from-kigo-input}
{ＱＵＩＣＫＬＹ−ＥＳＣＡＰＥ−ＦＲＯＭ−ＫＩＧＯ−ＩＮＰＵＴ}{H0.4.6.4.0.126}

記号入力モード時に、記号を連続して入力するかどうかを指定します。
quickly-escape-from-kigo-input が t の場合、記号入力モードで記号を 1 つ
入力すると記号入力モードを終了します。
quickly-escape-from-kigo-input が nil の場合、記号を選択したのちも
記号入力モードにとどまり、記号を連続して入力することができます。
デフォルトは nil です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;記号を連続して入力します。
    (setq quickly-escape-from-kigo-input nil)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.127}
\item \HIDX{quit-if-end-of-ichiran}{ＱＵＩＴ−ＩＦ−ＥＮＤ−ＯＦ−ＩＣ
ＨＩＲＡＮ}{H0.4.6.4.0.127}

候補一覧表示をしているときに、最終候補を表示している状態で次候補操作を行うと
候補一覧表示を終了し、読みそのものを候補として表示するようになります。
2 打目のスペースキーを候補一覧表示にカスタマイズしているとき
などは quit-if-end-of-ichiran を t にしておくと便利です。デフォルトは 
nil です。 

\begin{nquote}{2em}
\begin{verbatim}
(例) 
    (setq quit-if-end-of-ichiran t) 
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.128}
\item \HIDX{select-direct}{ＳＥＬＥＣＴ−ＤＩＲＥＣＴ}{H0.4.6.4.0.128}

numerical-key-select が t であるときに、数字キーで候補を選択したときに
候補一覧表示のままかそうでないかを指定します。
t の場合は候補一覧が終了します。デフォルトは t です。

\begin{nquote}{2em}
\begin{verbatim}
(例) 
    ;数字キー入力で一覧モードを終了します。
    (setq select-direct t)
\end{verbatim}
\end{nquote}

% ------- ・
\hptar{label=H0.4.6.4.0.129}
\item \HIDX{stay-after-validate}{ＳＴＡＹ−ＡＦＴＥＲ−ＶＡＬＩＤＡＴ
Ｅ}{H0.4.6.4.0.129}

候補一覧表示状態で候補を選択して単一候補表示状態に戻ったときに、
カレント文節を次の文節に移動させるかどうかを指定します。
nil でカレント文節は次の文節に移動します。
t ではカレント文節は変わりません。デフォルトは t です。

\begin{nquote}{2em}
\begin{verbatim}
(例)
    ;候補選択すると次の文節に移動します。 
    (setq stay-after-validate nil)
\end{verbatim}
\end{nquote}

\end{itemize}

\end{enumerate}


\subsection{そのほかの\HIDX{Lispの関数}{ＬＩＳＰのかんすう}{H0.4.6.5.0}}

今まで説明した以外の Lisp の関数を説明します。
以下の関数はかな漢字変換には直接は影響を及ぼしません。

\begin{enumerate}

% ------------------------------ (1)
\item {\dg\bf 条件分岐 $-$ cond, if}

\begin{nquote}{3em}
\begin{verbatim}
(if A B C)
\end{verbatim}
\end{nquote}

この式は、まず A を評価し、その結果が nil 以外であれば、B を評価し、
nil であれば C を評価します。
(if……) 式の結果は B または C の評価結果となります。

\begin{CODEBOX}
(例) \\
　　(if (> protocol-version 2000) (setq auto t) \\
　　　　　　　　　　　　　　　　　　　　(setq auto nil)) \\
　　(setq auto (if (> protocol-version 2000) t nil)) \\
　 \\
\end{CODEBOX}

\begin{nquote}{3em}
\tt
(cond (C$1$ B$1$) (C$2$ B$2$)・・・・(C$n$ B$n$))
\end{nquote}

まず、 C$1$ を評価し、その結果が nil 以外なら B$1$ を評価しその結果を 
cond 式の結果とします。その場合 C$2$ 〜 C$n$、B$2$ 〜 B$n$ は評価さ
れません。 C$1$ の評価結果が nil なら次に C$2$ を評価します。 C$2$ の
結果が nil 以外なら B$2$ を評価しその結果を cond 式の結果とします。

C$i$ を次々と nil 以外の値が出てくるまで評価し、 nil 以外の値が返って
来たところの B$i$ を評価し、それを cond 式の値として返します。

% ------------------------------ (2)
\item {\dg\bf そのほかの制御構造 $-$ let}

\begin{nquote}{3em}
\tt
(let ((VAR$1$ VAL$1$) (VAR$2$ VAL$2$) .... (VAR$n$ VAL$n$)) body)
\end{nquote}

変数 VAR$1$ 〜 VAR$n$ に、それぞれ値 VAL$1$ 〜 VAL$n$ を代入した後に 
body を評価します。 body の評価結果が let 式の結果となります。 body は
複数の式を記述することが可能です。 let 式の評価が終了すると VAR$1$ 〜 
VAR$n$ の値は元の値に戻ります。

% ------------------------------ (3)
\item {\dg\bf 関数の逐次呼出し $-$ progn}

\begin{nquote}{3em}
\begin{verbatim}
(progn A B C ....)
\end{verbatim}
\end{nquote}

式 A B C … を次々と評価して最後の式の評価結果を値とします。
if 文の実行部に複数の処理を記述するときに使います。

\begin{CODEBOX}
(例) \\
　　(if (< canna-version 2000) \\
　　　(progn (setq n-henkan-for-ichiran 2) \\
　　　　　　　(setq quit-if-end-of-ichiran t)) ) \\
\end{CODEBOX}

% ------------------------------ (4)
\item {\dg\bf 値の比較 $-$ equal, =, ＞, ＜, eq }

値の比較を行います。eq はシンボル同士の比較と数値同士の比較のみにしか
用いることができませんが、非常に高速に比較処理を行います。

% ------------------------------ (5)
\item {\dg\bf 真理値の調査 $-$ not, and, or}

真理値を調査します。

and および or は引数を左側から必要な数だけ評価します。
すなわち、and の場合は最初に nil を結果として返す式があった場合、
そこから右に書かれている引数は評価しません。
or の場合は、最初に nil 以外の値を結果として返す式があった場合、
そこから右に書かれている引数は評価しません。

% ------------------------------ (6)
\item {\dg\bf 算術演算 $-$ $+$, $-$, $\ast$, /, \%}

算術演算を行います。意味は C 言語の場合と同じです。

% ------------------------------ (7)
\item {\dg\bf ガーベジコレクション $-$ gc}

Lisp 言語のメモリ管理システムを起動し、メモリの整理を行います。

% ------------------------------ (8)
\item {\dg\bf リスト演算 $-$ list, cons, car, cdr, atom, null}

リスト処理を行います。かな漢字変換で用いることはないでしょう。
詳細は Lisp 関連の参考書をご覧ください。

% ------------------------------ (9)
\item {\dg\bf 引用 $-$ quote}

\begin{nquote}{3em}
\begin{verbatim}
(quote A)
\end{verbatim}
\end{nquote}

'A と同じように A というデータをそのままデータとして使いたいときに用います。

% ------------------------------ (10)
\item {\dg\bf 代入 $-$ set}

set は setq と同様の処理を行います。setq との違いは第 1 引数を評価する点です。

% ------------------------------ (11)
\item {\dg\bf 関数定数 $-$ defun, defmacro}

関数定義、マクロ定義を行います。かな漢字変換で用いることはないでしょう。
詳細は Lisp 関連の参考書をご覧ください。

% ------------------------------ (12)
\item {\bf\dg シンボルの複製 $-$ copy-symbol}

シンボルの複製を作成します。
copy-symbol はシンボルの持つさまざまな属性をそのままコピーします。

\begin{CODEBOX}
(例) \\
　　(copy-symbol '読みモード 'yomi-mode) \\
\end{CODEBOX}

上記の処理により yomi-mode というキーワードの代わりに「読みモード」と
記述することができるようになります。

\end{enumerate}

% ------------------------------ 3.3.7
\section{こんな風にカスタマイズしてみたい}
\HIDXAS{カスタマイズの例}{かすたまいすのれい}{H0.4.7.0.0}
\label{3.3.7こんな風にカスタマイズしてみたい}

以下では、次のようにカスタマイズするときのカスタマイズファイルの
記述例を示します。

\vspace{5mm}

%{\tt
\begin{center}
\begin{tabular}{|l|p{12cm}|}
\hline
\hpref{count=1,label=H0.4.7.0.0.1}1 & 変換は Xfer で行い、スペースは全角空白文字の入力として使用したい。 \\
%\hpref{count=1,label=H0.4.7.0.0.2}2 & 候補を数字で選んだら候補一覧を抜けたい。 \\
\hpref{count=1,label=H0.4.7.0.0.3}2 & 候補を選択したら次の文節に移動したい。 \\
\hpref{count=1,label=H0.4.7.0.0.4}3 & 一太郎\footnotemark のような操作法で入力したい。 \\
\hpref{count=1,label=H0.4.7.0.0.5}4 & 「と［を両方使いたい。 \\
\hpref{count=1,label=H0.4.7.0.0.6}5 & 拡張メニューを自分で定義したい。 \\
\hline
\end{tabular}
\footnotetext{一太郎はジャストシステム(株)の商標です}
\end{center}
%}

\vspace{5mm}

以下のカスタマイズの説明では、.canna を書き換えることによって
カスタマイズを実現します。書き換えは、.canna の最後の方に加えていけば
良いでしょう。.canna がない場合は、次のコマンドを入力して、.canna を
準備してください。

\begin{CODEBOX}
\% cp \refCANNALIBDIR /sample/default.canna .canna \\
\% chmod u+w .canna \\
\end{CODEBOX}

\begin{enumerate}

% ------------------- (1)
\item {\dg\bf 変換は Xfer で行い、スペースは全角空白文字の入力として使用したい}
\hptar{label=H0.4.7.0.0.1}

まず、スペースキーに対して通常の入力機能(self-insert)を割り当てます。
self-insert の self とはキー自身を指します。
すなわち、スペースキーに対して self-insert を割り当てると
空白を挿入するという機能がスペースキーに割り当てられます。

スペースキーに self-insert 機能を割り当てるには次のように
カスタマイズファイルします。

\begin{CODEBOX}
(global-set-key "\verb!\!Space" 'self-insert) \\
\end{CODEBOX}

"$\backslash$Space" はスペースキーを示します。
"$\backslash$Space" の代わりに "  " のように記述しても同じ意味になります。

さて、これだけ設定するとスペースキーが変換操作に使用できなくなり、
代わりに全角空白が挿入されるようになります。

全角空白ではなく、半角空白にしたいときは
ローマ字かな変換テーブルの書き換えが必要となります。

% ------------------- (2)
% misao … V3.3 では、これをデフォルトにしたので、コメントアウトする。
%
%\item {\dg 候補を数字で選んだら候補一覧を抜けたい}
%\hptar{label=H0.4.7.0.0.2}
%
%『かんな』では、候補一覧を表示している状態で各候補の番号を押した場合、
%カーソルがその候補に移動するだけで実際の選択は行われません。
%
%\begin{SCREEN}
%{\tt \%} \underline{こうしゃ}\CURSOR \\
%{[ あ ]} \\
%\end{SCREEN}
%
%　　　↓変換
%
%\begin{SCREEN}
%\verb+%+ \fbox{後者} \\
%{[ あ ]} \\
%\end{SCREEN}
%
%　　　↓変換
%
%\begin{SCREEN}
%\verb+%+ \fbox{公社} \\
%{[ あ ]  1 後者  \fbox{2} 公社  3 校舎  4 降車  5 巧者} \SCREENRIGHT{2/8}\\
%\end{SCREEN}
%
%　　　↓4を入力
%
%\begin{SCREEN}
%\verb+%+ \fbox{降車} \\
%{[ あ ]  1 後者  2 公社  3 校舎  \fbox{4} 降車  5 巧者} \SCREENRIGHT{4/8}\\
%\end{SCREEN}
%
%実際に選択するためには確定キー(デフォルトでは \RETURN)を押さなければなりません。
%
%数字を選択した時点でその候補を選択し、候補一覧表示を終了したい場合は
%次のようにカスタマイズファイルします。
%
%\begin{CODEBOX}
%(setq select-direct t) \\
%\end{CODEBOX}
%
%これにより、数字を選択しただけで候補が選択され、候補一覧が終了します。
%
%\begin{SCREEN}
%\verb+%+  \fbox{公社} \\
%{[ あ ]  1 後者  \fbox{2} 公社  3 校舎  4 降車  5 巧者} \SCREENRIGHT{2/8}\\
%\end{SCREEN}
%
%　　　↓4を入力
%
%\begin{SCREEN}
%\verb+%+ \fbox{降車} \\
%{[ あ ]} \\
%\end{SCREEN}
%
% ------------------- (3)
\item {\dg 候補を選択したら次の文節に移動したい}
\hptar{label=H0.4.7.0.0.3}

長い文章を入力して変換キーを押し、前の文章から候補選択をするという方法で
入力している方も多いでしょう。
そのような方の場合、候補一覧で選択したときにカレント文節が同じ文節に
とどまってしまうといちいち文節移動をしなければならないので不便を
感じてはいないでしょうか？

\begin{SCREEN}
\setlength{\fboxsep}{\reversefboxsep}
\verb+%+ \fbox{校舎を}\underline{改築しようと考えていますがどうしましょうね}  \\
{[ あ ]  1 公社を \fbox{2} 校舎を  3 降車を  4 巧者を} \SCREENRIGHT{2/8} \\
\end{SCREEN}

%\begin{center} ↓確定(\RETURN)を入力 \end{center}
　　　↓確定(\RETURN)を入力

\begin{SCREEN}
\setlength{\fboxsep}{\reversefboxsep}
\verb+%+ \fbox{校舎を}\underline{改築しようと考えていますがどうしましょうね}  \\
{[ あ ]} \\
\end{SCREEN}

「一覧を選択したのだからその文節での仕事は終わっているはずだ。
一覧選択を終わったら次の文節に移動してほしい。」という風にお思いの方も
多いでしょう。そのような場合は、次のようにカスタマイズします。

\begin{CODEBOX}
(setq stay-after-validate nil) \\
\end{CODEBOX}

\begin{SCREEN}
\setlength{\fboxsep}{\reversefboxsep}
\verb+%+ \fbox{校舎を}\underline{改築しようと考えていますがどうしましょうね} \\
{[ あ ]  1 公社を \fbox{2} 校舎を  3 降車を  4 巧者を} \SCREENRIGHT{2/8} \\
\end{SCREEN}

%\begin{center} ↓確定(\RETURN)を入力 \end{center}
　　　↓確定(\RETURN)を入力

\begin{SCREEN}
\setlength{\fboxsep}{\reversefboxsep}
\verb+%+ \underline{校舎を}\fbox{改築しようと}\underline{考えていますがどうしましょうね} \\
{[ あ ]} \\
\end{SCREEN}

% ------------------- (4)
\item {\dg 一太郎\footnotemark のような操作法で入力したい}
\hptar{label=H0.4.7.0.0.4}

\footnotetext{一太郎はジャストシステム(株)の商標です}

「一太郎に慣れているので一太郎とできるだけ同じ操作で日本語入力がしたい」
という方もいらっしゃるでしょう。

一太郎とほぼ同じキー操作を提供するカスタマイズファイルが\\
\refCANNALIBDIR /sample/just.cannaとして提供されていますので、以下のコマンドを
実行して、そのファイルをカスタマイズファイルとして使用するようにしてください。

\begin{CODEBOX}
\% cd \\
\% cp \refCANNALIBDIR /sample/just.canna .canna \\
\end{CODEBOX}

% ------------------- (5)
\item {\dg 「と［を両方使いたい}
\hptar{label=H0.4.7.0.0.5}

ワープロによっては、「．」(ピリオド)を打ったときに「。」が入力されるか
「．」が入力されるかを選択できたり、
「[\ 」(角かっこ)を入力したときに「「\ 」(かぎかっこ)が入力されるか
「［\ 」(全角角かっこ)が入力されるかを選択できたりするものがあります。

『かんな』でもローマ字かな変換テーブルを書き換えることにより、
「．」や「［\ 」に対応する記号を変更することができますが、
ローマ字かな変換テーブルの書き換えは若干面倒でもあります。

このような場合、以下のようにカスタマイズすることによって、
それぞれの記号を両方定義しておき、
必要に応じて簡単に切り替えることができます。

\begin{CODEBOX}
\verb!(defsymbol ?. "。" "." )! \\
\verb!(defsymbol ?[ "「" "[" )! \\
\end{CODEBOX}

このようにしておくと以下の手順で記号を切り替えることができます。

まず、「．」を入力します。

\begin{SCREEN}
\underline{。} \\
{[ あ ]} \\
\end{SCREEN}

　　　↓変換キーを押し、候補一覧を表示させます。


\begin{SCREEN}
\setlength{\fboxsep}{\reversefboxsep}
\underline{。}  \\
{[一覧] 　\fbox{1} 。 2 ．} \SCREENRIGHT{1/2}\\
\end{SCREEN}

　　　↓　\fbox{→}，\RETURN で 2 を選びます。

\begin{SCREEN}
\underline{．} \\
{[ あ ]} \\
\end{SCREEN}

つぎからはピリオドを打つと「．」が入ります。

\begin{SCREEN}
\underline{．} \\
{[ あ ]} \\
\end{SCREEN}

同様の操作により元に戻すことが可能です。

% ----------------------- (6)
\item {\dg 拡張メニューを自分で定義したい}
\hptar{label=H0.4.7.0.0.6}

デフォルトでは、\HELP キーを押したときに、ガイドラインに
メニューが表示され、記号入力、単語登録、変換方式の変更などが
行えます。しかし、この方法では、自分が使いたい機能をすぐに選択することが
できなかったり、記号入力時に自分が選択したい記号をすぐに見つけることが
できなかったりすることがあります。

このような場合、メニューを自分でカスタマイズすることができます。

ここでは、自分で文字一覧を作成し、さらに、自分の使い
やすいようにメニューを定義してみましょう。

たとえば、

\begin{nquote}{2em}
\begin{enumerate}
\item 変換方式の変更などはほとんど行わないので、メニューには
一覧表示と単語登録だけがあればいい。

\item 一覧表示では、自分で作成した括弧と数学記号の一覧も表示したい。
\end{enumerate}
\end{nquote}

という場合には、以下のようにカスタマイズします。

\vspace{5mm}
\newpage
\begin{Verbatim}[frame=single]
 ; 文字一覧 kakko の定義
 (defselection kakko "[括弧]" '(?（ ?） ?〔 ?〕 ?［ ?］ ?｛ ?｝ ?〈 ?〉))
 ; 文字一覧 keisan の定義
 (defselection keisan "[計算]"
 　'(?＋ ?− ?± ?× ?÷ ?＝ ?≠ ?＜ ?＞ ?≦ ?≧ ?∞ ?∴))

 ; メニューに一覧と登録を定義する
 (defmenu  toplevel-menu       ; 初期 menu の定義
   ("一覧" menu1)              ; menu1 へ
   ("登録" menu2)              ; menu2 へ
 )

 ; 一覧を選択すると、括弧、数学記号、ギリシャ語の一覧表示ができる
 (defmenu menu1                ; menu1 の定義
   ("カッコ" kakko)            ; kakko を一覧表示する
   ("計算" keisan)             ; keisan を一覧表示する
   ("ギリシャ" greek-mode)     ; 機能 greek-mode を行う
 )

 ; 登録を選択すると、単語登録/削除、辞書一覧の表示ができる
 (defmenu menu2                ; menu2 の定義
   ("登録" touroku-mode)       ; 機能 touroku-mode を行う
   ("削除" delete-dic-mode)    ; 機能 delete-dic-mode を行う
   ("辞書一覧" jisho-ichiran)  ; 機能 jisho-ichiran を行う
 )

 ; C-t を押すと、定義したメニューを表示する
 (set-key 'empty-mode "\C-t" 'toplevel-menu)
\end{Verbatim}
\vspace{5mm}

このようにカスタマイズすると、以下のようにメニューを利用できます。

\begin{enumerate}

\item \CTRL + \fbox{t} を押して、メニューに入る。
\label{initmenu}

\begin{SCREEN}
\verb+% + \CURSOR \\
{[拡張] \fbox{1} 一覧\,\,\, 2 登録} \SCREENRIGHT{1/2} \\
\end{SCREEN}

\item {\dg\bf 1 一覧} を選択する。
\label{slctichiran}

\begin{SCREEN}
\verb+% + \CURSOR \\
{[拡張] \fbox{1} カッコ\,\,\, 2 計算\,\,\, 3 ギリシャ} \SCREENRIGHT{1/3} \\
\end{SCREEN}

\item {\dg\bf 1 カッコ} を選択する。

\begin{SCREEN}
\verb+% + \CURSOR \\
{[括弧] \fbox{（}\,\,\, ）\,\,\, 〔\,\,\, 〕\,\,\, ［\,\,\, 
］\,\,\, ｛\,\,\, ｝\,\,\, 〈\,\,\, 〉} \SCREENRIGHT{1/10} \\
\end{SCREEN}

%\item (\ref{slctichiran})で、{\dg\bf 2 計算} を選択する。
\item (b)で、{\dg\bf 2 計算} を選択する。

\begin{SCREEN}
\verb+% + \CURSOR \\
{[計算] \fbox{＋}\,\,\, −\,\,\, ±\,\,\, ×\,\,\, ÷\,\,\, ＝\,\,\, ≠\,\,\, 
＜\,\,\, ＞\,\,\, ≦\,\,\, ≧\,\,\, ∞\,\,\, ∴} \SCREENRIGHT{1/13} \\
\end{SCREEN}

%\item (\ref{initmenu})で、{\dg\bf 2 登録} を選択する。
\item (a)で、{\dg\bf 2 登録} を選択する。

\begin{SCREEN}
\verb+% + \CURSOR \\
{[拡張] \fbox{1} 登録\,\,\, 2 削除\,\,\, 3 辞書一覧} \SCREENRIGHT{1/3} \\
\end{SCREEN}

\end{enumerate}

\end{enumerate}
