Info file: skk.info,    -*-Text-*-
produced by `texinfo-format-buffer'
from filebuffer `*scratch*'
using `texinfmt.el' version 2.38 of 3 July 1998.


START-INFO-DIR-ENTRY
* SKK: (skk).         Simple Kana to Kanji conversion program
END-INFO-DIR-ENTRY



 Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

 Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

 Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the author.


File: skk.info, Node: Top, Next: はじめに, Prev: (dir), Up: (dir)

SKK
***

 (最終更新日: $Date: 2000/11/08 01:50:14 $)

 これは `SKK マニュアル' 第 1.5 版です。SKK のバージョン 10.62 に対応
しています。


* Menu:

* はじめに::
* インストール::
* はじめの設定::
* 基本的な使い方::
* 便利な応用機能::
* 辞書ツール::
* 旧バージョンからの変更点::
* 拡張アイディア::
* SKKメーリングリスト::
* SKKの入手方法::
* SKK関連ソフトウェア::
* 最新情報など::
* よくある質問とその回答(FAQ)::
* 事項索引::
* 変数索引::
* 関数索引::
* キー索引::



File: skk.info, Node: はじめに, Next: インストール, Prev: Top, Up: Top

はじめに
********

 SKK version 10 は高速で効率的な日本語入力環境を提供するシステムです。
GNU General Public License に従ったフリー・ソフトウェアとして配布され
ます。

 SKK 10 が動作を保証する Emacsen のバージョンは下記の通りです。

   - Emacs 19.28 以降をベースとした Mule 2.3 (Mule for Windows 1.21,
     1.22 を含む)
   - Emacs 20.2 以降 (Meadow 1.00 以降 を含む)
   - Mule 機能付きでコンパイルされた XEmacs 20.4 以降

 SKK は、Simple Kana to Kanji conversion program にちなんで名付けられ
ました。

 主な特徴は、次の通りです。

   * ローマ字入力による、文法的知識を用いない高速変換可能な日本語入力/変換。
   * 辞書に登録されていない単語の登録が簡単。
   * 個人辞書への単語の自動登録による変換の高ヒット。
   * マイナーモードとして実装されているので、メジャーモードにほとんど
     影響を与えない。つまり、Emacs との親和性が高い。
   * SKK 本体(Emacs Lisp) と辞書のみで動作(サーバは必須ではない)。辞書
     サーバがダウンしていても使用できる。
   * 辞書サーバを使うことで、Emacs の SKK 使用メモリを削減可能。
   * ディスク容量に応じて選べる辞書。
   * SKK と同様の操作で行える日本語インクリメンタルサーチ。
   * Emacs Lisp で書かれたプログラムを変換候補にできる。
   * 個人の設定により、ローマ字入力の代わりに T-Code、TUT-code による
     入力も可能。



File: skk.info, Node: インストール, Next: はじめの設定, Prev: はじめに, Up: Top

インストール
************

* Menu:

* APEL のインストール::
* SKK のインストール::
* 辞書の入手::



File: skk.info, Node: APEL のインストール, Next: SKK のインストール, Prev: インストール, Up: インストール

APEL のインストール
===================

 SKK 10 は種々の Emacsen での動作を可能とするため APEL (A Portable
Emacs Library) を使用します。SKK 10 は APEL 9.22 での動作を確認してい
ますが、APEL は Emacs/XEmacs のバージョンアップに合わせて日進月歩なの
で、できるだけ新しいバージョンをインストールすることをお勧めします。

     `ftp://ftp.jpl.org/pub/elisp/apel/'

もしくは

     `ftp://ftp.m17n.org/pub/mule/apel/'

より入手できます。

 SKK のインストールをする前に APEL をインストールして下さい。

     *Note APEL: Q.2-4 APEL って何ですか？.



File: skk.info, Node: SKK のインストール, Next: 辞書の入手, Prev: APEL のインストール, Up: インストール

SKK のインストール
==================

 APEL をインストールしたら、 SKK をインストールしましょう。ここでは、
UNIX 上で make コマンドが用意されている場合を想定しています (1) 。


 まず、tar と gzip コマンドを使用して、 SKK を書庫
(`skk-VERSION.tar.gz') から取り出します。

     % gzip -cd skk-VERSION.tar.gz | tar xvf -

SKK のトップディレクトリ(`ChangeLog' や `Makefile' のあるディレクトリ)
をカレントディレクトリにします。

     % make what-where

と実行すると、どのディレクトリにインストールされるか確認できます。ここ
で、SKK のインストール先ディレクトリが表示されない場合は、APEL のPATH 
を `SKK-CFG' に記入します。`SKK-CFG' に設定方法が書いてあります。また、
インストール先ディレクトリを変更したい場合も、`SKK-CFG'ファイルを編集
することにより指定できます。

 つぎにスーパーユーザになって、

     % make install

とすると、実際にインストールされます。特定の Emacs を指定する場合は、

     % make install EMACS=mule

とすると指定できます。

 XEmacs でパッケージとしてインストールする場合は、

     % make what-where-package

を実行すると、パッケージのインストール先が表示されます。

     % make install-packege

を実行すると実際にインストールします。

--------- Footnotes ---------

(1)  Windows 環境では、make.bat を使用することにより、同様の操作で
インストールできます。 `READMEs/README.win' ファイルを参照して下さ
い。cygwin 環境をインストールされている方は make コマンドが使用できるの
で、ここの説明がそのまま当てはまります。



File: skk.info, Node: 辞書の入手, Prev: SKK のインストール, Up: インストール

辞書の入手
==========

 SKK を使用するには、辞書が必要です。辞書は、 SKK 本体(elisp) には付属
しません。別途、入手します。 CVS (*Note CVSによるSKKの取得::)もしくは、
WWW (`http://openlab.ring.gr.jp/skk/dic.html') から入手できます。

 用意されている辞書は、従来からの

   - SKK-JISYO.S : S 辞書(主に単漢字が登録。最小限必要な語を収録)
   - SKK-JISYO.M : M 辞書(普通に使う分には足りる程度)
   - SKK-JISYO.L : L 辞書(あらゆる単語を収録)

に加えて、

   - zipcode           : 郵便番号辞書
   - SKK-JISYO.JIS2    : JIS Level 2 辞書
   - SKK-JISYO.public+ : public+ 辞書
   - SKK-JISYO.JIS3_4  : JIS Level 3, 4 辞書
   - SKK-JISYO.edict   : edict 辞書(英和辞書)
   - SKK-JISYO.wrong : 間違い辞書(S, M, L 辞書に既に登録されていたが、
     間違いであったので削除された単語を収録)

が用意されています (1) 。

--------- Footnotes ---------

(1)  辞書の著作権について、GPL 2 とは異なるものがあります。
辞書ディレクトリの `READMEs/committers.txt' を参照して下さい



File: skk.info, Node: はじめの設定, Next: 基本的な使い方, Prev: インストール, Up: Top

はじめの設定
************

 SKK を使い始める前に、あなたの `~/.emacs' に設定を書かなければなりま
せん。ここではその方法を説明します。

* Menu:

* 最も基本的な設定::
* インクリメント検索の設定::
* 古い設定のチェック::
* 辞書サーバを使いたいときの設定::



File: skk.info, Node: 最も基本的な設定, Next: インクリメント検索の設定, Prev: はじめの設定, Up: はじめの設定

最も基本的な設定
================

 以下のように `.emacs' に書きます。

     (require 'skk-autoloads)
     (global-set-key "\C-x\C-j" 'skk-mode)
     (global-set-key "\C-xj" 'skk-auto-fill-mode)
     (global-set-key "\C-xt" 'skk-tutorial)

ただしXEmacs でパッケージインストールをした場合は、

     (require 'skk-autoloads)

の記述は不要です。

 サーバを使わない場合は、更に辞書ファイルを指定する必要があります。

     (setq skk-large-jisyo "/your/path/to/SKK-JISYO.L")

この場合 `skk-large-jisyo' はEmacsのバッファに取り込んで使用するので、
これによりメモリが圧迫されすぎる場合は、上記の`SKK-JISYO.L' を
`SKK-JISYO.S' または `SKK-JISYO.M' に変更します。



File: skk.info, Node: インクリメント検索の設定, Next: 古い設定のチェック, Prev: 最も基本的な設定, Up: はじめの設定

インクリメント検索の設定
========================

 以下のように `.emacs' に書きます。

     (add-hook 'isearch-mode-hook
               (function (lambda ()
                           (and (boundp 'skk-mode) skk-mode
                                (skk-isearch-mode-setup)))))

     (add-hook 'isearch-mode-end-hook
     	  (function
     	   (lambda ()
     	     (and (boundp 'skk-mode) skk-mode (skk-isearch-mode-cleanup))
     	     (and (boundp 'skk-mode-invoked) skk-mode-invoked
     		  (skk-set-cursor-properly)))))

上記の設定では、SKKが起動されているときのみ、付属のインクリメンタルサー
チを使用します。常に付属のインクリメンタルサーチを使用したかったら上記
の`isearch-mode-hook'、 `isearch-mode-end-hook' の設定を下記の設定に変
更します。

     (add-hook 'isearch-mode-hook 'skk-isearch-mode-setup)
     (add-hook 'isearch-mode-end-hook
          	  (function (lambda ()
     		      (skk-isearch-mode-cleanup)
     		      (and skk-mode-invoked (skk-set-cursor-properly)))))

 入力モードに応じカーソル色を変化させる機能を使わないのであれば
`isearch-mode-end-hook' の値はそれぞれ下記のようになります。

     (add-hook 'isearch-mode-end-hook
     	  (function
     	   (lambda ()
     	     (and (boundp 'skk-mode) skk-mode (skk-isearch-mode-cleanup)))))

     (add-hook 'isearch-mode-end-hook 'skk-isearch-mode-cleanup)

*Note 入力モードを示すカーソル色に関する設定::.



File: skk.info, Node: 古い設定のチェック, Next: 辞書サーバを使いたいときの設定, Prev: インクリメント検索の設定, Up: はじめの設定

古い設定のチェック
==================

`skk-obsolete-check-all-files'

     このコマンドは、各個人の設定ファイルの古い設定を調べて、可能な限
     り新しい設定に書換えます。 SKK 9 と比較して、変数名、関数名が大幅
     に変更されたので、

          `skk-obsolete.el'

     をロードし、

          M-x skk-obsolete-check-all-files

     を実行することを強くお勧めします。



File: skk.info, Node: 辞書サーバを使いたいときの設定, Prev: 古い設定のチェック, Up: はじめの設定

辞書サーバを使いたいときの設定
==============================

 辞書サーバを使いたいときは、`.emacs'や`.skk' で以下のように設定します。 
(1)

     (setq skk-server-host "hogehoge")
     (setq skk-server-prog "/your/path/to/skkserv")
     (setq skk-server-jisyo "/your/path/to/SKK-JISYO.L")

`skk-server-host'
     辞書サーバを走らせるホスト名、または IP アドレス。
`skk-server-prog'
     辞書サーバプログラム(フルパスで指定する)。
`skk-server-jisyo'
     サーバに渡す辞書(フルパスで指定する)。

この設定は、環境変数を利用して下記のようにすることもできます。

Bシェルの場合 (sh, bash, ksh, zsh など)

          export SKKSERVER=hogehoge
          export SKKSERV=/your/path/to/skkserv
          export SKK_JISYO=/your/path/to/SKK-JISYO.L

Cシェルの場合 (csh, tcsh など)

          setenv SKKSERVER hogehoge
          setenv SKKSERV /your/path/to/skkserv
          setenv SKK_JISYO /your/path/to/SKK-JISYO.L

--------- Footnotes ---------

 (1) 辞書サーバを使ってみたい場合は

     *Note dbskkd-cdb::.

を参照してください。



File: skk.info, Node: 基本的な使い方, Next: 便利な応用機能, Prev: はじめの設定, Up: Top

基本的な使い方
**************

 本章では、SKKの基本的な使用方法を説明します。これを読めば、とりあえず
SKK を使ってみるには充分です。

 SKK を使った入力方法に慣れるには、付属の*Note チュートリアル::プログ
ラムが最適なので、お試しください。

 なお、次章の「便利な応用機能とユーザーオプション」は、興味のある個所
のみをピックアップしてお読みになるのがいいでしょう。

* Menu:

* 起動と終了::
* 入力モード::                  文字種別毎のモード
* 変換モード::                  辞書を用いた変換の状態毎のモード
* インクリメンタル・サーチ::
* チュートリアル::



File: skk.info, Node: 起動と終了, Next: 入力モード, Prev: 基本的な使い方, Up: 基本的な使い方

起動と終了
==========

 SKK モードに入るには `C-x C-j'、もしくは `C-x j' とタイプします。マイ
ナーモードの表示には、下記のように `かな' が追加されます。 (1)

     MULE/7bit----- Buffer-name (Major-mode かな)---

また、カーソルの色が変化します (2) 。

 `C-x C-j'、もしくは `C-x j' を再度タイプすることで、SKK モードに入る
前のモードに戻り、カーソル色も元に戻ります。 (3)

* Menu:

* SKKオートフィルモード::
* 辞書の保存::

--------- Footnotes ---------

(1)  次の設定をしているときはモードラインの左端に追加されます。

     (setq skk-status-indicator 'left)


 (2) カラーディスプレイを使用し、カラー表示をサポートしているWindow
System 下で対応する Emacs を使用している場合。

*Note 入力モードを示すカーソル色に関する設定::.

 (3) 但し、「アスキーモード」を利用すれば SKK モードから抜ける必要はほ
とんどありません。

*Note アスキーモード: 入力モード.



File: skk.info, Node: SKKオートフィルモード, Next: 辞書の保存, Prev: 起動と終了, Up: 起動と終了

SKKオートフィルモード
---------------------

 `C-x j' とタイプすれば、SKK モードに入ると同時にオートフィルモード 
(1) をオンにします。

 既にオートフィルモードがオンになっているバッファで `C-x j'をタイプす
ると、オートフィルモードは逆にオフになるので注意してください。

 バッファの状態にかかわらず強制的にオートフィルモード付で SKK モードに
入りたい場合は、`M-1 C-x j' や `C-u C-x j' などとタイプし、このコマン
ドに正の引数を渡します (2) 。

オートフィルモードをオフにし、かつ SKK モードも終了したい場合には
`M-- C-x j' や `C-u -1 C-x j' などとタイプし、このコマン
ドに負の引数を渡します。

--------- Footnotes ---------

(1)  *Note Auto Fill: (emacs)Auto Fill.

 (2) 「引数」については、

     *Note Arguments: (emacs)Arguments.

を参照のこと。



File: skk.info, Node: 辞書の保存, Prev: SKKオートフィルモード, Up: 起動と終了

辞書の保存
----------

 `C-x C-c' で Emacs を終了しようとすると `~/.skk-jisyo' に個人辞書の内
容を自動的に保存します。

     *Note 個人辞書: 辞書の種別.

 `~/.skk-jisyo.BAK' に保存を行なう前の辞書が退避されます。

 `~/.skk-jisyo' や `~/.skk-jisyo.BAK' のファイル名を変更したければそれ
ぞれ `skk-jisyo' や `skk-backup-jisyo' の値を変更して下さい。

`skk-kill-emacs-without-saving-jisyo'

     個人辞書を保存せず Emacs を終了させたい場合には、

          M-x skk-kill-emacs-without-saving-jisyo

     とタイプします。

 個人辞書の保存動作について更に詳しくは、

     *Note 個人辞書の保存動作::.

を参照してください。




File: skk.info, Node: 入力モード, Next: 変換モード, Prev: 基本的な使い方, Up: 基本的な使い方

入力モード
==========

 SKK モードは、文字種類による 4 種類の「入力モード」と、辞書を用いた変
換の状態により 3 つの「変換モード」を持ちます。

 入力モードは、文字種別により

   「かなモード」
   「カナモード」
   「全英モード」
   「アスキーモード」

 の4種類に分類されます。

* Menu:

* 入力モードの説明::
* 入力モードを切り替えるキー::



File: skk.info, Node: 入力モードの説明, Next: 入力モードを切り替えるキー, Prev: 入力モード, Up: 入力モード

入力モードの説明
----------------


「かなモード」

        ASCII の小文字をひらがなに変換するモード。
        マイナーモードの表示: `かな'
        カーソル色: 赤系

「カナモード」

        ASCII 小文字をカタカナに変換するモード。
        マイナーモードの表示: `カナ'
        カーソル色: 緑系

「全英モード」

        ASCII 小文字、大文字を全角アルファベットに変換するモード。
        マイナーモードの表示: `全英'
        カーソル色: 黄系

「アスキーモード」

        文字変換を行なわないモード。入力されたキーは `C-j' を除いて通
          常のEmacsのコマンドとして解釈される。
        マイナーモードの表示: `SKK'
        カーソル色: 背景によりアイボリーかグレイ。

入力モードに伴なうカーソル色の変更方法については、

*Note 入力モードを示すカーソル色に関する設定::.

を参照してください。



File: skk.info, Node: 入力モードを切り替えるキー, Prev: 入力モードの説明, Up: 入力モード

入力モードを切り替えるキー
--------------------------


`q'
     「かなモード」、「カナモード」間をトグルする。

`l'
     「かなモード」または「カナモード」から「アスキーモード」へ。

`L'
     「かなモード」または「カナモード」から「全英モード」へ。

`C-j'
     「アスキーモード」または「全英モード」から「かなモード」へ。


 実際にはカナモードや全英モードで長時間入力を続けることはほとんどない
ので、かなモードのままでカナ文字や全英文字を入力する便法が用意されてい
ます。

     *Note 入力モードの一時変更::.



File: skk.info, Node: 変換モード, Next: インクリメンタル・サーチ, Prev: 入力モード, Up: 基本的な使い方

変換モード
==========

 変換モードは、次の 3 種類のいずれかです。


「■モード(確定入力モード)」

     あるキー入力に対応する文字列を、辞書を用いた文字変換を行なわずに
     直接バッファへ入力するモード。入力モードに応じてローマ字からひら
     がな、ローマ字からカタカナ、あるいはアスキー文字から全角アルファ
     ベットへの文字変換を行なう。

「▽モード」

     辞書変換の対象となる文字列、「見出し語」を入力するモード。

「▼モード」

     見出し語について、辞書変換を行うモード。

 また、▽モードの変種として"SKK abbrev mode"があり、▼モードのサブモー
ドとして、「辞書登録モード」があります。

* Menu:

* ■モード::                    辞書変換を行なわない確定入力のモード。
* ▽モード::                    辞書変換のため見出し語の入力を行なうモード。
* ▼モード::                    辞書変換を行なうモード。
* 辞書登録モード::              個人辞書への単語登録を行なうモード。



File: skk.info, Node: ■モード, Next: ▽モード, Prev: 変換モード, Up: 変換モード

■モード
--------

 確定入力モードを「■モード」と呼びます。■モードでは、あるキー入力に
対応した特定の文字列への変換を行なうだけで、辞書変換は行いません。
ASCII文字列から、入力モードに応じて、ひらがな、カタカナ、あるいは全角
アルファベットへの文字変換を行ないます。変換を行なうカレントバッファに
このモード特有のマークは表示されません。

 かなモード、カナモードで、かつ ■モードである場合、ディフォルトの入力
方法はいわゆるローマ字入力です。訓令式、ヘボン式のどちらによっても入力
することができます。主な注意点を以下に説明します。


   * `ん'は `n n' または `n '' で入力する。直後に `n'、`y' 以外の子音
     が続くときは `n' だけで入力できる。

   * 促音は、`c h o t t o' => `ちょっと'、`m o p p a r a'
     => `もっぱら'のように次の子音を重ねて入力する。

   * 促音や拗音(ひらがなの小文字)を単独で入力するときは、`x a'
     => `ぁ'、`x y a' => `ゃ'などのように 
     `x' を用いる。

   * 長音には、`-'を用いる。`-'=>`ー'。



File: skk.info, Node: ▽モード, Next: ▼モード, Prev: ■モード, Up: 変換モード

▽モード
--------

 「▽モード」では、辞書変換の対象となる文字列を入力します。かなモード、
もしくはカナモード (1) で、かつ、■モードであるときに、キー入力を大文
字で開始することで、▽モードに入ります。例えば、

     K a n j i

     ------ Buffer: foo ------
     ▽かんじ
     ------ Buffer: foo ------

のようにタイプすることで、▽モードに入り、続けて辞書変換の対象となる文
字列、「見出し語」を入力してゆくことができます。`▽'マークは、▽モード
であるという表示ですが、見出し語開始点を示す表示でもあります。

* Menu:

* 後から▽モードに入る方法::
* ▽モードを抜ける方法::

--------- Footnotes ---------

(1)  *Note かなモード、カナモード: 入力モード.



File: skk.info, Node: 後から▽モードに入る方法, Next: ▽モードを抜ける方法, Prev: ▽モード, Up: ▽モード

後から▽モードに入る方法
........................

 `K' の文字を大文字で入力し忘れた場合は、辞書変換の対象としたい文字列
の先頭までポイント (1) を戻し`Q'をタイプすることで▽モードに入ることが
できます。例えば、下記のように操作します (-!- の地点にカーソルがありま
す)。

     k a n j i

     ------ Buffer: foo ------
     かんじ-!-
     ------ Buffer: foo ------

     C-u 3 C-b, Q

     ------ Buffer: foo ------
     ▽-!-かんじ
     ------ Buffer: foo ------

     C-e

     ------ Buffer: foo ------
     ▽かんじ-!-
     ------ Buffer: foo ------

 `7がつ24にち' のように大文字から始めることができない文字列についても、
▽モードにしたい場合は `Q' をタイプし、▽モードにしてから `7がつ24にち' 
の文字列を入力します。なお、▽モードでは、文字列の間に空白を含めること
はできません (2) 。

--------- Footnotes ---------

(1)  *Note ポイント: (emacs)Point.

(2) これは、辞書の見出し語に空白を含めることができない制限からきていま
す。



File: skk.info, Node: ▽モードを抜ける方法, Prev: 後から▽モードに入る方法, Up: ▽モード

▽モードを抜ける方法
....................

 誤って▽モードに入ってしまったときは `C-j' とタイプし、■モードに戻る
か `C-g' とタイプし▽モードで辞書変換と対象となっている文字列を消去す
るかの 2 通りの処理の方法があります。具体例を下記に示します。

     K a n j i

     ------ Buffer: foo ------
     ▽かんじ
     ------ Buffer: foo ------

     C-j

     ------ Buffer: foo ------
     かんじ
     ------ Buffer: foo ------

あるいは、

     K a n j i

     ------ Buffer: foo ------
     ▽かんじ
     ------ Buffer: foo ------

     C-g

     ------ Buffer: foo ------

     ------ Buffer: foo ------



File: skk.info, Node: ▼モード, Next: 辞書登録モード, Prev: ▽モード, Up: 変換モード

▼モード
--------

 「▼モード」 では、▽モードで入力した見出し語を、辞書に従い変換する作
業を行ないます。▽モードで見出し語を入力した後 SPC をタイプすることで
▼モードに入ります。`▽' マークから SPC をタイプしたときのポイントまで
の文字列が見出し語として確定され、 `▽' マークは`▼' マークで置き換え
られ、この文字列が辞書の中で検索されます。

* Menu:

* 送り仮名が無い場合::
* 次候補・前候補::
* 送り仮名が有る場合::



File: skk.info, Node: 送り仮名が無い場合, Next: 次候補・前候補, Prev: ▼モード, Up: ▼モード

送り仮名が無い場合
..................

 仮に、辞書に

     かんじ /漢字/幹事/

というエントリ (1) を含むとして、例を示します。

     K a n j i

     ------ Buffer: foo ------
     ▽かんじ-!-
     ------ Buffer: foo ------

     SPC

     ------ Buffer: foo ------
     ▼漢字-!-
     ------ Buffer: foo ------

この例では、▽モードにおける `▽' マークからポイントまでの間の文字列`
かんじ' を辞書変換の対象文字列として確定し、それについて辞書内での検索
を行なっています。実際の変換動作では、候補部分がハイライト表示されます 
(2) 。

 `漢字' が求める語である場合は `C-j' をタイプすれば、この変換が確定し
ます。ハイライト表示も `▼' マークも消えます。

 また `C-j' をタイプせずに、新たな確定入力を続けて行なうか、または新た
な変換を開始すると、直前の変換は自動的に確定されます。これを 「暗黙の
確定」 と呼んでいます。副作用として確定を伴なうキーは、印字可能な文字
全てと RET です。ただし、

     *Note 暗黙の確定のタイミング::.

を参照してください。

--------- Footnotes ---------

(1)  本マニュアルでは、見出し語と候補群を合わせた一行を「エントリ」
と呼びます。詳細は、*Note 送りありエントリと送りなしエントリ::を参照してく
ださい。

(2) ハイライト表示はFSF EmacsのOverlays、XEmacs のextentの機能を使用し
ています。



File: skk.info, Node: 次候補・前候補, Next: 送り仮名が有る場合, Prev: 送り仮名が無い場合, Up: ▼モード

次候補・前候補
..............

 求めるものがすぐに出なければ、更に続けて SPC をタイプすることで、次候
補を検索します。

     ------ Buffer: foo ------
     ▼漢字
     ------ Buffer: foo ------

     SPC

     ------ Buffer: foo ------
     ▼幹事
     ------ Buffer: foo ------

 候補が 5 つ以上あるときは 5 番目以降の候補は 7 つずつまとめてエコーエ
リアに表示されます。例えば、辞書が

     きょ /距/巨/居/裾/嘘/拒/拠/虚/挙/許/渠/据/去/

というエントリを含むときに `K y o' の後に SPC を 5 回続けて打てば、

     -------------------- Echo Area --------------------
     A:嘘  S:拒  D:拠  F:虚  J:挙  K:許  L:渠  [残り 2]
     -------------------- Echo Area --------------------

がエコーエリア (1) に表示されます。ここで仮に`許' を選択したければ、 
`k' を入力します。

 `A', `S', `D', `F', `J', `K', `L' の各文字は、押し易さを考慮してキー
ボードのホームポジションから横方向に一直線に配置されているキーが選ばれ
ています。また、候補の選択のために押すキーは、大文字、小文字のいずれで
も構いません。候補の選択に用いるキーの変更については、

     *Note 候補の選択に用いるキー::.

を参照してください。

 SPC を連打してしまい、誤って求める候補を通過してしまったときは`x' に
より前候補/前候補群に戻ることができます (2) 。

 候補を次々と探しても求めるものがなければ、自動的に辞書登録モードにな
ります(辞書登録モードは▼モードのサブモードです) 。*Note 辞書登録モー
ド::にて説明します。

--------- Footnotes ---------

(1)  エコーエリアとミニバッファは視覚的には同一の場所にありますが、エコー
エリアが単にユーザーへのメッセージを表示するのみであるのに対し、ミニバッ
ファは独立のバッファとして機能する点が違います。

(2) `x' は小文字で入力する必要があります



File: skk.info, Node: 送り仮名が有る場合, Next: 辞書登録モード, Prev: 次候補・前候補, Up: ▼モード

送り仮名が有る場合
..................

 次に送り仮名のある単語について説明します。

 `動く' を変換により求めたいときは `U g o K u' のように、まず ▽モード 
に入るために `U' を大文字で入力し、次に送り仮名の開始を SKKに教えるた
めに `K' を大文字で入力します。送り仮名の `K' をタイプした時点で SPC 
をタイプすることなく、▼モード に入り辞書変換が行なわれます。

 送り仮名の入力時、ローマ字プレフィックスが挿入された瞬間に、プレフィッ
クスの直前に `*' を一瞬挿入し、送り仮名の開始時点を明示します。プレフィッ
クスに続くキー入力で、かな文字が完成した時点で`*'は消えます。

 キー入力を分解して追いながらもう少し詳しく説明します。

     U g o

     ------ Buffer: foo ------
     ▽うご
     ------ Buffer: foo ------

     K

     ------ Buffer: foo ------
     ▽うご*k
     ------ Buffer: foo ------

     u

     ------ Buffer: foo ------
     ▼動く
     ------ Buffer: foo ------

 SKK ではこのように、送り仮名の開始地点をユーザーが明示的に入力するの
で、システム側で送り仮名を分解する必要がありません。これにより、高速で
ヒット効率が高い変換が可能になります。

     *Note 送り仮名の自動処理::.

 但しサ変動詞の変換では、サ変動詞の語幹となる名詞を 「送りなし変換」 
(1) として変換し、その後 `する' を■モードで入力した方が効率が良くなり
ます。

     *Note サ変動詞の入力: サ変動詞の辞書登録に関する注意.

--------- Footnotes ---------

(1)  詳細は、*Note 送り仮名が無い場合::を参照してください。



File: skk.info, Node: 辞書登録モード, Prev: ▼モード, Up: 変換モード

辞書登録モード
--------------

 SKK には独立の辞書登録モードはありません。その代わり、辞書にない単語
についての変換を行なった場合に、自動的に辞書登録モードに入ります。例え
ば辞書に

     へんかんちゅう /変換中/

のエントリがない場合に、`変換中' を入力しようとして、`H e n
k a n ty u u SPC' とタイプすると、下記のように、カレントバッファ
は ▼モード のまま `へんかんちゅう' に対して変換ができない状態で休
止し、同時にミニバッファに `へんかんちゅう' というプロンプトが表示
されます。

     ------ Buffer: foo ------
     ▼へんかんちゅう
     ------ Buffer: foo ------

     ------ Minibuffer -------
     へんかんちゅう-!-
     ------ Minibuffer -------

* Menu:

* 送り仮名が無い場合の辞書登録::
* 送り仮名が有る場合の辞書登録::
* サ変動詞の辞書登録に関する注意::
* 再帰的辞書登録::
* 改行文字を含む辞書登録::



File: skk.info, Node: 送り仮名が無い場合の辞書登録, Next: 送り仮名が有る場合の辞書登録, Prev: 辞書登録モード, Up: 辞書登録モード

送り仮名が無い場合の辞書登録
............................

辞書登録モードでは、入力はミニバッファに対して行われます。仮に辞書に

     へんかん /変換/
     ちゅう /中/

のようなエントリがあるとして、ミニバッファで`変換中'の文字列を`変換'と
`中'とに分けて作ります。

     H e n k a n SPCT y u u SPC

     ------ Minibuffer -------
     へんかんちゅう 変換▼中
     ------ Minibuffer -------

ここで RET をタイプすれば `変換中' が個人辞書に登録され、辞書登録モー
ドは終了します (1) 。同時に、変換を行なっているカレントバッファには、`
変換中' が挿入され確定されます。

     *Note 個人辞書: 辞書の種別.

 辞書登録モードを抜けたいときは `C-g' をタイプするか、または何も登録せ
ず RET をタイプすると▽モードに戻ります。

--------- Footnotes ---------

(1)  ここでも暗黙の確定が行なわれるので `C-j' をタイプする必要
はありません。ただし、*Note ▼モードでのRET:: を参照してください。



File: skk.info, Node: 送り仮名が有る場合の辞書登録, Next: サ変動詞の辞書登録に関する注意, Prev: 送り仮名が無い場合の辞書登録, Up: 辞書登録モード

送り仮名が有る場合の辞書登録
............................

 送り仮名のある単語の登録では、ミニバッファで作る候補に送り仮名そのも
のを登録しないように注意しなければいけません。仮に辞書に

     うごk /動/

というエントリがないとして、例を挙げて説明します。

     U g o K u

     ------ Buffer: foo ------
     ▼うごく
     ------ Buffer: foo ------

     ------ Minibuffer -------
     うご*く-!-
     ------ Minibuffer -------

ミニバッファで辞書登録すべき文字列は、`動' だけで、送り仮名の`く' は含
めてはいけません。 `動く' を登録してしまうと、次に`U g o K u' とタイプ
したときに出力される候補が `動くく' になってしまいます。

     D o u SPC

     ------ Minibuffer -------
     うご*く 動-!-
     ------ Minibuffer -------

     RET

     ------ Buffer: foo ------
     動く
     ------ Buffer: foo ------



File: skk.info, Node: サ変動詞の辞書登録に関する注意, Next: 再帰的辞書登録, Prev: 送り仮名が有る場合の辞書登録, Up: 辞書登録モード

サ変動詞の辞書登録に関する注意,
...............................

 サ変動詞 (名詞の後に `する' を付けた形で構成される動詞) については、`
する' を送り仮名とした送りあり変換 (1) をしないで、`運動' と `する' と
分けて入力した方が効率が良くなります (2) 。

 例えば `運動する' は `U n d o u SPC s u r u' とタイプすることにより入
力できます。名詞から作られる形容詞等も同様です。

--------- Footnotes ---------

(1)  送り仮名を伴なう変換。詳しくは、*Note 送り仮名が有る場合::を
参照してください。

(2) 名詞とそのサ変動詞とを別々に辞書に持つと空間的な効率が悪いので、基
本的に、辞書がサ変動詞を送りありとして意識した作りとしていません。その
ため、`する' を送り仮名とした送りあり変換では、辞書に候補がなく辞
書登録モードに入ってしまう可能性が高いので、名詞として分解して入力する
ことをお勧めします。一方で、このように名詞に分解して入力することで、サ
変動詞になり得ない名詞が候補として出てくることもあるので (例えば 
`孝行する' という変換を行ないたい場合に `高校' が出てくるな
ど)、候補の絞り込みという点では必ずしも効率が良くありません。将来のバー
ジョンにおいてこの点を改善する方向で検討しています。詳しくは、*Note 拡 張アイディア:: を参照してください。



File: skk.info, Node: 再帰的辞書登録, Next: 改行文字を含む辞書登録, Prev: サ変動詞の辞書登録に関する注意, Up: 辞書登録モード

再帰的辞書登録
..............

 ミニバッファを再帰的に使い辞書登録を再帰的に行なうことができます。

 仮に辞書に

     さいきてき /再帰的/
     さいき /再帰/

のようなエントリがなく、かつ

     さい /再/
     き /帰/
     てき /的/

のようなエントリがあるとします。

 ここで `S a i k i t e k i SPC' とタイプすると、文字列 `さいきてき' に
対する候補を見つけられないので、ミニバッファに `さいきてき' というプロ
ンプトを表示して辞書登録モードに入ります。

 `さいきてき' に対する辞書エントリを作るため `S a i k i SPC'とタイプす
ると、更にこの候補も見つけられないので、ミニバッファに`さいき' という
プロンプトを表示して、再帰的に `さいき' の辞書登録モードに入るます。

 `S a i SPCK i SPC'とタイプすると、ミニバッファは、

     ------ Minibuffer -------
     さいき 再▼帰
     ------ Minibuffer -------

となります。ここで RET をタイプすると、個人辞書には

     さいき /再帰/

というエントリが登録され、ミニバッファは `さいきてき' の辞書登録モード
に戻り、プロンプトは `さいきてき' となります。

 今度は `再帰' が変換可能なので `S a i k i SPCT e k i SPC' とタイプす
ると、

     ------ Minibuffer -------
     さいきてき 再帰▼的
     ------ Minibuffer -------

となります。ここで RET をタイプすることで、`さいきてき' の辞書登録モー
ドから抜け、個人辞書に

     さいきてき /再帰的/

というエントリが登録されます。カレントバッファのポイントには、`再帰的'
が挿入されます。



File: skk.info, Node: 改行文字を含む辞書登録, Prev: 再帰的辞書登録, Up: 辞書登録モード

改行文字を含む辞書登録
......................

 改行文字を含む文字列を辞書に登録するには、辞書登録モードで改行文字を
`C-q C-j' により入力します。例えば、

     〒980
     仙台市青葉区片平2-1-1
     東北大学電気通信研究所

を辞書に登録するには、辞書登録モードで、

     `〒980',
     C-q C-j,
     `仙台市青葉区片平2-1-1',
     C-q C-j,
     `東北大学電気通信研究所',
     RET

と入力します。



File: skk.info, Node: インクリメンタル・サーチ, Next: チュートリアル, Prev: 変換モード, Up: 基本的な使い方

インクリメンタル・サーチ
========================

 SKK では、専用のインクリメンタル・サーチプログラムを Emacs 添付の
isearch.el のラッパーとして実装しているため、日本語の文字列についての
インクリメンタル・サーチをアスキー文字と同様の操作で行なうことができま
す。

* Menu:

* skk-isearchの操作性::
* skk-isearchと入力モード::



File: skk.info, Node: skk-isearchの操作性, Next: skk-isearchと入力モード, Prev: インクリメンタル・サーチ, Up: インクリメンタル・サーチ

skk-isearchの操作性
-------------------

 大部分の動作は、オリジナルのインクリメンタル・サーチのもののままです
から、オリジナルのインクリメンタル・サーチのコマンド (1) やユーザー変
数でのカスタマイズ (2) もそのまま利用できます。

 オリジナルのインクリメンタル・サーチについては、

     *Note Incremental Search: (emacs)Incremental Search.

を参照してください。

 インクリメンタル・サーチ中の入力方法は、通常のバッファにおける各入力
モード、変換モードでの入力方法と同一です。

 `C-s' や `C-r'、あるいは `M-C-s' や `M-C-r' でインクリメンタル・サー
チを起動すると、インクリメンタル・サーチを起動したバッファの入力モード
と同一の入力モードで、キーとなる文字の入力が可能となります。

--------- Footnotes ---------

(1)  `M-y' の `isearch-yank-kill' や `M-p' の
`isearch-ring-retreat', `M-n' の `isearch-ring-advance' など

(2) `search-highlight' など



File: skk.info, Node: skk-isearchと入力モード, Prev: skk-isearchの操作性, Up: インクリメンタル・サーチ

skk-isearchと入力モード
-----------------------

 入力モードに合わせて、インクリメンタル・サーチのプロンプトが表示され
ます。プロンプトの種類は、以下の5つです。


I-search: [aa]
     アスキーモード

I-search: [か]
     かなモード

I-search: [カ]
     カナモード

I-search: [英]
     全英モード

I-search: [--]
     インクリメンタル・サーチモードで `C-x C-j' などをタイプしてSKKを
     終了した場合は、このプロンプトが表示される。




File: skk.info, Node: チュートリアル, Prev: インクリメンタル・サーチ, Up: 基本的な使い方

チュートリアル
==============

 SKK には、チュートリアルが附属しています。チュートリアルでは、 SKK の
基本的な操作方法を学習できます。`M-x skk-tutorial' で実行します。チュー
トリアルは、日本語(`Japanese')と英語(`English')が用意されています。英
語を選択する場合は、`C-u M-x skk-tutorial [RET] English [RET]' を実行
します。

 チュートリアルファイルが、標準の場所にない場合は、 `.emacs' で

       (setq skk-tut-file "a:/user/local/share/skk/SKK.tut")

 と書くことにより、指定したチュートリアルファイルを使用させることがで
きます。英語のチュートリアルファイルは、 `skk-tut-file' に `.E'が付い
たファイル名です。この場合であれば、
`a:/user/local/share/skk/SKK.tut.E' になります。




File: skk.info, Node: 便利な応用機能, Next: 辞書ツール, Prev: 基本的な使い方, Up: Top

便利な応用機能
**************

* Menu:

* 予備知識::                    応用機能を使いこなすために。
* 入力モードの一時変更::        使用頻度の低い入力モードを一時的に利用する。
* ■モードにおける文字入力::    かな/カナ/全英モードでの文字入力の設定。
* ポイントを戻して▽モードへ::
* 確定変換とその取り消し::      確定操作なしに確定する変換方法とその取り消し。
* 確定アンドゥ::                候補の選択ミスに対する取り消し操作。
* 見出し語関連::                変換のキーとなる語の処理について。
* 送り仮名関連::                送り仮名の処理について。
* 自動変換開始::                SPC を押さずに変換開始。
* 特殊変換::                    ちょっと変った便利な変換方法。
* 接頭辞・接尾辞::              接頭辞・接尾辞を指定して候補を絞り込む。
* 暗黙の確定のタイミング::      変換の後、いつ確定するか。
* 領域一括変換::                スパッと領域一括変換。
* 漢字コード関連::              漢字コードにまつわる機能。
* ▼モードの特殊キー::          キーの動作、あるいはキー定義変更。
* 辞書関連::                    辞書にまつわる機能。
* SKK 以外のツールを用いた辞書変換::
* 飾りつけ::                    様々な表示の設定。
* VIP/VIPERとの併用::
* I-search関連::                インクリメンタル・サーチにまつわる機能。
* skk-init-fileのコンパイル::   設定ファイルの自動バイトコンパイル。
* picture-modeとの併用::        picture-mode との併用の際の問題点。
* サーバ関連::



File: skk.info, Node: 予備知識, Next: 入力モードの一時変更, Prev: 便利な応用機能, Up: 便利な応用機能

予備知識
========

 本章では、応用機能とユーザーオプションについて述べています。それらを
理解するために必要な事柄について、本節で詳しく説明します。

* Menu:

* ファイル構成::
* ユーザーオプションの設定方法::
* 辞書の形式::                  辞書の形式と構成。
* 辞書に関する設定::            検索対象と検索順序の設定。



File: skk.info, Node: ファイル構成, Next: ユーザーオプションの設定方法, Prev: 予備知識, Up: 予備知識

ファイル構成
------------

 SKK バージョン 10 では、応用機能を提供するプログラムのほとんどを
`skk.el' とは別のファイルに収めています。これらは、必要に応じオートロー
ドするように設計されています。各応用機能の概略と該当のファイル名につい
て説明します。


`skk-auto.el'

     送り仮名の自動処理を行なうプログラムを集めたファイル。

     *Note 送り仮名の自動処理::.

`skk-autoloads.el'

     オートロードの設定を記述したファイル。XEmacs で SKK をパッケージ
     としてインストールした場合は使用しない。

`skk-comp.el'

     見出し語の補完を行なうプログラムを集めたファイル。

     *Note 見出し語の補完::.

`skk-cursor.el'

     カーソルの色を制御するプログラムを集めたファイル。

`skk-develop.el'

     バクレポートのメールバッファを用意するプログラムファイル。

`skk-foreword.el'

     他のファイルで共通して使用するマクロなどを中心にまとめたファイル。
     各ファイルの冒頭部分に、あまりユーザーに興味がないものが並んでい
     たのでは、ユーザーフレンドリーではないので、このファイルに集中さ
     せる仕様となっている。

`skk-gadget.el'

     プログラム実行変換を行なうプログラムを集めたファイル。

     *Note プログラム実行変換::.

`skk-isearch.el'

     SKK を併用したインクリメンタリサーチ機能を提供するファイル。

     *Note I-search関連::.

`skk-kakasi.el'

     KAKASI インターフェイスプログラムを集めたファイル。

     *Note 領域一括変換::.  *Note KAKASI::.

`skk-kcode.el'

     漢字コードまたはメニューによる文字入力を行なうプログラムを集めた
     ファイル。

     *Note 漢字コードまたはメニューによる文字入力::.

`skk-leim.el'

     LEIM 関連プログラムファイル。

`skk-look.el'

     look インターフェイスプログラムを集めたファイル。

`skk-lookup.el'

     Lookup で検索できる辞書を使って単語の候補を出力するプログラム。

`skk-num.el'

     数値変換を行なうプログラムを集めたファイル。

     *Note 数値変換::.

`skk-obsolete.el'

     `.emacs' や `.skk' などのユーザー設定ファイル中の古い設定 (変数、
     関数名など)の修正支援プログラム。

`skk-server.el'

     SKK サーバインターフェイスプログラムを集めたファイル。

     *Note サーバ関連::.

`skk-tut.el'

     SKK チュートリアルプログラム。

`skk-vars.el'

     古い SKK 10 をダンプした XEmacs (XEmacs 20.4 以前) で SKK 10 を動
     かすためのダミーファイル。

`skk-viper.el'

     VIPER インターフェイスプログラムを集めたファイル。


 なお、Elibより `queue-m.el' ファイルを収録しています。



File: skk.info, Node: ユーザーオプションの設定方法, Next: 辞書の形式, Prev: ファイル構成, Up: 予備知識

ユーザーオプションの設定方法
----------------------------

 SKK のカスタマイズは、`~/.emacs' あるいは `~/.skk' に記述します。また、
各ファイルの提供するフックも利用します。上記のファイルやフックを利用し
た設定がいつ有効になるのか、という点についてここで説明します (1) 。



`.emacs'

     Emacsを起動したときに一度だけ読みこまれます。

     *Note .emacs: (emacs)Init File.

`.skk'

     SKK を起動した最初の一度だけ読みこまれます。ファイル名の既定値は、
     OS の種類により異なりますが、実際は Emacsの関数
     `convert-standard-filename' により加工されます。`~/.skk' のファイ
     ル名は変数 `skk-init-file' で変更することができます。また、SKK に
     はこのファイルを自動的にバイトコンパイルする機能があります。詳細
     は、

          *Note skk-init-fileのコンパイル::.

     を参照してください。



`skk-mode-hook'

     `C-x C-j' と入力して SKK モードに入る度に呼ばれます。主にバッファ
     ローカルの設定などを行ないます。

`skk-auto-fill-mode-hook'

     `C-x j' と入力してオートフィルモード付きで SKK モードに入る度に呼
     ばれます。主にバッファローカルの設定などを行ないます。

`skk-load-hook'

     `skk.el' の読みこみを完了した時点で呼ばれます。`.skk' は SKKモー
     ドを起動しなければ読みこまれないのに対し、このフックは、`skk.el' 
     を読みこんたら SKK モードを起動しなくとも呼ばれます。

`skk-auto-load-hook'
`skk-comp-load-hook'
`skk-gadget-load-hook'
`skk-kakasi-load-hook'
`skk-kcode-load-hook'
`skk-num-load-hook'
`skk-server-load-hook'
`skk-viper-load-hook'

     `skk-auto.el', `skk-comp.el', `skk-gadget.el', `skk-kakasi.el',
     `skk-kcode.el', `skk-num.el', `skk-server.el', `skk-viper.el' の
     各ファイルの読みこみが完了した直後に呼ばれるフック。


 `load-hook' が提供されていないプログラムであっても、ロード後に何らか
の設定を行ないたい場合は、関数 `eval-after-load' を使用します。例えば、

     (eval-after-load "skk-look"
       '(
         ...
         ))

のように記述します。

--------- Footnotes ---------

(1)  以前のバージョンでは、どのようなカスタマイズが行なわれている場
合でもチュートリアル使用時に標準設定に戻す目的で、変数の宣言に
`defconst' を使用していたので、全てのカスタマイズは `~/.skk'
で行なう必要がありましたが、SKK 10 では、`defcustom' を使用した宣言
を行なっているので、この制限はなくなりました。



File: skk.info, Node: 辞書の形式, Next: 辞書に関する設定, Prev: ユーザーオプションの設定方法, Up: 予備知識

辞書の形式
----------

 ここでは SKK 用辞書の形式について詳しく説明します。

* Menu:

* 辞書の種別::
* 送りありエントリと送りなしエントリ::
* 送りありエントリのブロック形式::
* エントリの配列::



File: skk.info, Node: 辞書の種別, Next: 送りありエントリと送りなしエントリ, Prev: 辞書の形式, Up: 辞書の形式

辞書の種別
..........

 辞書の種別は大きく分けて「共有辞書」と「個人辞書」の 2 つがあります。


共有辞書

     付属の `SKK-JISYO.S' (「S 辞書」), `SKK-JISYO.M' (「M辞書」),
     `SKK-JISYO.L' (「L 辞書」) などがあります。通常、個人辞書よりもサ
     イズが大きく、省資源の面からユーザー間で共有して参照されます。ユー
     ザーの変換により内容が書き替えられることはありません。

個人辞書

     変数 `skk-jisyo' で指定されるファイル。SKKを一番最初に使い始めた
     ときにホームディレクトリに自動的に作られます。その後の使用により
     日々刻々とエントリが追加され、更新されていきます。

`skk-initial-search-jisyo', `skk-kakutei-jisyo'

     これらは共有辞書、個人辞書という区分のいずれにも属しません。これ
     らは個人毎に持つものを使用するか、ユーザー間で共有しているものを
     使用します。その性格から、辞書内容の更新は行なわれず、参照のみ行
     なわれます。また使用目的から、通常は小さい辞書を使用します。


 個人辞書、`skk-initial-search-jisyo', `skk-kakutei-jisyo' はEmacs の
バッファに読み込んで検索を行ないます。共有辞書は設定により Emacsのバッ
ファに読み込んで使用するか、またはサーバ経由で使用します。



File: skk.info, Node: 送りありエントリと送りなしエントリ, Next: 送りありエントリのブロック形式, Prev: 辞書の種別, Up: 辞書の形式

送りありエントリと送りなしエントリ
..................................

 以下は個人辞書の一例です。

     ;; okuri-ari entries.
     たとe /例/[え/例/]/
     もt /持/[つ/持/]/[って/持/]/[た/持/]/[て/持/]/[ち/持/]/[と/持/]/
     たすk /助/[け/助/]/
     うごk /動/[く/動/]/[か/動/]/[け/動/]/[き/動/]/[こ/動/]/
     ふくm /含/[め/含/]/[む/含/]/[ま/含/]/[み/含/]/[も/含/]/
     ...
     ;; okuri-nasi entries.
     てん /点/・/天/
     ひつよう /必要/
     さくじょ /削除/
     へんこう /変更/
     じゅんじょ /順序/
     ぐん /群/郡/
     こうほ /候補/
     いち /位置/一/壱/
     ...

`てん /点/・/天/' を例にして説明します。これは `てん' が見出し
語であり、その候補が、`点'、`・'、`天' です。候補はそれぞ
れ、`/' によって区切られています。SKK では、見出し語と候補群を合わ
せた `てん /点/・ /天/' の一行を「エントリ」と呼びます。

 辞書は単純なテキストファイルで、必ず下記の 2 つの行を持っています。

     ;; okuri-ari entries.
     ;; okuri-nasi entries.

この 2 つの行は、それぞれ送り仮名あり、送り仮名なしのエントリの開始地
点を示すマークです。 `;; okuri-ari entries.' までの行で `;' を行頭に持
つ行はコメント行として無視されます。`;; okuri-ari entries.'  以降にコ
メント行を含むことはできません。

`;; okuri-ari entries.' と `;; okuri-nasi entries.' の
間に囲まれた上半分の部分が送り仮名ありのエントリです。これを「送りあ
りエントリ」と呼びます。
`;; okuri-nasi entries.'以下の下半分部分が送り仮名なしのエント
リです。これを「送りなしエントリ」と呼びます。

 送りありエントリを検索する変換を「送りあり変換」、送りなしエントリを
検索する変換を「送りなし変換」と呼びます。SKK では送り仮名の有無が変換
方法の 1 つの種別となっています。送り仮名がある変換では送りありエント
リのみが検索され、送り仮名がない変換では送りなしエントリのみが検索され
ます。

1 つの見出し語についてのエントリは 1 行内に書かれます。2 行以上にまたが
ることはできません。改行を含む候補については、`(concat "改\n行")'
のように、評価すると改行を該当個所に挿入するような Lisp プログラム
(*Note プログラム実行変換::) に候補を変換して辞書に収めています。

 送りありエントリは、基本的には `もt /持/' のようになっています。送り
仮名部分は、送り仮名をローマ字表現したときの 1 文字目 (1) で表現されて
います。　この 1 エントリで `持た'、`持ち'、`持つ'、`持て'、`持と' の 
5 つの候補に対応します。その 5 つの候補の送り仮名をローマ字プレフィッ
クスで表現すれば、いずれも `t' になります。

--------- Footnotes ---------

(1)  あるかな文字をローマ字表現したときの 1 文字目を「ローマ字プ
レフィックス」と呼びます。



File: skk.info, Node: 送りありエントリのブロック形式, Next: エントリの配列, Prev: 送りありエントリと送りなしエントリ, Up: 辞書の形式

送りありエントリのブロック形式
..............................

 個人辞書の送りありエントリには `[' と `]' に囲まれたブロックがありま
す。これは、そのブロックの先頭にある平仮名を送り仮名に取る候補群です。

     たとe /例/[え/例/]/
     ...
     ふくm /含/[め/含/]/[む/含/]/[ま/含/]/[み/含/]/[も/含/]/

 この例で見ると、見出し語 `たとe' の場合は `え' を送り仮名とする 1 つ
のブロックから構成されています。見出し語 `ふくm' の場合は、`ま'、`み'、
`む'、`め'、`も' を送り仮名とする 5ブロックに分けられています。

 この送り仮名毎のブロック部分は、`skk-henkan-okuri-strictly' あるいは 
`skk-auto-okuri-process' のいずれかの変数が `non-nil'である場合に使用
されます。その場合、検索において、見出し語の一致に加えて、更に送り仮名
もマッチするかどうかをテストします。例えば、

     おおk /大/多/[く/多/]/[き/大/]/

 というエントリがあるとします。同じ見出し語 `おおk' であっても、送り仮
名が `き' であれば、候補は `大' のみで `多'は無視されます。 (1)


 現在のところ、SKK 付属の共有辞書では、`['と`]'を使用した送り仮名毎の
ブロックの形式に対応していません。個人辞書のみがこの形式で書き込まれて
いきます。`skk-henkan-okuri-strictly' が `nil' であっても送り仮名のブ
ロック形式で書き込まれます。 (2)

--------- Footnotes ---------

(1)  *Note skk-henkan-okuri-strictly: 送り仮名の自動処理.

*Note skk-auto-okuri-process: 送り仮名の厳密なマッチ.

(2) ただし `skk-process-okuri-early' の値が `non-nil' であれ
ば、送り仮名を決定する前に変換を開始することになるので、送り仮名を明示
的に入力していても個人辞書にはブロック形式は作られません。



File: skk.info, Node: エントリの配列, Prev: 送りありエントリのブロック形式, Up: 辞書の形式

エントリの配列
..............

共有辞書では、送りありエントリは `;; okuri-ari entries.' から順
に下方向に、見出し語をキーとして降順に配置されています。送りなしエントリ
は、`;; okuri-nasi entries.' から順に下方向に、見出し語をキーと
して昇順に配置されています。

 降順、昇順に配置されているのは、辞書サイズが大きいことに配慮して二分
検索を行なうためです。 (1)

一方、個人辞書は上の例でも見たように、それぞれ`;; okuri-ari entries.',
`;; okuri-nasi entries.' を基点として、一番最後に変換を行なったものが
それぞれの最小ポイント (2) に挿入され辞書が更新されます。個人辞書は通
常は共有辞書程はサイズが大きくないので、検索時にはそれぞれの基点から直
線的に検索が行なわれます。

 個人辞書で見つけられなかった候補については共有辞書から検索されます。
そこで見つかり確定された場合は、その候補が個人辞書に取り込まれますが、
その際送りありエントリまたは送りなしエントリの最小ポイントに挿入されま
す。これは、次に同じ見出し語の検索が行なわれた場合に同候補を最初に出力
するようにするためです。

--------- Footnotes ---------

(1)  ソートする際には、見出し語を unsigned-char と見なしています。
この順序は Emacs が 関数 `string<' で文字列を比較するときの順序であ
り、UNIXの `sort' コマンドでの標準の順序とは異なります。
Emacsのコマンド `sort-lines'を用いればファイルをこの順序でソートす
ることができます。Emacsのコマンド `sort-columns' は内部的に UNIXコ
マンドの `sort' を使っているので、辞書のソートには使えません。

(2) 正確に言えば、送りあり変換では `skk-okuri-ari-min'+ 1の位
置、送りなし変換では `skk-okuri-nasi-min'+ 1 の位置。



File: skk.info, Node: 辞書に関する設定, Prev: 辞書の形式, Up: 予備知識

辞書に関する設定
----------------

 `skk-search-prog-list' という変数があります。これは、ユーザーオプショ
ンとして設定するのはやや面倒な変数ですが、これを設定することによって、
辞書ファイルの指定、検索方法、検索される辞書の順序などを指定することが
できます。

 ここではまず、`skk-search-prog-list' の設定に使われる関数と変数を紹介
します。次に、`skk-search-prog-list' の具体例を示しながら、その設定方
法を解説します。


* Menu:

* 辞書検索のための関数::
* 辞書ファイルを指定する変数::
* 辞書検索の設定の具体例::



File: skk.info, Node: 辞書検索のための関数, Next: 辞書ファイルを指定する変数, Prev: 辞書に関する設定, Up: 辞書に関する設定

辞書検索のための関数
....................

`skk-search-kakutei-jisyo-file'

     形式: (skk-search-kakutei-jisyo-file FILE LIMIT &optional NOMSG)

     「確定変換」を行なう検索プログラム。検索対象の辞書ファイルは 
     Emacsのバッファに読み込まれます。検索対象のファイルから候補を見つ
     けると、内部変数 `skk-kakutei-flag' を立てて、いきなり確定します。
     このためユーザーが確定する必要はありません。

     第 1 引数は検索対象辞書。

     第 2 引数は領域の大きさを指定します。一つの見出し語に対する変換動
     作に対し、検索対象の領域の大きさが第 2 引数に指定された大きさより
     小さくなるまでは二分検索が行なわれ、最後に直線的検索が 1 回行なわ
     れます。第 2 引数に0 を指定すると常に直線的検索のみが行なわれます。

     第 3 引数が 非 nil であるとき、辞書をバッファに読み込むときにミニ
     バッファに読み込んでいる旨のメッセージを出力します。

`skk-search-jisyo-file'

     形式: (skk-search-jisyo-file FILE LIMIT &optional NOMSG)

     通常の検索を行なうプログラム。個人辞書の検索や、共有辞書でサーバ
     を使わない検索を行なう場合はこのプログラムを使用します。辞書ファ
     イルは Emacsのバッファに読み込まれます。

     第 1 引数、第 2 引数、第 3 引数の意味はいずれも
     `skk-search-kakutei-jisyo-file' の場合と同様です。

`skk-okuri-search'

     形式: (skk-okuri-search)

     自動送り処理を行なうプログラム。変数 `skk-auto-okuri-process' の
     値が 非 nil のときだけ機能します。

     個人辞書の送りありエントリを検索対象としているので、個人辞書のバッ
     ファを流用します。そのため、専用の辞書バッファは作りません。

`skk-search-server'

     形式: (skk-search-server FILE LIMIT &optional NOMSG)

     サーバ経由で検索するプログラム。サーバが使用不能になると辞書ファ
     イルを Emacs のバッファに読み込んで検索を行ないます。

     第 1 引数、第 2 引数、第 3 引数はいずれも
     `skk-search-kakutei-jisyo-file'のそれと同じですが、第 2 引数及び
     第3 引数は、辞書ファイルを Emacs のバッファに読み込んだときのみ利
     用されます。




File: skk.info, Node: 辞書ファイルを指定する変数, Next: 辞書検索の設定の具体例, Prev: 辞書検索のための関数, Up: 辞書に関する設定

辞書ファイルを指定する変数
..........................

`skk-kakutei-jisyo'

     確定変換用の辞書。 (1)

     この辞書は、標準の配布パッケージには含まれていないので、使用する
     のであればユーザー側で用意する必要があります。 (2)

`skk-initial-search-jisyo'

     ふつう個人辞書の前に検索を行なう辞書。

     変数 `skk-jisyo' に指定された辞書の前に検索が行なわれます。 (3)


     この辞書は、標準の配布パッケージには含まれていないので、使用する
     のであればユーザー側で用意する必要があります。

`skk-jisyo'

     個人辞書。SKK を一番最初に起動したときにファイルがなければ自動的
     に作られます。

     `skk-search-prog-list' の既定値では、個人辞書より先に検索するのは、
     確定辞書と `skk-initial-search-jisyo' のみです。これはこのままに
     することをお勧めします。

     個人辞書の見出し語は、常に一番最近に変換された語が最小ポイントに
     挿入されます。 (4)

`skk-large-jisyo'

     共有辞書。ユーザーの用途と資源に合わせて、S 辞書、M 辞書、L 辞書
     の中から選びます。

     ふつう、関数 `skk-search-jisyo-file' の第 1 引数として指定します。

`skk-aux-large-jisyo'

     共有辞書。ユーザーの用途と資源に合わせて、S 辞書、M 辞書、L 辞書
     の中から選びます。

     ふつう、関数 `skk-search-server' の第 1 引数として指定します。

`skk-backup-jisyo'

     個人辞書の予備 (バックアップ) 辞書。

     これは、`skk-search-prog-list' に入れてはいけません。あくまで個人
     辞書の予備辞書として指定してください。


--------- Footnotes ---------

(1)  *Note 確定変換: 確定変換とその取り消し.

 (2) 確定変換用辞書の見出し語の配列については、サイズが大きければ共有
辞書と同じ配列にして二分検索を行ない、サイズが小さければ適当な配置で直
線的検索を行なうことをお勧めします。

     *Note 共有辞書の配置: 辞書の形式.

を参照してください。

(3) このため、この辞書を適当に切り替えることにより最初に出てくる
候補を操作することができます。例えば、複数の専門用語毎の辞書を用
意しておいて `skk-initial-search-jisyo' の値を切り替えること
により、専門分野毎の専門用語を切り替えて入力することができます。

(4) その配列はバラバラなので、二分検索はできません。



File: skk.info, Node: 辞書検索の設定の具体例, Prev: 辞書ファイルを指定する変数, Up: 辞書に関する設定

辞書検索の設定の具体例
......................

 `skk-search-prog-list' の具体例を挙げると以下の様になります。

     ((skk-search-kakutei-jisyo-file skk-kakutei-jisyo 10000 t)
      (skk-search-jisyo-file skk-initial-search-jisyo 10000 t)
      (skk-search-jisyo-file skk-jisyo 0 t)
      (skk-okuri-search)
      (skk-search-jisyo-file skk-large-jisyo 10000)
      (skk-search-server skk-aux-large-jisyo 10000))

 上記の例では、
  1. `skk-kakutei-jisyo', `skk-initial-search-jisyo', `skk-jisyo'の順
     に検索を行ない、

  2. 次に個人辞書を使って送り仮名の自動処理を行ない、

  3. その後、`skk-large-jisyo' の検索を行ない、

  4. 最後に`skk-aux-large-jisyo' にサーバ経由でアクセスしています。

 もし確定辞書で候補が見つかったらそのまま自動的に確定されます。1 回SPC 
を押す動作に対し、プログラム側では新たな候補を見つけるまで上記の動作を
進めます。例えば、

  1. 確定辞書では候補は見つけられなかったが `skk-initial-search-jisyo'
     に候補がある場合、そこで一旦止まりユーザーにその候補を表示します。

  2. 更に SPC が押されると、次は個人辞書を検索します。そこで候補が見つ
     かり、しかもその候補が`skk-initial-search-jisyo' で見つけた候補と
     は異なるものであったときは、そこでまた一旦止まりその候補をユーザー
     に表示します。

     以降、共有辞書についても同様の繰り返しを行ないます。

 `skk-search-prog-list' の設定方法としては、例えば`skk-large-jisyo' に 
S 辞書か M 辞書を指定し、S 辞書、M 辞書はEmacsのバッファに読み込んで検
索して、`skk-aux-large-jisyo'に L 辞書を指定し、L 辞書にはサーバ経由で
アクセスする、という選択肢もあります。

また、サーバ経由のアクセスも決して遅くはないので、

     (skk-search-jisyo-file skk-large-jisyo 10000)

 を削除するという選択肢もあります。 (1) (2) (3)

--------- Footnotes ---------

 (1) ちなみに辞書ファイルを指定する変数の値が nil であれば、そのファイ
ルを引数とした検索プログラムが `skk-search-prog-list' に指定されていて
も、その検索は行なわれません。例えば、`skk-search-prog-list' に上記変
更をする代わりに

     (setq skk-large-jisyo nil)

という設定をしてもふつう結果は同じです。

 (2) `skk-auto.el' を読みこむと、

     (skk-okuri-search)

 というリストが `skk-search-prog-list' に自動的に追加されます。実際に
は、skk-auto.el は必要に応じてオートロードされるので明示的に読みこむ必
要はありません。オートロードされるのは、具体的には
`skk-auto-okuri-process' を非 nil に設定したとき、 あるいは


     (skk-okuri-search)

というリストを `skk-search-prog-list' に明示的に指定したときなど
です。

(3) `skk-server.el'を読みこむと、

     (skk-search-server skk-aux-large-jisyo 10000)

というリストが `skk-search-prog-list' に自動的に追加されます。実際には、
skk-server.el は必要に応じてオートロードされるので明示的に読みこむ必要
はありません。オートロードされるのは、具体的には`skk-server-host' また
は `skk-servers-list'を非 nil に設定したとき、あるいは

     (skk-search-server skk-aux-large-jisyo 10000)

というリストを `skk-search-prog-list' に明示的に指定したときなど
です。



File: skk.info, Node: 入力モードの一時変更, Next: ■モードにおける文字入力, Prev: 予備知識, Up: 便利な応用機能

入力モードの一時変更
====================

 SKK には、カタカナの入力にはカナモードを、全角アルファベットの入力に
は全英モードを用いる (1) 普通のやり方のほかに、一時的にカナ文字、全英
文字を入力して、また、かなモードに戻る方法があります。

 また、アスキー文字を見出し語として使用するために、かなモードから一時
的にアスキー文字を入力する機能が提供されています。それは▽モードの変種
であり、 "SKK abbrev mode" と呼ばれています。この機能を使用することに
より、

 `is'=>`インクリメンタル・サーチ'

 のような変換を行なうことができます。

 ここではこれらの方法について説明します。

* Menu:

* ひらがな/カタカナの一時的入力::
* 全英文字の一時的入力::

--------- Footnotes ---------

(1)  *Note カナモード、全英モード: 入力モード.



File: skk.info, Node: ひらがな/カタカナの一時的入力, Next: 全英文字の一時的入力, Prev: 入力モードの一時変更, Up: 入力モードの一時変更

ひらがな/カタカナの一時的入力
-----------------------------

 まず、かなモードもしくはカナモードに入ります。`Q' キーで一旦▽モード
にして (1) なにか文字列を入力し、その文字列の末尾で `q' をタイプすると、 
`▽'マークから `q' を入力した位置までの文字列が、変換され確定されます。
変換は、`▽' とポイント間の文字列の種類 (2) をキーとして、以下の規則に
基づいて行なわれます。

   * カタカナはひらがなへ
   * ひらがなはカタカナへ
   * 全英文字はアスキー文字へ
   * アスキー文字は全英文字へ

 このような変換を、トグル変換と呼びます。以下はトグル変換の例です。

     K a t a k a n a

     ------ Buffer: foo ------
     ▽かたかな-!-
     ------ Buffer: foo ------

     q

     ------ Buffer: foo ------
     カタカナ-!-
     ------ Buffer: foo ------

 このトグル変換を上手く利用することにより、かなモードのまま一時的にカ
タカナを入力したり、またその逆を行うことができます。こうすると、例えば
ひらがな/カタカナ混じり文を書くときに、その都度 `q' キーを押して入力モー
ドを切り換える必要がありません。 (3)

 トグル変換は、領域を対象としたコマンドによって行なうこともできます。

     *Note 領域一括変換::.

--------- Footnotes ---------

(1)  `/'キーで SKK abbrev mode に入ってしまうと `q' キー
入力が `q' 文字の入力として扱われるのでこの場合は使いません。

(2) 正確には `▽' の次の位置にある文字列によって文字種の判別を行
なっているので、途中で文字種類の違う文字が混在していても無視されます。

(3) 全英文字とアスキー文字のトグルでの変換を行なうこともできます。ただ
し、全英モードやアスキーモードでは `Q' やその他の大文字により▽モー
ドに入ることができないので、かな ⇔ カナ のときと同様にドグル変換でき
るわけではありません。かなモード/カナモードにおいて、既に入力された全
英文字、アスキー文字に対してトグル変換をするような設計になっています。



File: skk.info, Node: 全英文字の一時的入力, Prev: ひらがな/カタカナの一時的入力, Up: 入力モードの一時変更

全英文字の一時的入力
--------------------

 まず、かなモードに入ります。次に、`/' を入力すると、SKK abbrev モード
に入ります。続いて、全角アルファベットとして入力したい文字列を挿入し、
その文字列の末尾で `C-q' (1) を入力することで、`▽'マークから `C-q' を
入力した位置までの文字列が全角アルファベットに変換され確定されます。

     / f i l e

     ------ Buffer: foo ------
     ▽file-!-
     ------ Buffer: foo ------

     q

     ------ Buffer: foo ------
     ｆｉｌｅ-!-
     ------ Buffer: foo ------

 なお、この変換を行なうために、

     file /ｆｉｌｅ/

のような辞書エントリを持つ必要はありません。なぜなら、辞書を参照せず、
アスキー文字を 1 文字づつ全英文字に変換しているからです。

--------- Footnotes ---------

(1)  `C-q' は `skk-abbrev-mode-map' にて特別な動作をするよ
うに定義されています。
*Note アスキー文字を見出し語とした変換::.



File: skk.info, Node: ■モードにおける文字入力, Next: ポイントを戻して▽モードへ, Prev: 入力モードの一時変更, Up: 便利な応用機能

■モードにおける文字入力
========================

* Menu:

* かなモード/カナモードにおける入力::
* 全英モードにおける入力::
* 1回の取り消し操作(undo)の対象::
* 対になる文字列の一括入力::



File: skk.info, Node: かなモード/カナモードにおける入力, Next: 全英モードにおける入力, Prev: ■モードにおける文字入力, Up: ■モードにおける文字入力

かなモード/カナモードにおける入力
---------------------------------

* Menu:

* ■モードにおける文字変換::
* skk-rom-kana-base-rule-listの具体例::
* skk-rom-kana-rule-listの利用例::
* ■モードに関連するその他の変数::
* 数字や記号文字の入力::



File: skk.info, Node: ■モードにおける文字変換, Next: skk-rom-kana-base-rule-listの具体例, Prev: かなモード/カナモードにおける入力, Up: かなモード/カナモードにおける入力

■モードにおける文字変換
........................

`skk-rom-kana-base-rule-list'
`skk-rom-kana-rule-list'

 SKK の■モードにおける文字変換は、上記 2 変数を用いて行なわれます。

 これらは、1 種の規則であり、「入出力の状態がいかに移り変わるべきか」
を決定します。その内容は、

     (入力される文字列 出力後に自動的に入力に追加される文字列 出力)

という形のリストを列挙したものです。

 `入力される文字列' とは変換される前の ASCII 文字の文字列をいいます。

`出力' は次の入力状態に移るときにバッファに挿入される文字列の組み合
わせであり、 ("ア" . "あ") のようなコンスセルです。

 2 変数のうち、`skk-rom-kana-rule-list' は使用者が独自の規則を定義する
ために用意されていて、`skk-rom-kana-base-rule-list' の規則より優先され
ます。



File: skk.info, Node: skk-rom-kana-base-rule-listの具体例, Next: skk-rom-kana-rule-listの利用例, Prev: ■モードにおける文字変換, Up: かなモード/カナモードにおける入力

skk-rom-kana-base-rule-listの具体例
...................................

 `skk-rom-kana-base-rule-list' には

     ("a" nil ("ア" . "あ"))
     ("ki" nil ("キ" . "き"))
     ("tt" "t" ("ッ" . "っ"))
     ("nn" nil ("ン" . "ん"))
     ("n'" nil ("ン" . "ん"))

のような規則があります。これによると

     a ==>あ
     ki ==>き
     tt ==>っt
     nn ==>ん
     n' ==>ん

のようになります。



File: skk.info, Node: skk-rom-kana-rule-listの利用例, Next: ■モードに関連するその他の変数, Prev: skk-rom-kana-base-rule-listの具体例, Up: かなモード/カナモードにおける入力

skk-rom-kana-rule-listの利用例
..............................

 `skk-rom-kana-base-rule-list' の規則に従うと

     hannou ==>はんおう
     han'ou ==>はんおう
     hannnou ==>はんのう

のようになります。ここで

     (setq rom-kana-rule-list
           (append rom-kana-rule-list
                   '(("nn" "n" ("ン" . "ん"))

 のような設定にすることで

     hannou ==>はんのう

のようにローマ字かな変換が行われるようになります。

 もうひとつ利用例を挙げます。

     tp ==>東北大学
     skk ==>skk
     skK ==>SKK

といった変換は、

     ("tp" nil ("東北大学" . "東北大学"))
     ("sk" "sk" ("" . ""))
     ("skk" nil ("skk" . "skk"))
     ("skK" nil ("SKK" . "SKK"))

のような規則を追加することで実現されます。自分の名前を入力することはよ
くあるので、適当な省略形を用いて、このリストに追加しておく、といった利
用をお勧めします。

 更に `skk-rom-kana-rule-list' を用いれば T-code や TUT-code による日
本語入力を実現することもできます。例えば TUT-code による入力については
ソースアーカイブの `experimental/tut-code' ディレクトリに収録されてい
るソースコードを参照してください。



File: skk.info, Node: ■モードに関連するその他の変数, Next: 数字や記号文字の入力, Prev: skk-rom-kana-rule-listの利用例, Up: かなモード/カナモードにおける入力

■モードに関連するその他の変数
..............................

`skk-kana-input-search-function'

     ルールリストの中に記せない変換ルールを処理する関数。これは

          ohs ==>おおs

     のような変換を実現するために用意されています。これにより

          ohsaka ==>おおさか
          ohta ==>おおた

     のように変換されますが、一方

          ohhonn ==>おっほん
          ohhira ==>おっひら

     となる場合もあります。これは `skk-rom-kana-rule-list' の既定値に

          ("hh" "h" ("ッ" . "っ"))

     が入っているためです。これを削除すれば

          ohhonn ==>おおほん
          ohhira ==>おおひら

     となります。



File: skk.info, Node: 数字や記号文字の入力, Prev: ■モードに関連するその他の変数, Up: かなモード/カナモードにおける入力

数字や記号文字の入力
....................

 かなモード/カナモードにおける次のキーは、かつては `skk-self-insert'関
数にバインドされていました。現在は他のキーと同様に `skk-insert'関数に
バインドされています。

     !  #  %  &  '  *  +

     -  0  1  2  3  4  5

     6  7  8  9  :  ;  <

     =  >  ?  "  (  )  [

     ]  {  }  ^  _  `  |

     ~

 これらの数字や記号文字のキーに対応し挿入される文字は、変数
`skk-input-vector' の値により決定されていましたが、このバージョンのSKK 
ではこの変数は廃止されました。カスタマイズするためには、代わりに変数
`skk-rom-kana-rule-list' を利用します。例えば、SKK 9.6 以前において、

     (aset skk-input-vector ?! nil)
     (aset skk-input-vector ?, nil)
     (aset skk-input-vector ?. nil)
     (aset skk-input-vector ?: nil)
     (aset skk-input-vector ?; nil)
     (aset skk-input-vector ?? nil)

 このような設定をしていた場合、本バージョンの SKK で同様の入力をするた
めには、

     (setq skk-rom-kana-rule-list
           (nconc skk-rom-kana-rule-list
                  '(("!" nil "!")
                    ("," nil ",")
                    ("." nil ".")
                    (":" nil ":")
                    (";" nil ";")
                    ("?" nil "?"))))

 のような設定に変更する必要があります。

 `skk-insert' は、Emacs のオリジナル関数 `self-insert-command'をエミュ
レートしています。具体的には、引数を渡すことによって同じ文字を複数、一
度に挿入することが可能です (1) 。


     C-u 2 !

     ------ Buffer: foo ------
     ！！
     ------ Buffer: foo ------

--------- Footnotes ---------

(1)  かつては、`▽あ'などを入力する場合には引数渡しができなかっ
たのですが、本バージョンでばこれもできるように拡張されています。



File: skk.info, Node: 全英モードにおける入力, Next: 1回の取り消し操作(undo)の対象, Prev: かなモード/カナモードにおける入力, Up: ■モードにおける文字入力

全英モードにおける入力
----------------------

 全英モードにおける印字可能な全てのキーはコマンド
`skk-jisx0208-latin-insert' に割り付けられています。また、変数
`skk-jisx0208-latin-vector' の値により挿入される文字が決定されます。
`skk-jisx0208-latin-vector' の既定値は以下のようになっています。

     [nil  nil  nil  nil  nil  nil  nil  nil
      nil  nil  nil  nil  nil  nil  nil  nil
      nil  nil  nil  nil  nil  nil  nil  nil
      nil  nil  nil  nil  nil  nil  nil  nil
      "　"  "！" "”" "＃" "＄" "％" "＆" "’"
      "（" "）" "＊" "＋" "，" "−" "．" "／"
      "０" "１" "２" "３" "４" "５" "６" "７"
      "８" "９" "：" "；" "＜" "＝" "＞" "？"
      "＠" "Ａ" "Ｂ" "Ｃ" "Ｄ" "Ｅ" "Ｆ" "Ｇ"
      "Ｈ" "Ｉ" "Ｊ" "Ｋ" "Ｌ" "Ｍ" "Ｎ" "Ｏ"
      "Ｐ" "Ｑ" "Ｒ" "Ｓ" "Ｔ" "Ｕ" "Ｖ" "Ｗ"
      "Ｘ" "Ｙ" "Ｚ" "［" "＼" "］" "＾" "＿"
      "‘" "ａ" "ｂ" "ｃ" "ｄ" "ｅ" "ｆ" "ｇ"
      "ｈ" "ｉ" "ｊ" "ｋ" "ｌ" "ｍ" "ｎ" "ｏ"
      "ｐ" "ｑ" "ｒ" "ｓ" "ｔ" "ｕ" "ｖ" "ｗ"
      "ｘ" "ｙ" "ｚ" "｛" "｜" "｝" "〜" nil]

 挿入される文字の変更方法を知りたい場合は、

     *Note 数字や記号文字の入力::.

を参照してください。

 `skk-jisx0208-latin-insert' も Emacs オリジナルの関数
`self-insert-command' をエミュレートしています。つまり、引数を渡すこと
により同じ文字を複数、一度に挿入することができます。`skk-insert'におけ
る動作と同じですから、

     *Note 数字や記号文字の入力::.

における例を参考にしてください。



File: skk.info, Node: 1回の取り消し操作(undo)の対象, Next: 対になる文字列の一括入力, Prev: 全英モードにおける入力, Up: ■モードにおける文字入力

1回の取り消し操作(undo)の対象
-----------------------------

 Emacs では本来、連続する 20 文字の挿入が一回の取り消し操作 (アンドゥ) 
の対象となっています。そこで SKK のかな・カナ・全英モードにおける入力
も、これと同様の動作をするように設計されています。 (1) 。正確に言えば、
`skk-kana-input', `skk-self-insert', `skk-set-henkan-point',
`skk-jisx0208-latin-insert' (2) の各関数にバインドされたキー入力につい
ては、連続して入力された 20 文字を 1 つのアンドゥの対象としています 
(3) 。

 ただし、これらの SKK のコマンドと Emacs 本来の`self-insert-command' 
を織り混ぜてキー入力した場合 (4) は、このエミュレーションは正常に動作
しませんが、これは現在の仕様です。

     a i u e o k a k i k u k e k o s a s i s u s e s o t a t i t u t e t o

     ------------------------- Buffer: foo -------------------------
     あいうえおかきくけこさしすせそたちつてと ;連続する20文字。
     ------------------------- Buffer: foo -------------------------

     C-_

     ------------------------- Buffer: foo -------------------------
                            ;20文字全てがアンドゥの対象となる。
     ------------------------- Buffer: foo -------------------------

     a i u e o k a k i k u k e k o s a s i s u s e s o t a t i t u t e t o n a

     -------------------------- Buffer: foo --------------------------
     あいうえおかきくけこさしすせそたちつてとな ;連続する21文字。
     -------------------------- Buffer: foo --------------------------

     C-_

     -------------------------- Buffer: foo --------------------------
     あいうえおかきくけこさしすせそたちつてと ;最後の1文字のみがアンドゥの対象となる。
     -------------------------- Buffer: foo --------------------------

--------- Footnotes ---------

(1)  `buffer-undo-list'にEmacsが挿入したアンドゥの境目の目印を
取り除く方法でエミュレートしています。

(2) SKK abbrev モードでは、アスキー文字入力が Emacs オリジナルの
`self-insert-command' により行なわれているので、エミュレーション
のための内部変数である`skk-self-insert-non-undo-count'をインクリ
メントすることができず、アンドゥをエミュレートできません。しかも、カン
マやピリオドを挿入した時点で、コマンド `skk-abbrev-comma' や
`skk-abbrev-period' を使うことになるので、オリジナルのアンドゥの
機能も損なってしまいます。ただし、現実問題として、元来 SKK abbrev モー
ドは省略形としての見出し語を挿入するためのモードですから、長い見出し語
を挿入することはあまりないと考えられます。

(3) `20' は Emacs のソースファイルの一部である `keyboard.c'に定め
られたマジックナンバーと一致します。

(4) かなモードでの入力中、アスキーモードに移行してタイプした場合などが
これにあたります。



File: skk.info, Node: 対になる文字列の一括入力, Prev: 1回の取り消し操作(undo)の対象, Up: ■モードにおける文字入力

対になる文字列の一括入力
------------------------

 ふつう、`「' を入力したら、`」' を後で入力する必要があります。`「' の
入力時点で、対になる文字を自動挿入してくれると打鍵数を減らすことができ
ますし、同時に入力忘れの防止にもなるでしょう。

 そのために変数 `skk-auto-insert-paren' が用意されています。この値を非 
nil にすると、上記の自動挿入を行ないます、

     ------ Buffer: foo ------
     彼はこう言った-!-
     ------ Buffer: foo ------

     [

     ------ Buffer: foo ------
     彼はこう言った「-!-」
     ------ Buffer: foo ------

上記のように `「' の入力時点で対となる`」'を自動挿入し、`「'と`」'の間
にポイントを再配置するので、その位置からかぎかっこに囲まれた文字列を即
始めることができます。

 自動挿入すべきペアの文字列は、変数 `skk-auto-paren-string-alist' で指
定します。既定値は下記のようになっています。

     (("「" . "」") ("『" . "』") ("(" . ")") ("（" . "）") ("{" . "}")
      ("｛" . "｝") ("〈" . "〉") ("《" . "》") ("[" . "]") ("［" . "］")
      ("〔" . "〕") ("【" . "】") ("\"" . "\"") ("“" . "”") ("`" . "'"))

これは、ひと言でまとめると、「開き括弧と閉じ括弧とのコンスセルを集めた
リスト」です。各コンスセルの `car' にある文字列を挿入したときに、`cdr' 
にある文字列が自動挿入されます。 (1) (2)

 キーとなる文字の挿入が行なわれても、その挿入後のポイントに自動挿入す
べき文字が既に存在している場合には、自動挿入は行なわれないように設計さ
れています。

     ------ Buffer: foo ------
     -!-」
     ------ Buffer: foo ------

     [

     ------ Buffer: foo ------
     「-!-」
     ------ Buffer: foo ------


 対になる文字を複数挿入したい場合は、引数を渡して文字を指定します。


     C-u 2 [

     ------ Buffer: foo ------
     「「-!-」」
     ------ Buffer: foo ------

 `yatex-mode' など、既に同種の機能が付いているモードがあります。そのよ
うなモードにおいてもこの自動挿入の機能が邪魔になることはないでしょうが、
そのモードにおいてのみこの機能をオフにしたい場合は、該当のモードに入っ
たときにコールされるフック変数を利用して設定を行なうことができます。

     (add-hook 'yatex-mode-hook
               (function
                (lambda ()
                  (if skk-auto-insert-paren
                      (set (make-local-variable 'skk-auto-insert-paren) nil)))))

 特定のモードにおいて、自動挿入すべき文字を変更したい場合にも同様にフッ
ク変数を用いて操作できます。

     (add-hook 'tex-mode-hook
               (function
                (lambda ()
                  (if skk-auto-insert-paren
                      (progn
                        (make-local-variable 'skk-auto-paren-string-alist)
                        (setq skk-auto-paren-string-alist
                              (cons '("$" . "$") skk-auto-paren-string-alist)))))))

同様に、特定のペアを削除したい場合は、例えば下記のように設定します (3) 。


     (add-hook 'tex-mode-hook
               (function
                (lambda ()
                  (if skk-auto-insert-paren
                      (progn
                        (make-local-variable 'skk-auto-paren-string-alist)
                        (setq skk-auto-paren-string-alist
                              (delete
                               '("$" . "$")
                               (copy-sequence skk-auto-paren-string-alist))))))))

--------- Footnotes ---------

 (1) このリストの各要素の `car' の文字列は、必ず変数
`skk-rom-kana-rule-list' の規則によって入力されなければなりません。例
えば、`(' に対する `)' の自動挿入をするには

     (setq skk-rom-kana-rule-list
           (nconc skk-rom-kana-rule-list
                 '(("(" nil "("))))))

のような設定をする必要があります。

(2) 既に SKK モードになっているバッファで変数
`skk-auto-paren-string-alist' を変更した場合は、`C-x C-j' も
しくは `C-x j' を 2 度タイプして `skk-mode' もしくは
`skk-auto-fill-mode' を起動し直す必要があります。

 (3) 何故関数 `copy-sequence' を使用するのかについては、

     *Note 数字や記号文字の入力::.

を参照してください。



