\overfullrule=0pt\def\langjp\input texinfo

This file documents about T-Code driver for Emacs which can deal with Japanese characters.

Copyright © 1997-2000 Kaoru Maeda, Yasushi Saito, KITAJIMA Akira

Tコード入力環境tc2
***********

このマニュアルでは、日本語の扱いが可能なEmacsでTコード文字入力を行うためのパッケージを解説します。ここで対象としているパッケージのバージョンは 2.3です。

このマニュアルは2003年3月17日に改訂されました。

Tコードとは
******

Tコードは東京大学理学部情報科学科山田研究室で開発された無連想 2ストローク漢字入力方式です。ここでは、Tコードについて、日本語の扱いが可能なEmacs(以降では単にEmacsと呼びます。)用のTコード入力環境 tc2を使用するにあたって必要最小限の紹介をします。

2ストローク入力とは
==========

2ストローク入力はキー2打鍵の組み合わせで漢字1文字を表すことによって漢字入力を行う入力方式です。漢字入力は現在「かな漢字変換入力」が主流であると思われます。しかし、かな漢字変換は判断を必要とする作業であり、大量の文書を入力するのには向きません。一方、2ストローク入力では、キーボードから直接漢字を入力できるので、変換の必要はありません。キーの2打鍵で常に一つの文字を入力することになるので、文章の入力はリズムをくずすことなく行えます。

     ■ただし、2ストロークで表せる文字の種類には限りがあります。 2ストロークで直接入力できない文字のことをTコードでは外字と呼びます。外字の入力にはかな漢字変換を使うこともあります。 Emacs用のTコード入力環境tc2では、外字入力用に、部首合成変換(see 部首合成変換)・交ぜ書き変換(see 交ぜ書き変換)・ JISコード表(see Tコードを使う)などの補助入力手段を提供しています。 □

漢字に対するキーの割り当てには連想式と無連想式があります。連想式というのはキーの組み合わせと文字の間に連想があるものを言います。たとえば「トキ」で「時」を表すなどの方法です。一方無連想式というのはそれらの間に連想関係がないものを言います。

一般に連想式は習熟にかかる時間は短くてすみますが、ある程度上達してしまうと打鍵速度が上がらなくなります。その理由は文字と打鍵位置の間に関係があるために入力が思考によって邪魔されてしまうためと、もともと入力する時のことは考えられていないためにawkward sequence(複雑な指の運びを強いられる打鍵列のこと)が多くなり指に負担がかかってしまうためです。

無連想式では入力時のawkward sequenceが小さくなるように打鍵位置を決められるため、習熟すればするだけいくらでも速く入力できるようになります。しかも変に思考に邪魔されることがないため、英文タイピストのようにおしゃべりをしながら文書の入力ができるようになるといわれています。そのかわり打鍵位置を覚えるまでは、何の手がかりもないのですから長い時間をかけてひたすら覚えることになります。

2ストローク入力方式はたとえば手書きの文書を計算機に入力する時に最大の効果が期待できます。目から入ってきた文字を言語中枢を経由することなく手で打つことができるからです。しかし、頭で考えながら文章を入力するときには必ずしも最善の方法ではないかもしれません。

Tコードで使用するキーボード
==============

Tコードでは片手あたり5列4段20個、計40個のキーを使います。40個のキーを2打鍵することで1文字の入力を行います。人指し指は2列分を受け持ちます。 Tコードでは40個のキーの2打鍵、計1600通りの打鍵位置のうち現在約1300に文字を割り当てています。新聞などの記事を入力する際には、入力するべき文字の約 95--98%がTコードの二打鍵で入力できるといわれています。

普通のキーボードでTコードを利用する場合、次の図のような配列を用います。このマニュアルでは、いわゆるQWERTY配列のキーボードを想定しています。以降の説明でも、特に断らない場合はこの配列に基づき説明します。なお、Tコード入力環境tc2では、Dvorak配列用などにカスタマイズすることができます(see 入力文字と仮想鍵盤との対応)。実際のキーボードでは、キーは下図のような長方形ではなく、一列毎にずれた配列になっていることが多いのですが、そこはがまんして使うことにします。

      左手用          右手用

     1 2 3 4 5      6 7 8 9 0
     Q W E R T      Y U I O P
     A S D F G      H J K L ;
     Z X C V B      N M , . /

     ■Tコード専用のキーボードも存在します。Tコード用のキーボードを見ると、その第一印象は真っ白なことです。真っ白なのはキートップに書くべき情報が何もないことから納得できます。次にもっとよく見るとキーが長方形に並んでいることに気づきます。キーの配置が長方形だというのは、「上段が左に、下段が右にずれて」いないということです。タイプライターに由来するこの「ずれ」は電子化された今のキーボードには必要ないからです。 □

ストローク表の見方
=========

Tコードの打鍵位置の割り当てを表にまとめたものがストローク表です。 Tコード入力環境上で11, 10, 01, 00を入力すればこの表を表示させることができます(see Tコードを使う)。この表は大きく四つの部分に分かれています。それぞれ、5×4の文字の長方形が5×4個並んでいます。そのうちの一つを見てみましょう。

     RL

       ■■■■*   ■■■■■  ■■■■■  ■■■■■  ■■■■■
       請境系探象  尚賀岸責漁  舎喜幹丘糖  布苦圧恵固  姿絶密秘押
       盛革突温捕  益援周域荒  康徒景処ぜ  邦舞雑漢緊  衆節杉肉除
       依繊借須訳  織父枚乱香  譲ヘ模降走  激干彦均又  測血散笑弁

       酸昼炭稲湯  貿捜異隣旧  攻焼闘奈夕  盤帯易速拡  汽換延雪互
       歩回務島開  キせ区百木  や出タ手保  コ山者発立  ナ金マ和女
       給員ど代レ  分よル千ア  7 か( トれ  きっ日国二  上く8 え年
       相家的対歴  付プばュ作  内工八テ見  九名川機チ  サ建パ第入

       桜瀬鳥催障  典博筋忠乳  採謡希仏察  君純副盟標  犯余堀肩療
       中スもお定  わラ東生ろ  う4 ) 十リ  あこ6 学月  本さら高シ
       3 と〇てる  ーした一が  い、の5 1   。* 0 ・2   ではになを
       ッ人三京ち  ロク万方フ  んまンつ四  けイす電地  業時「長み

       呼幅歓功盗  紀破郡抗幡  房績識属衣  去疑ぢ綿離  秒範核影麻
       店持町所ほ  全じ自議明  バ部六経動  後間場ニ産  問ム七住北
       行ド円小ジ  通カ社野同  だり―め大  新」9 子五  事田会前そ
       海道ず西げ  当理メウグ  不合面政オ  委化ビ目市  気売下都株

表の左上にRLと書いてあるのは、この表が1打鍵目は右手、2打鍵目は左手で打つ文字の表であることを示しています。小さなブロック内での文字の位置が1打鍵目の打鍵位置を、そのブロックが全体の中でどこにあるかが2打鍵目の打鍵位置を表しています。たとえば円という字は左下のブロックの中にあり、その中で中央中段にありますから、1打鍵目は右手中指のホームポジション、2打鍵目は左手小指の下段(Zのキー)ということになります。この表現形式を木を見て森を見る方式と評した人がいます。

この表の中で■で表された打鍵位置には現在文字が割り当てられていません。また、*で表された打鍵位置は、機能または3ストローク以上のキーストロークを表しており、文字は割り当てられていません。ここで、機能とは、たとえば部首合成変換入力(see 部首合成変換)の開始、交ぜ書き変換入力(see 交ぜ書き変換)の開始などを指します。また、3ストローク以上のキーストロークは TUTコード (see TUTコードで入力するには)で使用します。

Tコード情報の入手方法
===========

WWW
---

Tコードオープンラボhttp://openlab.ring.gr.jp/tcode/でTコード関連の情報を公開しています。

Emacs用のTコード入力環境tc2のサポートページは http://openlab.ring.gr.jp/tcode/tc2/です。

Tコードメーリングリスト
------------

Tコード のメーリングリストが運営されています。 Tコードに興味を持つ人であれば、誰でも入会できます。内容、あるいは参加方法について知りたい人は、 tcode-ml@is.s.u-tokyo.ac.jp宛に # guideという内容のメールを送ってください。下はその例です。

     % echo '# guide' | mail tcode-ml@is.s.u-tokyo.ac.jp

ニフティサーブからメーリングリストに参加したい場合には、 INET:tcode-ml@is.s.u-tokyo.ac.jpあてに # guideの1行からなるメールを送ってください。

ニフティサーブ
-------

ニフティサーブのFKBOARDでは、Tコード等の直接入力方式に関する会議室が開かれています。この会議室の最初の方には直接入力入門者のための非常に分かりやすい説明が多数登録されています。

また、次のPatioが直接入力に関するものです。

 1. ID: NBH00475 (情報のやりとり)

     管理人: かぜはるか (email: nbh00475@nifterserve.or.jp)

 2. ID: GGB03565 (関連データの登録)

     管理人: m(as)m (email: ggb03565@nifterserve.or.jp)

いちおうクローズドな形態になっていますので、参加を希望する方は、それぞれの管理人にメールして下さい。Passwordを教えてくれます。

個人環境の構築
*******

ここでは、個人環境の構築方法について説明します。パッケージのインストールが正しく行われていることを前提にしています。パッケージのインストールの方法については、パッケージに付属のINSTALLを見てください。

.emacsでの設定
==========

まず、.emacsでの設定を行います。

Emacs のバージョンが20以上か、XEmacsの場合は、次の記述が.emacsにあるか確認して、なければ追加してください。

     (set-language-environment "Japanese")

これにより、Emacsが、日本語文字コードで記述されたファイルの読み書きに適した環境になります。

インストールされた場所がEmacsに分かるように、 load-pathを設定することが必要な場合があります。 *scratch*バッファで (require 'tc-setup) C-j と入力してみてください。エラーメッセージが表示された場合は、 load-pathの設定が必要です。 tc.elなどがどこにインストールされているか確かめて、次の記述を.emacsに追加してください。

     (setq load-path (cons "/PATH/TO/TC" load-path))

上の例の中の/PATH/TO/TCの部分に、tc.elなどがインストールされているディレクトリを記述します。

最後に、次の行を.emacsに追加してください。

     (require 'tc-setup)

ここまでで、.emacsでの設定は完了です。設定を反映させるため、Emacsを再起動してください。

.tcでの設定
=======

tc2の設定は、設定ファイル.tcに記述します。ここでは、その作成方法を示します。

Emacs を起動し、C-u C-\を入力します。そして、 japanese-T-Codeと入力します。ここで、TUTコードを使いたい場合はjapanese-TUT-Codeと入力します。すると、「設定ファイル~/.tcがありません。作成しますか?(y or n)」というメッセージが表示されます。ここでyと押すと、データを置くディレクトリとキー配置を聞かれますので、適切に入力します。

データを置くディレクトリには、辞書などのデータが置かれます。最初の状態は空ですが、必要に応じてファイルが置かれます。また、EELLLの練習テキストを自分用に作りたい場合などは、ここで指定したディレクトリに置いてください。なお、もとのデータは変数tcode-site-data-directoryで示されるディレクトリにあります。

キー配置については、使用するキー配置を選びます。大きく分けて、qwertyとdvorakがあります。通常のキーボードをそのまま使用する場合は、qwertyを選択してください。また、入力時にシフトを用いるかどうかという選択肢があります。これは、キー配置名の次に-shiftが付いているかいないかで区別できます。どちらにすればよいか分からない場合は、シフトは用いないでください。

上記の操作を行うと、~/.tcが作成されます。あとは、必要に応じて .tcを編集してください (see カスタマイズ)。

Tコードの練習
*******

Tコードで普通に入力できるようになるためには練習が必要です。実際の生活で使い始める前に、十分練習をすることが理想です。ただ、職業的に使用するのでなければ、ある程度修得したら、交ぜ書き変換などを用いて、そこそこ入力できるようにはなります。

練習には、EELLLを用いるとよいでしょう。

EELLLでは、TUTコードの練習もできます。TUTコードの練習については、 TUT-Code Home Pageの、習得と練習テキスト (http://www.crew.sfc.keio.ac.jp/~chk/shutoku.html)も参照してください。TUT コード用のEELLLのテキストは、このウェブページにある練習テキストを採用しています。

Tコード練習プログラム EELLL
=================

EELLLはTコードやTUTコードの練習プログラムです。 EELLL (「うなぎぎぎ」と読みます :-)は、山田研にかって存在したタイピング練習ソフト Computer Aided Touch Type Trainer CATTT (「きゃっととと」) のEmacs Lisp版であるということにちなんで名付けられました。端末を使って直接練習するプログラムとしては、DOGGGが用意されています (see Tコード練習プログラム DOGGG)。

EELLLはM-x eelllで起動します。ミニバッファから練習テキストの番号を入力します。前回練習したレッスン番号がミニバッファにあらかじめ入力されています。基本的に、番号の順に練習を進めていってください。

練習テキストが1行ずつ出てきます。それをTコードを使って入力して下さい。入力はエコーバックされません。また、入力の際には部首合成変換や交ぜ書き変換を使うことはできません。

ビットマップを表示できる環境では、ビットマップによりヘルプが表示されます。うまく表示されない場合、変数eelll-use-imageを tに設定することで、ビットマップ表示されることもあります。

通常はテキストを順番に入力するだけですが、 M-x eelll-ramdomで起動することにより、指定したレッスンの中からランダムに何行か選択して表示されます。 1回の練習で選択される行数は、変数eelll-random-max-lineで指定します。

EELLLに用意されているテキストを用いずに、練習する文を自分で作成したり何らかの文章を利用して練習したい場合、リージョンを指定して M-x eelll-regionを実行すると、そのテキストの練習ができます。

練習のヒント
======

練習は基本的にはテキストの順に行えばよいのですが、ひらがなをだいたい覚えたら、数字やカタカナなどは後まわしにして、漢字に進んでも構いません。漢字が簡単に入力できることを早目に体験しておくと、練習意欲が増すかもしれません。

さて、練習にあたって心がけておくとよい点をあげておきましょう。

指の動きでコード(キーの入力順)を覚える。
     例えば「kd」で「の」という覚え方ではなく、「右手中指→左手中指」の動きで「の」というように覚えましょう。

入力はリズムよく。
     正確に打つことも大事ですが、一定のリズムで入力することがもっと重要です。 EELLLでは、1行の入力が終わるまで入力した文字列が画面上に現れないようになっていますが、それはリズムを重視した練習を行いやすくするためです。

練習は継続的に。
     毎日決まった量(時間)を練習しましょう。なお、1日に2時間以上練習しても効果は上がらないそうです。 30分とか1時間とか、時間を決めて効率的に練習しましょう。

覚えたはずの字のコードを忘れても気にしない。
     人間誰でも忘れるもの。忘れたらまた覚えればいいだけのことです。

Tコードを使う
*******

使用法
===

C-\ (toggle-input-methodがマップされているキー、see Tコードモード切り替えキーの変更)で、Tコードを入力するモードに入ります。モード行が[TC]と変わります。

この状態で、たとえばjgと打つと、はが挿入されます。2打鍵目にスペースを入力すると1打鍵目の文字がそのまま挿入されます。英小文字を少しだけ挿入したい場合に便利です。

シフトキーを押しながら入力すると、設定により動作が異なります。具体的には、キー配置名の設定で、末尾が-shiftの配置を使うようにした場合、シフト機能が有効になります。シフト機能が有効な場合、デフォールトでは、ひらがなからカタカナへの変換が行われます。つまり、「の」を入力するためのストロークをシフトキーを押しながら行うと、「ノ」が入力されます。また、シフト機能が無効で、変数tcode-shift-lowercaseがtに設定されていた場合、その英字の小文字が直ちに挿入されます。たとえば、Aと入力すると、aが挿入されます。シフト機能が無効で、tcode-shift-lowercaseがnilの場合、入力した文字がそのまま入力されます。シフトを有効にしたい場合は、.tcでtcode-set-key-layoutの配置の部分を、-shiftの付いている分に変更してください。どのような配置があるのかは、変数tcode-key-layout-listの値を参照してください。

1打鍵目を打った直後にその1打鍵目を取り消すには、DEL(バックスペース)を入力します。

Emacsのコマンド引数も使用できます。文字を挿入するストロークの前にC-uと入力すれば、次に入力した文字が二つ挿入されます(挿入される文字の数が非Tコードモードの場合と異なります)。整数を指定した場合(C-u 3など)はその数だけ挿入されます。

もう一度C-\を打つと、非Tコードモードに戻ります。

ミニバッファでも、C-\を入力することで、Tコードを使うことができます。ミニバッファでTコードモードになっているときは、ミニバッファの左端に[TC]と表示されます。

Tコードモードでは、2ストロークで漢字を入力する以外に、いろいろな機能が用意されています。これらの機能は、Tコードコード表の空の所に割り当てられています。次に列挙します。

jf
     前置型の部首合成変換を開始します(see 部首合成変換)。

     ただし、変数tcode-use-postfix-bushu-as-default をtにすると、77とjfの機能が入れ換わります。

fj
     交ぜ書き変換を行います(see 交ぜ書き変換)。

55
     現在のカーソル位置にある文字の打ち方(ヘルプ表)を表示します(see 様々なヘルプ機能)。

44
     ヘルプ表で表示された打ち方で最も新しい分を再度55と同様に表示します。

11
     LL (第1ストローク:左、第2ストローク:左)のストローク表(see ストローク表の見方)を表示します。なお、ストローク表を表示するためのキーストロークは、1が左、0が右に対応しています(最上段の、Tコードで用いるキーの左端と右端)。

10
     LR (第1ストローク:左、第2ストローク:右)のストローク表を表示します。

01
     RL (第1ストローク:右、第2ストローク:左)のストローク表を表示します。

00
     RR (第1ストローク:右、第2ストローク:右)のストローク表を表示します。

32
     句読点セットを「、。」と「, . 」の間で切り替えます。デフォールトは「、。」です。変数tcode-switch-table-listを使うと、自分の好みの句読点セットを利用することもできます (see 個人用設定ファイルの見本)。

77
     カーソル直前の2文字を部首合成変換によって合成した文字で置きかえます (see 部首合成変換)。 jfが前置型の部首合成変換であるのに対して、77は後置型の部首合成変換です。

88
     現在のカーソル位置にある文字を、1打鍵目と2打鍵目を入れかえて打ったときの文字で置きかえます。たとえば、味の上にカーソルを置いて88を打てば、味がのに変わります。行末にカーソルがある場合には、その直前の文字に対してこの処理を行います。

99
     現在実行途中の部首合成変換・交ぜ書き変換を中断します。また、ヘルプ用のウインドウを消します。

22
     別バッファ(*jis-code*)にJISの全文字をコード順に表示します。このバッファ上で適当な文字の上にカーソルを合わせてRETを押すと、その文字が、直前にいたバッファに挿入されます。qを押すと、直前にいたバッファに戻ります。

33
     英数字の文字コードを2バイト・1バイトの間で切り替えます。

58
     活用語を優先して交ぜ書き変換を行います(see 活用する語を変換する際の注意点)。

[1-4]8, [2-5]9
     文字数を指定して後置型交ぜ書き変換を行います(see 文字数を指定した交ぜ書き変換)。

なお、Tコードモードで?を押すと、以上の、キーと機能との関係の要約が表示されます。

部首合成変換
======

外字を入力するための補助入力機構の一つに部首合成変換があります。

部首合成変換とは
--------

外字の入力をするのに、Tコードに割り当てられている文字の部首を組み合わせる方法があります。これを部首合成変換と呼んでいます。

Tコードの部首合成変換で使用する部首は、実際には漢和辞典にのっている部首ほど正確ではなく、文字の形を元にかなりいいかげんにできています。以下に主な部首を代表する文字を示します。

     ア、院→こざとへん　　イ→にんべん　　　　　ウ→うかんむり
     エ→工　　　　　　　　オ→てへん　　　　　　サ→くさがんむり
     シ→さんずい　　　　　ヌ→又　　　　　　　　ネ→しめすへん
     リ→りっとう　　　　　レ→礼のつくり　　　　ロ→口(くち)
     ワ→わかんむり　　　　ン→にすい　　　　　　部→おおざと
     性→りっしんべん　　　独→けものへん　　　　四→あみがしら
     図→くにがまえ　　　　之→しんにょう

これらの文字だけでなく、部首を構成要素として含んでいる文字で代用することもできます。

以下に、部首合成変換のいくつかの例を示します。

     ロ + ル→兄      日 + 生→星      シ + 談→淡      点 + 重→薫
     病 + 波→疲      図 + 木→困      国 + 木→椢      頭 + 川→順
     石 + 白→碧      言 + 売→読      ア + 良→限      水 + う→永

また、部首の引き算もできます。

     　頭 - 豆→頁　　　例 - イ→列　　　列 - リ→歹　　　麻 - 木→床
      (頭 = 豆 + 頁)　 (例 = イ + 列)　 (列 = 歹 + リ)　 (麻 = 床 + 木)

また、共通の部首を取り出す場合もあります。

     題 + 題→頁      進 + 進→之

いくつかの記号は、意味を表す文字で入力します。

     た + す→＋      ひ + く→−      か + け→×      わ + る→÷
     等 + 号→＝      不 + 等→≠      矢 + 上→↑      、 + 、→，

ただし、記号はデフォールトの辞書には登録されていません。この変換を行いたい場合は、辞書に登録してください(see 部首合成変換辞書)。

2文字の組み合わせで入力できない文字は、3文字以上の組み合わせで入力できる場合があります。

     劇 = (七 + 上→虍) + リ

まれに、組み合わされる2文字の順序が関係ある場合があります。

     門 + オ→閉      オ + 門→捫      足 + 戔→践      戔 + 足→踐

部首合成変換は部首合成変換辞書に基づき行われます(see 部首合成変換辞書)。tc2での部首合成変換アルゴリズムはちょっと変わっています。実際にどの文字が入力されるのかは、一般に、組み合わせる2文字を打鍵してみるまでわかりません。

tc2での部首合成変換
-----------

Tコードモードでjfと打つと部首合成変換モードに入ります。画面には▲と表示されます。この状態で、Tコード文字を二つ入力すると、その2文字を合成してできる文字にそれらが置きかえられます。合成してできる文字がないと、beep音がなります。

部首合成変換は再帰的に使うこともできます。たとえば、劇[(七+上→虍)+リ] という文字を入力したい時には、

       キー                          画面
     ---------------------------------------
       jf (部首合成変換に入る)       ▲
       jf (さらに部首合成変換に入る) ▲▲
       ib (七)                       ▲▲七
       ht (上)                       ▲虍
       pd (リ)                       劇

のようにして入力することができます。

また、Tコードモードで77と打つと、カーソルの直前の2文字を合成して、その2文字を合成結果の文字に置きかえます(後置型部首合成変換)。こちらの方が分かりやすいかもしれません。

       キー                          画面
     ---------------------------------------
       ib (七)                       七
       ht (上)                       七上
       77 (合成)                     虍
       pd (リ)                       虍リ
       77 (合成)                     劇

     ■あまりに複雑な合成が必要な文字については交ぜ書き変換を使う方がよいでしょう(see 交ぜ書き変換)。 □

部首合成変換辞書の初期化(辞書の読み出し)は、処理能力の低い計算機では時間がかかることもあります。このため、必要となるまで初期化を行わないようにしたいと思うかもしれません。 Emacsの変数 tcode-bushu-on-demandを0以外の値に設定すると、その値に応じて辞書初期化のタイミングが変わります。See ユーザ変数.

なお、辞書の初期化がされないうちは部首合成変換は使用できません。

対話的な部首合成変換
----------

コマンドtcode-bushu-convert-preceding-char-interactivelyを使えば、部首を順次入力して、インクリメンタルに文字を選択することができます。このコマンドは、デフォールトではキーに割り当てられていません。使いたい場合は、次のように設定してください。

     (add-hook 'tcode-ready-hook
     	  (function
     	   (lambda ()
     	     (tcode-set-action-to-table '(5 5) ; 66で対話的な部首変換
     					'tcode-bushu-convert-preceding-char-interactively))))

このコマンドは、入力された1文字に対し、対話的に変換候補を表示します。例えば、「山」と入力し、変換すると、エコーエリアに次のように表示されます。

     山 => 岡 [岳岩岸端缶嵩仙岨辿……

この例では、=>の左側にある山の部分が現在の対象部首の集合で、 =>の右側にある岡が変換候補です。 [以降が他の候補を表しています。この状態で使用できるキーは次のとおりです。

SPC

>
     変換候補を次の字へ移す。

<
     変換候補を前の字へ移す。

RET
     先頭の候補を確定する。

文字
     文字を対象部首に追加して変換候補を絞る。

Backspace
     対象部首を1文字し、一段階前の状態に戻る。対象部首がなくなる場合は変換自体を中断する。

部首合成変換辞書
--------

部首合成変換辞書bushu.revには、1行に1文字分のエントリがあります。

     唖口亜

上の行は、唖という見出しの文字は口と亜の2文字から成ることを意味します。現在の辞書では、過去の経緯から、見出しの文字を構成している文字は1文字または2文字で構成されていますが、何文字でも構いません。

     院ア

上のように、1文字で構成されている場合、その文字と見出しの文字は等価である、ということを定義しています。つまり、院はこざとへんを代表する文字ですが、院の代わりにアを使っても、こざとへんを入力できるのです。ここで、院とアの順番に注意してください。見出しの文字の方が代表する文字です。

部首合成変換辞書への登録や削除はbushu.revを編集することにより行います。ここで、辞書はEUCコードでソートされていなければなりません。登録したときは、忘れずにソートしてください。

標準辞書bushu.revとは別に、記号類を登録してあるsymbol.rev があります。この辞書を使いたい場合は、その内容をbushu.revに追加して、ソートしてください。 Emacsを用いてソートする場合は、bushu.revにC-x iなどで symbol.rev追加して、C-x h M-x sort-linesの後 bushu.revを保存してください。

交ぜ書き変換
======

Tコードで外字を入力するには、部首合成変換のほかに交ぜ書き変換という方法もあります。

交ぜ書き変換とは
--------

Tコードを使って熟語変換のようなことをすることも考えられます。この場合、 Tコードで入力できる漢字を直接入力することで同音異義語が減り、通常のかな漢字変換よりも効率のよい変換をすることができます。

     き社のき者がき車でき社した
     き社→帰社、貴社  き者→記者  き車→汽車

このような変換を、読みとして漢字とひらがなを交ぜ書きして指定できることから、交ぜ書き変換と呼びます (読みをひらがなだけで指定した場合でも、ここでは交ぜ書き変換と読んでいます。「交ぜ書きが可能な変換」というくらいの意味です。)。

交ぜ書き変換では、接頭語・接尾語はTコードで入力できることが多いのでいちいち接頭語つきの複合語として辞書に登録する必要はありません。そのかわり、一つの単語について「読み」の組み合わせが増えるため、辞書が大きくなってしまいます。

     郵便　　ゆうびん、ゆう便、郵びん
     方程式　ほうていしき、方ていしき、ほう程しき、ほうてい式、
     　　　　方程しき、方てい式、ほう程式

一方、直接入力できる漢字のみからなる候補は、辞書に登録されていてもまず使用しないので、削除した方がよいかもしれません。その方が、同音異義語が減り、選択がしやすくなるからです。 See 交ぜ書き変換辞書の作り方. また、see 交ぜ書き変換辞書からの削除.

tc2での交ぜ書き変換---後置型
-----------------

tc2標準の交ぜ書き変換は、この「後置型」です。

この後置型交ぜ書き変換では、変換の前に特にモードに入ることなく適当に読みを入力して、最後にfjと打つと、カーソル直前の文字列の中で辞書に登録されている最も長い読みを使って (いわゆる最長一致)漢字変換が行われます。

候補の選択法
......

候補の選択法は、入力した読みに対する辞書中の候補の数によって異なります。

読みに対し、候補が一つの場合
     その候補に変換されますので、その候補を選択するためには、次の入力を始めるか、またはRETにより明示的にその候補を確定します。

     なお、前置型の変換(see tc2での交ぜ書き変換---前置型)で、活用する語の変換をしないように設定している場合(see ユーザ変数)は、自動的に確定します。

候補がちょうど二つの場合
     たとえば、読み「かん定」に対する漢字として、「勘定」「鑑定」の二つだけが辞書に登録されているとします。このとき、「かん定fj」(後置型の場合)と入力すると、次のように候補が表示されます。

          △{勘定,鑑定}

     ここで左側に表示されている候補を選ぶには、第1候補を選択するキー(デフォールトではd)を押します。右側の候補を選ぶには、同様に、第2候補を選択するキー(デフォールトではf)を押します。

     選択に用いるキーは、変数tcode-mazegaki-alternative-select-first-keys と変数tcode-mazegaki-alternative-select-second-keysの値を変えることで変更できます。いずれかの変数の値がnilの場合は、この選択法は用いず、候補が10個までの場合と同じになります。

候補が10個までの場合
     たとえば、「あわfj」(後置型の場合)と入力すると、ミニバッファに一覧が次のように表示されます。

          [- 泡 阿波 粟] -  - [- - - -]

     これは、Tコードで使用するキーの、上から3段目を表しています。候補を選択するときは、選びたい候補に対応しているキーを押します。上の例では、「泡」を選択したいときは、Tコードで使用するキーの、上から3段目、左から2番目のキー(sのキー)を押します。

候補が10個を超える場合
     たとえば、「こうfj」と入力すると、ウインドウに次のように表示されます。

           -    -    -    -     -        -     -    -    -    -
          [孔   幸   厚   黄  ] 逅      鈎 [  肛   浩   袷   恰]
          [頁   煌   候   稿  ] 項      耕 [  膠   淆   功   侯]
          [-    -    -    -   ] -        - [   -    -    -    -]     (1/5)

     この表はTコードで使用するキーを表しています。候補を選択するときは、選びたい候補に対応しているキーを押します。なお、候補の優先度と入力するキーとの対応は、変数tcode-mazegaki-stroke-priority-listで指定できます(see ユーザ変数)。

     表の右端の(1/5)は、候補の数が表三つ分あり、その表のうちの 1番目を表示していることを示しています。表を切り替えるには、次の表に切り替える場合はSPCを、前の表に切り替える場合は DELを押します。

確定前の状態(交ぜ書き変換候補選択モード)で利用可能なキーは次のとおりです。

SPC
     次の表または候補を表示する。

DEL
     前の表を表示する。

RET
     候補を確定して、候補選択モードを抜ける。

<
     読みを伸ばす。

>
     読みを縮める。

C-u
     候補を読みの状態にもどして、候補選択モードを抜ける。

|
     漢字を登録して、その後変換する。

!
     現在の読みの漢字を(一つ選んで)削除する。

C-b
     現在の区切りの先頭部分にカーソルを移動して、そこから後置型変換を行う(読みをさかのぼって変換する)。確定したら、その前の候補選択に戻る。

C-f
     さかのぼった変換を一つ分取り消す。

上に挙げた以外のキーを入力すると、現在の候補を確定して、候補選択モードを抜けた後、入力されたキーを再実行します。

候補の先頭4個を超えた候補を確定すると、その候補は5番目の候補になり、次回の出現順(一覧表での並び方)が変わります(先頭4個の候補の出現順には影響を与えません)。一方、候補の先頭4個までを確定したときは、次回同じ読みを変換しても、その出現順は変わりません。候補入れ替えの対象とならない候補の数は、変数tcode-mazegaki-fixed-priority-countで指定できます(see ユーザ変数)。

活用する語に対する変換候補の検索法
.................

交ぜ書き変換モジュールでは、活用する語に対する変換候補の検索は、文法の情報を用いず、パターンマッチングのみにより行います。辞書には、読みとして、たとえば「ながめ―」のように、語幹`ながめ'と活用する語であることの印`―'をつなげたものを登録します。

パターンマッチングによる変換は次のように行われます。たとえば、「ながめて」と入力して変換した場合には、「ながめ」と「て」とに分割すれば「ながめ」が辞書の読みの「ながめ」と一致しますので、「ながめ」の部分を「眺め」にし、語尾「て」をつなげたものに変換します。

パターンマッチングのみによる変換の問題点としては、文法に合わない語尾でも変換候補になることが挙げられます。この問題点に対し、交ぜ書き変換モジュールでは、「人が選ぶので、おかしな候補があってもよい」という立場で、これ以上の自動的な候補削減を行わないことにしています。

逆に、パターンマッチングのみによる変換の長所は、古文や方言に柔軟に対応できることです。

活用する語を変換する際の注意点
...............

活用する語は、以下の各項目に注意すれば、活用しない語と同様に変換できます。

  * 活用しない語と活用する語は、異なる読みとして扱われます。

     たとえば、「葵」と「蒼い」は、両方とも読み方は「あおい」ですが、「葵」は活用しない語、「蒼い」は活用する語です。ですから、変換の際に表示される読みの一覧の中に、これらの候補が同時に現れることはありません(「蒼い」が活用しない語として登録されている場合を除く)。

  * 活用しない語は、通常、活用する語よりも優先されます。

     上の「あおい」の例では、まず「葵」が表示され、読みを縮める(> を入力する)と、活用しない語として読みを縮めて区切り直します。つまり、この場合では、読みを縮めていくと、「おい」、「い」の順に活用しない語の候補一覧が(もしあれば)表示されます。その後、更に読みを縮める (『縮める』という語を使っていますが、この例のように、実際には長くなることもあります。) と、読みを、活用する語として区切り直し、「蒼い」が候補となります。

     活用する語であることを明示して変換すれば、活用する語である「蒼い」をすぐに選択できるようになります。これは、fjの代わりに58 (またはC-u fj)を入力することにより行えます。

  * 活用する語の区切り直しは、語幹の長さに基づいて行われます。

     活用する語は『語幹』と『語尾』に分かれますが、区切り直しは、縮める方向の場合では、語幹の長い候補が優先され、また、その中で語尾の長い候補が優先されます。

  * 活用語尾にはひらがな・カタカナしか使えません。

     たとえば、読み「お―」・漢字「押」が登録されていても、「押し通す」を入力しようとして、「おし通す」という読みで変換することはできません。この場合は、「おし」という読みで変換し、その後、「通す」を入力してください(または、「おし通―」という読みを登録してください)。

文字数を指定した交ぜ書き変換
..............

以下のキーストロークにより、後置型で変換対象(読み)の文字数を指定して交ぜ書き変換ができます。

活用しない語

          キーストローク  読みの長さ
                18          1
                28          2
                38          3
                48          4

活用する語

          キーストローク  読みの長さ
                29          2
                39          3
                49          4
                59          5

ここで、活用する語の読みの長さには、活用語尾の長さも含みます。

また、fjのコマンド引数として文字数を指定することができます。C-u fjの場合は活用する語(長さは自由)、正の整数(たとえばC-u 3 fj)の場合は活用しない語で文字数を指定、負の整数(たとえばC-u - 3 fj)の場合は活用する語で文字数を指定、というようになっています。

文字数を指定した場合、活用しない語では、指定した読みに対し候補が一つしかない場合は、変換後ただちに確定します。

tc2での交ぜ書き変換---前置型
-----------------

変数tcode-use-prefix-mazegakiをtにすると、前置型の交ぜ書き変換を使うことができます。 Tコードモードでfjと打つと交ぜ書き入力モードに入ります。このモードから抜けるときは、99を押します。このモードで読みを入力し、 SPCを押すと、交ぜ書き変換候補選択モードに入ります。候補選択の方法は後置型の場合と同じです(see 候補の選択法)。

読みの補完
-----

交ぜ書き変換辞書の読みから、入力途中の文字列を補完する(未入力の部分を補う)ことができます。「読み」といっても、交ぜ書きですから、すべて漢字でも構いませんし、カタカナでも英単語でも構いません。

使用法を例で説明します。ここでは、辞書に読み「アルゴリズム」、漢字「アルゴリズム」が登録してあるとします。

「アル」と入力し、=を押すと、「アル」で始まる読みが他にない場合では、「アルゴリズム」と補完され、その読みで変換されます。また、「アルゴリズム」の他に「アルゴン」という読みがあった場合では、「アルゴ」まで補完され、ミニバッファに

     アルゴ{リズム, ン}

と表示されます。{}の中が候補です。この候補に対し、次の操作ができます。

SPC
     次の候補を先頭へ

DEL
     最後の候補を先頭へ

=
TAB
LFD
     先頭の候補を選択し、それを読みとして交ぜ書き変換

RET
     補完をそこまでで中断

交ぜ書き変換辞書の管理
-----------

交ぜ書き変換辞書への漢字の登録および辞書からの削除の方法を説明します。

交ぜ書き変換辞書への登録
............

交ぜ書き変換辞書への登録の方法には、一つの漢字を登録する場合と、複数の漢字をまとめて登録する場合の2通りあります。

一つの漢字を登録する場合
     Tコードモードで|を押します。その後、読み・漢字を順に入力していけば登録できます。

     ここで、交ぜ書き変換の場合、同じ漢字に対して複数の読みを登録したい場合があります。たとえば、「春夏秋冬」という漢字に対して、「春」だけ入力法を知っている場合には、「春夏秋とう」「春夏しゅう冬」「春夏しゅうとう」「春か秋冬」「春か秋とう」「春かしゅう冬」「春かしゅうとう」という7通りの読みがあります。これは、読みを「春|か|しゅう|とう」、漢字を「春|夏|秋|冬」と入力することで、一度に登録できます。

複数の漢字を登録する場合
     まず、次の形式のデータを用意します。

          読み1 /漢字1-1/漢字1-2/.../漢字1-M/
           :
          読みN /漢字N-1/漢字N-2/.../漢字N-L/

     次に、このデータがあるバッファ上で M-x tcode-mazegaki-make-entries-bufferとします。なお、すでに登録されている読みと漢字との組み合わせについては、二重登録はしないようになっています。

交ぜ書き変換辞書からの削除
.............

交ぜ書き変換辞書からの削除の方法には、一つの漢字を削除する場合と、複数の漢字をまとめて削除する場合、入力法を覚えた漢字一字について不要な漢字をまとめて削除する場合の3通りあります。

一つの漢字を削除する場合
     TコードモードでC-u !を押し、読みを入力します。変換中や変換中断直後なら!だけで構いません。続いて、もしその読みに対して漢字が複数ある場合には、どれを削除するか選びます。

複数の漢字をまとめて削除する場合
     まず削除する漢字のデータを用意します。データの形式は、まとめて登録する場合と同じです (see 交ぜ書き変換辞書への登録)。次に、そのデータがあるバッファで M-x tcode-mazegaki-delete-entries-bufferとします。なお、辞書に登録されていない読みと漢字との組み合わせに関しては無視します。

入力法を覚えた漢字一字について不要な漢字をまとめて削除する場合
     M-x tcode-mazegaki-delete-kanji-from-dictionaryとし、漢字を1字指定します。こうすると、その漢字が読みに含まれず、漢字に含まれるものを削除します。削除する前に、確認のため、漢字一覧が表示されますが、このうち、実際に削除されるのは、指定した漢字を含む候補だけです。なお、このときに表示される漢字一覧はコマンドtcode-mazegaki-make-entries-regionで登録可能な形式です。部分的に登録し直したい場合に使うとよいでしょう。

     ここで、次のことに注意してください。たとえば、「花」を指定した場合、読み「あじさい」・漢字「紫陽花」というように、特殊な読みを持つものも削除されます。このような特殊な読みを辞書に残しておきたいのなら、新たに登録し直さなければなりません。

tc2での交ぜ書き変換---LEIMを使用する場合
-------------------------

 -- Function: tcode-kkc-region
     リージョンで囲んだ平仮名を漢字に変換する。

M-x tcode-kkc-regionとする事で、リージョンで囲んだ平仮名を漢字に変換します。この時リージョン内は文章ではなく、単語を含めるようにして下さい。通常の交ぜ書き変換辞書に載っていないものを変換するのが主な目的です。変数tcode-kkc-torokuで、変換した漢字を交ぜ書き変換辞書に追加するか制御できます。

適当なキーにバインドしておくと便利です。例えば C-SPCで変換をしたい場合は、次のコードを.tc に書いておきます。

     (define-key ctl-x-map " " 'tcode-kkc-region)

Emacs 20以降では、Mule機能が本家Emacsに統合されました。同時に英語以外の言語の入力方法としてLEIMと呼ばれるパッケージが提供されるようになりました。LEIMは日本語用の変換方法に、kkc-region(kkc: Kana Kanji Converter)を採用しています。

tcode-kkc-regionはLEIM付属の日本語辞書を使って変換を行います。 LEIM付属辞書の実体は、SKK ver. 8.1付属のSKK-JISYO.Lですが、変換エンジンはSKKではありません。Emacs 21では、混乱を排す為、ファイル名が ja-dic.elに変わっています。

交ぜ書き変換辞書の作成
-----------

この章では、新たに交ぜ書き変換辞書を作成するための手順を簡単に説明します。

ただし、通常は、これから説明する方法は使う必要がありません。交ぜ書き変換辞書は、初期設定を行えば自動的に作成されるからです。自動的に作成される辞書は、「Tコードで入力できる漢字がない」という前提のもとで作成されたものです。この辞書をもとにして、登録や削除を行ってください。

交ぜ書き辞書の作成に必要なファイル
.................

交ぜ書き変換辞書を作るために必要なファイルは、パッケージインストール時に、様々なファイルと共に一つのディレクトリに置かれます。そのディレクトリは、tcode-site-data-directoryの値を調べれば分かります。

以下のファイルが交ぜ書き変換辞書の作成に用いるファイルです。

pd_kihon.yom
     元となる辞書ファイル。

t225.dat
t300.dat
t400.dat
t450.dat
t575.dat
t675.dat
t900.dat
t1200.dat

     tの後ろの数字は、漢字を大体何文字位覚えたかを示しています。

交ぜ書き変換辞書の作り方
............

 1. 「完全に打ち方を覚えた漢字の表」(certain)と、「まだ完全には覚えていない漢字の表」(uncertain)の二つのファイルを作ります。

     これは、t*.datファイルを適当につなぎ合わせて作ればよいでしょう。 t*.datの内容をざっと見て、「大体この中にある漢字は全部覚えたな」と思ったファイルをcatなどでつなぎ合わせて、certainファイルを作ります。同様に、「今練習中だけど、まだ完全には覚えていないな」という漢字の含まれるファイル群をつなぎ合わせて、uncertainファイルを作ります。

          ■ただし、t*.datはTコード用のデータですので、TUTコードを利用する場合では、certain、uncertainを、t*.datを使わず自分で用意しなければなりません。書き方はt*.datを参考にしてください。 □

     たとえば、t225.datとt300.dat中の漢字は全部覚えたが、 t400.datとt450.dat中の漢字はまだ不完全、それ以外の漢字は全然打てない、という場合には、次のようにcertainとuncertainファイルを作ることになります。certainとuncertainは、 tcode-data-directoryで指定されたディレクトリに置きます。 (例では~/TCODE/になっています。)

          % cd tcode-site-data-directoryで指定されたディレクトリ
          % cat t225.dat t300.dat > ~/TCODE/certain
          % cat t400.dat t450.dat > ~/TCODE/uncertain

     Perl5を持っている場合には、mkcertain.plというプログラムを使って、この作業を対話的に行うことができます。

          ■生成される辞書が、certain、uncertainで指定した文字および指定しなかった文字によってどう違ってくるのかを簡単に補足します。交ぜ書き変換辞書では、ある漢字(変換候補)に対して、漢字を含む読みがあり得ます。certain、uncertainの指定の仕方によって、読み中に現れる漢字が変わります。次の対応になっています。

                           読み中にその字が現れる 読み中にその字の読みが現れる
               certain              ○                         ×
               uncertain            ○                         ○
               どちらでもない       ×                         ○

          たとえば、「茶飯事」という漢字について、「茶」をuncertainに含め、「事」をcertainに含め、「飯」はどちらにも含めないとすると、読みは「さはん事」、「茶はん事」になります。 □

 2. M-x tcode-make-mazegaki-dictionaryを実行します。

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

Tコードで文字の入力ができるようになると、インクリメンタルサーチのときにも文字をTコードで入力したくなるのは当然です。tc2では、isearchを再定義して、インクリメンタルサーチ時にTコードで文字を入力できるようにしています。

C-s (isearch-forward)と打つと、元のバッファがTコードモードだった時にはインクリメンタルサーチのプロンプトにI-Search [TC]と表示されます。このときキー入力をすると、それをTコードストロークと解釈してサーチ文字列に加えます。

また、インクリメンタルサーチ機能を日本語用に拡張しています。具体的には、以下の点です。

  * 行の折り返しも含めた検索

     文中で、語の途中で改行している場合でも、検索することができます。

  * C-wの拡張

     もともとのインクリメンタルサーチでは、C-wで、現在のカーソル位置から1語を検索文字列として取り出すという機能がありますが、日本語に対しては、1文字を対象にします。この主な理由は、日本語では単語の区切りを構文的に判断しにくいためです。けれども、C-wを繰り返し用いることで、入力の手間を削減することができます。

     また、英単語の場合は、そのまま単語が検索文字列に追加され、さらに、語と語の間に改行が入っていても検索できます(ハイフネーションには対応していません)。

ただし、上述の拡張は、インクリメンタルサーチ中でTコードモードになっている場合でのみ有効です。そうでない場合は、期待する動作を行わない場合があります。

インクリメンタルサーチ時の文字入力でも、部首合成変換や交ぜ書き変換が使用できます。ただし、交ぜ書き変換の場合は、一旦文字入力モードに入りますので、変換後、RETを入力してください。

サーチを開始してからTコードモードを切り替えるには、 isearch-toggle-tcodeコマンドを実行します。デフォールトではC-\ になっています。このとき、元のバッファのTコードモードも連動して切り替わります。モード切り替えキーはカスタマイズすることができます(see Tコードモード切り替えキーの変更)。

Cプログラムを書いていて、コメントに日本語をTコードで入力したい場合があります。ところが、コメントを記述している途中で関数名や変数名などを探そうとすると、モードの切り替えを行わなければなりません。このように、元バッファのTコードモードに関係なく非Tコードサーチをしたい場合があります。ユーザ変数tcode-isearch-start-stateを 0に設定するとサーチは常に非Tコードサーチから開始されます (see ユーザ変数)。

補完機能
====

tc2には、入力の補完機能があります。補完機能とは、入力に応じて、その入力した文字列で始まる単語の残りの部分を補う機能です。実際には、補完できる候補がある場合は自動的に表示されますので、その候補でよければそれを選択することになります。

補完機能はデフォールトでは使わないようになっています。使えるようにするには、.tcに次のコードを追加します。

     (add-hook 'tcode-ready-hook
               (function
                (lambda ()
                  (require 'tc-complete))))

補完機能では、補完用の辞書を用います。この辞書に語を登録しておくことで、先頭の何文字かを入力すると、登録してある語が補完できるようになります。辞書はtcode-data-directoryにcomplete.dic という名前で作成します。

辞書の形式は次のとおりです。 1行に一つの候補を記述します。また、ファイルの先頭に近い方が優先度が高くなります。記述の仕方は2通りあります。一つ目は、候補をそのまま記述する方法です。二つ目は、補完の際にマッチするときに使う文字列と補完した後の文字列の両方を空白で区切って記述する方法です。記述例を次に示します。

     シミュレーション
     シミュレータ
     四じょうなわて 四條畷

上の例で、1行目と2行目は候補をそのまま記述しています。 1行目と2行目は、「シミュレー」まで同じ文字列ですが、この場合、「シミュレーション」の方がファイルの先頭に近いので、優先度が高くなります。また、3行目では、「四じょ……」と入力して補完すると「四條畷」が挿入されます。補完というよりは変換かもしれません。

交ぜ書き変換用辞書も補完に利用できます。ただし、交ぜ書き変換用辞書は補完候補を探すのには向いていない形式ですので、tcode-complete-mazegaki-prefix-lengthで指定された文字数(デフォールトでは3)の文字列に対してのみ候補を表示します。一度補完すると自動的に補完用辞書にその候補を登録しますので、次回以降は、その候補については入力文字数の制約はなくなります。

さて、準備が整ったところで、補完機能を使って実際に補完する方法を説明します。例えば、上に挙げた辞書を使うとします。「シミュ」と入力すると、その続きに、 >シミュレーション [2) シミュレータ]<と表示されます。これは、第1候補として「シミュレーション」があり、第2候補として「シミュレータ」があることを示しています。「シミュレーション」を選択する場合はM-RETを入力します。「シミュレータ」を選択する場合はM-2 M-RETを入力します。どちらも選択しない場合はそのまま入力し続けてください。なお、補完候補の表示は、しばらく経つと消えるようになっています。すぐに消したい場合はC-gを入力するとよいでしょう。

変数tcode-complete-max-candidate-countで補完の際の最大候補数を指定できます。また、変数tcode-complete-context-length-minと tcode-complete-context-length-maxにより、入力した文字列のどの範囲を補完のために用いるのか指定できます。辞書の名前を変えたい場合は、変数tcode-complete-dictionary-nameで指定します。

辞書への登録は、リージョンで登録したい語を指定して、コマンド tcode-complete-add-to-dictionaryを実行することでも行えます。

様々なヘルプ機能
========

tc2では、様々なヘルプ機能を提供しています。

仮想鍵盤表示機能
     まず、仮想鍵盤とは何か説明します。Tコードでは、1ストローク目をどう入力するかによって、2ストローク目を入力したときに挿入される文字が違います。つまり、1ストローク目の入力に応じて、キーボードの各キーの役割が変化するとみなせるわけです。(ある状態での)仮想鍵盤とは、その状態で持つ各キーの役割がそれぞれのキーに直接結びついているとみなしたときのキーボード (鍵盤)のことです。

     1ストローク目を入力し、しばらく待つと、ウインドウが開き、次のストロークでどの文字が入力されるか(仮想鍵盤)が表示されます。たとえば、 jを押すと次のように表示されます。

           革   援   徒   舞    節        -    曹    -    -    -
          [員   よ   か   っ  ] く       題 [  制   運   び   公]
          [と   し   、   *   ] は       設 [  鉄   現   成   映]
          [ド   カ   り   」  ] 田       協 [  多   混   選   以]

     続いて、gを押せばはが挿入されます。ここで、-は無効な入力、*は特殊な機能(上の場合は部首合成変換)を表します。

     1打目を入力してから仮想鍵盤が表示されるまでの時間は、変数tcode-display-help-delayで指定できます (see ユーザ変数)。

ストローク表表示機能
     ストローク表(see ストローク表の見方)を表示します。See 使用法.

文字ヘルプ機能
     44や55により、文字の打ち方(ヘルプ表)を表示します (see 使用法)。たとえば、「字」という字の打ち方は次のように表示されます。

                                     字 = {ウ, 子}
          ・・・・      ・・・・
          ・・・・      ・・・・     ●…第1打鍵
          ●・・・      ・・・○     ○…第2打鍵

     ここで、字 = {ウ, 子}は、その文字を構成する部首を表しています (see 部首合成変換)。

     ヘルプ表は99で消すことができます。また、設定を行えば、自動的に消すこともできます(see ユーザ変数)。

     へルプ表の表示の仕方を変更することもできます。例えば、音声による読み上げなどを行いたい場合など、視覚的な情報よりも、入力キーストロークの情報を利用したい場合があります。この場合、変数tcode-help-with-real-keysを tにすることで可能になります。更に、出力の形式は、設定により変更できます。詳しくは関数tcode-stroke-to-stringの説明を見てください。

自動ヘルプ機能
     部首合成変換や交ぜ書き変換により文字(列)を入力したとき、その中に直接入力できる文字があれば、その字のヘルプ表を自動的に表示します。

その他の補助機能
========

これまでに説明した機能のほかにも、いくつかの便利な機能があります。ただし、設定をしないと使用できないものもあります。

カーソルの色でモードを表す機能
---------------

Tコードモードと通常(非Tコード)モードとでカーソルの色を変えることができます(設定が必要です)。変数tcode-mode-off-cursor-colorおよび tcode-mode-on-cursor-colorにより、各モードを表すカーソルの色を指定できます。

この機能はX Window System上のEmacsでのみ使用できます (他のウィンドウシステムでも使用できるかもしれません)。

この機能を使うには、以下を.tcに加えて下さい。

     (add-hook 'tcode-ready-hook
               (function (lambda ()
                           (and window-system
                                (tcode-enable-cursor-to-change-color)))))

コントロールキーを伴わないモード切り替え
--------------------

モードの切り替えは通常C-\により行いますが、これを特定の(コントロールキーを使わない)キーシーケンスによって行うことができます(設定が必要です)。

具体的には、SPC・TAB・,のキーを使用し、次のように切り替えます。

非TコードモードからTコードモードへ

     ,
          カーソルの直前の文字により動作が異なります。行頭または空白ならモード切り替え、それ以外ならそのまま,を挿入します。

     SPC ,
          スペースを挿入後、モードを切り替えます。

     SPC TAB
          スペースは、一旦挿入されますが、モードを切り替えた後取り除かれます。

Tコードモードから非Tコードモードへ

     SPC
          直前に行われた動作(キー入力)により動作が異なります。 Tコードによる入力の直後(前置型の交ぜ書き変換中のときを除く)では、モード切り替えを行い、かつスペースを挿入します。そうでない場合は、そのままスペースを挿入します。

     SPC TAB
          スペースは、一旦挿入されますが、モードを切り替えた後取り除かれます。

少し複雑に見えますが、実際は簡単です。たとえば、Tコードモードの時に、たとえば、Emacs ではと入力しようとしたとします。この場合は、たとえば、の後SPCを入力し、続けてEmacs を入力します。次に、,の後ではと入力すればよいのです。ここで、句読点の直後では、SPCによる切り替えでも空白は挿入されません。

SPCやSPC ,による切り替えの際に挿入される空白を自動的に削除したい場合は tcode-electric-space-without-insertingをtにしてください。

この機能を使用するには、以下を.tcに追加してください。

     ;;; コントロールキーを伴わないモード切り替え
     (global-set-key " " 'tcode-electric-space)
     (global-set-key "," 'tcode-electric-comma)

     (add-hook 'tcode-mazegaki-init-hook
               (function (lambda ()
                           (tcode-set-key " " 'tcode-electric-space))))

もう一つの外字入力
---------

Tコードで直接入力できない文字を手軽に入力したい時があります。この場合に、コマンドtcode-insert-ya-outsetを用いて、 Tコードで用いるキー以外のキーを利用して、2ストローク(またはそれ以上)で自分の定義した字を入力することができます(設定が必要です)。

たとえば、Tコードモードで、Tコードで用いるキー以外のキー[にこの機能を割り当てたとします。[を入力し、次にTコードに用いるキーを入力すれば、変数tcode-ya-outset-map-listで定義された表に基づき字が入力できます。 [をさらに入力すると、tcode-ya-outset-map-listのリストを順次切り替えます。なお、[を入力して1秒ほど待つと、仮想鍵盤が次のように表示されるようになっていますので、変数tcode-ya-outset-map-listでの字の並び方を覚える必要はありません。

      ￥   †   ‡   ¶    ▼       《    》   【   】   “
     [★   ◆   ■   ●  ] ▲       〈 [  〉   〔   〕   〃]
     [☆   ◇   □   ○  ] △       ← [  ↓   ↑   →   §]
     [※   ‥   …   ◎  ] ▽       ♪ [  〒   ♂   ♀   ‐]     (1/3)

設定は、コマンドtcode-insert-ya-outsetを適当なキーに割り当ててください(see Tコードモードでのキー割り当ての変更)。

漢字に対する交ぜ書き変換辞書中の読みの表示
---------------------

オンラインドキュメントで読み方のわからない漢字があった場合、交ぜ書き変換辞書を利用して、その読みを調べることができます。その漢字をリージョンで指定して、M-x tcode-mazegaki-show-yomi-regionとすると、その漢字の読みを交ぜ書き変換辞書から探してきて、もし見つかれば、それを表示します。活用する語に対しては、語幹のみをリージョンで指定し、C-u M-x tcode-mazegaki-show-yomi-regionとすることで、その語幹を持つ読みを探すことができます。

ひらがなからカタカナへの変換
--------------

入力済みのひらがなをカタカナへと変換できます。 M-x tcode-katakana-previous-charでカーソル直前の1文字をカタカナへ変換します。また、数引数を与えることによって、point のN文字前までにあるひらがなすべてをカタカナへ変換します。

1文字だけ変換した場合、その字は自動ヘルプ(see 様々なヘルプ機能)の対象となります。

適当なキーに割り当てて使用するとよいでしょう(see Tコードモードでのキー割り当ての変更)。

また、これとは別の方法として、コマンド tcode-katakana-preceding-charsを用いる方法もあります。これは、たとえば、この機能を%に割り当てているとすると、 %を1回入力すると、直前の1字がひらがなならカタカナになります。さらに%を入力すれば、2字前の字がその対象となります。このように、対象文字列を対話的に伸ばすことができます。また、DELを入力することで、対象文字列を縮めることができます。

区点コード・JISコードによる文字の入力
--------------------

入力法のわからない漢字の区点コードまたはJISコードが分かれば、そのコードにより文字入力ができます。

区点コードで入力するには、M-x tcode-insert-kanji-by-kuten-codeの後にそのコードを入力してください。JISコードの場合は M-x tcode-insert-kanji-by-jis-codeです。

これらの方法で入力した字は自動ヘルプ(see 様々なヘルプ機能)の対象となります。

句読点自動切り替え
---------

書く文章の内容によって句読点を変えることがある場合、その内容に応じて自動的に句読点を切り替えるようにしておけば、うっかり句読点を混在させてしまうことがふせげます。設定をすれば、この機能が使えるようになります。

設定は以下のように行います。自動切り替えを行う主モードを変数tcode-auto-identify-kutouten-mode-listで指定します。たとえば、text-modeとtex-modeで自動切り替えを有効にするには、以下のように.tcに記述します。

     (add-hook 'tcode-mode-hook 'tcode-auto-switch-kutouten)
     (setq tcode-auto-identify-kutouten-mode-list
           '(text-mode tex-mode))

設定したモードにかかわらず、強制的に自動切り替えを行うには、 C-u M-x tcode-auto-switch-kutoutenとします。

なお、句読点の判定は変数tcode-kutouten-regexp-alistに基づき行われます。

zap-to-charの拡張
--------------

EmacsではM-zでzap-to-charというコマンドが実行できますが、コマンドtcode-zap-to-charでは、これをTコードでも入力できるように拡張しています。

この機能を使用したい場合は、次のとおり.tcに記述してください。

     (global-set-key "\M-z" 'tcode-zap-to-char)

入力文字の統計管理
---------

入力された文字の統計情報を記録することができます。

次のコードを.tcに記述すれば自動的に統計情報が集められるようになります。

     (add-hook 'tcode-after-load-table-hook
     	  (lambda ()
     	    (when (eq tcode-input-method 'tcode)
                   (setq tcode-input-statistics-file-name "tcode-stat")
     	      (tcode-initialize-input-statistics))))

コマンドtcode-list-input-statistics-displayを実行することにより、文字ごとに何文字入力したか、またヘルプ表で何文字確認したかが表示されます。

変数tcode-input-statistics-file-nameに名前を設定しなければ、つまり、nilに設定しておけば、統計情報は保存されません。

カスタマイズ
******

ここではtc2でカスタマイズできる主な部分を簡単に説明します。もっと詳しく知りたい方はソースファイルを読んでください。なお、本マニュアルでは取り上げませんが、 customパッケージの機能を用いてカスタマイズすることもできます。

個人設定用ファイル
=========

Tコードに関するカスタマイズは~/.tcで行います。初期設定の方法については、see 個人環境の構築.

ファイル名.tcは変数tcode-init-file-nameで変更できます。この場合、.emacsで、その中の(require 'tc-setup)よりも前に設定しなければ有効になりません。

コード表のカスタマイズ
===========

Tコードのコード表(キーストロークと入力される文字との対応)は、自由に変更して構いません。例えば自分の名前に含まれる漢字が直接入力できない場合など、デフォールトのTコードで直接入力できるけれど自分ではめったに使わない字と入れ替えるとよいでしょう。

変更の例を次に示します。次のように.tcに記述してください。

     (add-hook 'tcode-after-load-table-hook
     	   (lambda ()
     	     (when (eq tcode-input-method 'tcode)
     	       ;; 坂→阪
     	       (tcode-set-action-to-table '(34 29) "阪")
     	       ;; ―→…
     	       (tcode-set-action-to-table '(27 32) "…"))))

上の例では、「坂」という字を「阪」に、「―」を「…」にそれぞれ変更しています。 '(34 29)の部分はキーストロークを表しています。数字についてはsee 入力文字と仮想鍵盤との対応.

入力フィルタ
======

キー入力をもとに文字表から引いてきたデータに対して、さらに変更を加えることができます。たとえば、1バイト文字から 2バイト文字への変換などは、このフィルタ機能を利用しています。

フィルタの設定は、変数tcode-input-filter-functionsで行います。フィルタを適用する条件と、フィルタの関数名の組を順に記述します。フィルタは、リストの順に、条件が成立した場合に、適用されます。フィルタ関数は、文字を入力して文字を出力しなければなりません。

フィルタの応用例を示します。

○SKK風の前置型交ぜ書き変換

シフトさせて入力することによって、前置型の変換モードに切り替えることができます。シフトを有効にして(see 使用法)、次のコードを.tcに記述します。

     (setq tcode-input-filter-functions
       '(((or tcode-katakana-mode tcode-shift-state) . japanese-katakana)
         ((and (boundp 'tcode-bushu-prefix-list)
     	  tcode-bushu-prefix-list)
          . tcode-bushu-prefix-convert)
         (tcode-alnum-2-byte . tcode-1-to-2)
         (tcode-shift-state . tcode-mazegaki-add-prefix)))

ユーザ変数
=====

ここでは、ユーザが変更できる主な変数を説明します。

パス
--

 -- Variable: tcode-data-directory
     Tコードの各種データファイルを置くディレクトリ。ディレクトリ名の最後が /で終わっていなければなりません。デフォールトでは~/tcode/。今後出てくる変数の中で、値が~/tcodeで始まるものはすべて、このtcode-data-directoryの値を変えることで、そのデフォールト値が変わります。ただし、この変数の値は tc.elロード時にだけ参照されるので、 Tコード起動後にtcode-data-directoryの値を変更しても意味はありません。

 -- Variable: tcode-mazegaki-dictionary-name
     交ぜ書き変換辞書のファイル名。デフォールトではmazegaki.dic。

 -- Variable: tcode-bushu-dictionary-name
     部首合成変換辞書のファイル名。デフォールトでは bushu.rev。

 -- Variable: tcode-record-file-name
     Tコード使用の統計を記録するファイルのパス名。nilなら記録しません。デフォールトでは~/.tc-record。

部首合成変換
------

 -- Variable: tcode-bushu-on-demand
     部首合成変換辞書の初期化をいつ行うかを指定します。数字が大きい方がより強い要求があったときにしか初期化を行いません。tcode-bushu-on-demandに指定された数以上の要求が来ると、部首合成変換辞書の初期化を行います。

     0
          tc.elロード時。

     1
          Tコードモードに入ったとき(デフォールト)。

     2
          部首合成変換を開始したとき。ストロークヘルプを実行したとき。

 -- Variable: tcode-use-postfix-bushu-as-default
     nilでないときに、jfで後置型部首合成変換を行い、77で前置型部首変換を行います。nilのときは逆になります(デフォールト)。

交ぜ書き変換
------

 -- Variable: tcode-use-prefix-mazegaki
     前置型の交ぜ書き変換(see tc2での交ぜ書き変換---前置型)を使う時にt。デフォールトではnil。

 -- Variable: tcode-mazegaki-stroke-priority-list
     候補選択時の候補の並べ方を指定します。キーアドレスのリストです (see 個人用設定ファイルの見本)。

 -- Variable: tcode-mazegaki-fixed-priority-count
     学習(候補の入れ替え)する際の、学習の対象外となる候補の数です (see 候補の選択法)。十分大きな値にしておけば、候補の入れ替えをしなくなります。

 -- Variable: tcode-mazegaki-yomi-max
     交ぜ書き変換の対象とする読みの長さの最大値を指定します。活用語の場合は活用語尾の長さも含みます。

     長くすると変換効率が悪くなるので、長くしすぎないようにしてください。

 -- Variable: tcode-mazegaki-enable-inflection
     nil でないとき、活用語の変換(see 活用する語に対する変換候補の検索法)をします。そうでないときは、活用語の変換をしません。

ヘルプ
---

 -- Variable: tcode-display-help-delay
     Tコードモードで、1打目を入力してから仮想鍵盤(see 様々なヘルプ機能)が表示されるまでの時間(秒)。

     NEmacs では整数しか指定できませんが、Mule/Emacs では小数も指定できます。

 -- Variable: tcode-auto-help
     nilでないとき自動ヘルプを行います(see 様々なヘルプ機能)。

     また、この変数の値を'delete-the-charに設定すると、直接入力できる字は削除します。つまり、表示された打ち方を見ながら再入力する必要があります。

 -- Variable: tcode-auto-remove-help-count
     ヘルプ用のバッファを自動的に消す関数tcode-auto-remove-helpは、この変数で指定した回数だけ呼ばれるとヘルプ用のバッファを消します。たとえば、次の設定では、Tコードモードのトグルを行ったときにヘルプ用のバッファが表示されていたら、そのバッファを消します。

          ;;; モード切り替え時にヘルプ用のバッファを消す。
          (add-hook 'tcode-ready-hook
                    (function
                     (lambda ()
                       (setq tcode-auto-remove-help-count 1)
                       (add-hook 'tcode-toggle-hook
                                 'tcode-auto-remove-help))))

     上の例について、 NEmacs以外のEmacsでは、tcode-toggle-hookの代わりにpost-command-hookを使ってもよいでしょう。

 -- Variable: tcode-adjust-window-for-help
     nilでないとき、ヘルプ用のウィンドウの高さを自動的に調整します。

     nilでも、もともとウィンドウが分割されていなかった場合では、自動的に調整します。

 -- Variable: tcode-help-with-real-keys
     nilでないとき、ヘルプ表を用いずに、キーストロークによりヘルプを表示します。

インクリメンタルサーチ
-----------

 -- Variable: tcode-isearch-start-state
     Tコードインクリメンタルサーチ開始時のTコードモードを指定します。

     nil
          バッファのTコードモードに同期(デフォールト)。

     t
          バッファのTコードモードと独立。開始時はバッファと同じ。

     0
          バッファのTコードモードと独立。常に非Tコードサーチから開始。

     1
          バッファのTコードモードと独立。常にTコードサーチから開始。

     バッファローカル変数です。

 -- Variable: tcode-isearch-enable-wrapped-search
     nilでなければ、行を折り返している日本語も検索します。

その他
---

 -- Variable: tcode-load-immediate
     nilでないとき初期設定時(tc-setup.elロード時)にTコードで使用するLispライブラリをすべてロードします。

 -- Variable: tcode-verbose-message
     nilでないとき様々なメッセージを表示します。

 -- Variable: tcode-input-command-list
     Tコードモードのとき通常のTコード入力を行うためのコマンドのリスト。

     たとえば、c-mode の ; (electric-c-semi)を、 TコードモードではTコード入力に使いたい場合、そのコマンドをこのリストに追加します。

フック
===

 -- Variable: tcode-ready-hook
     Tコードに関する初期化を行った直後に呼ばれます。これはEmacsを起動してから初めてtoggle-input-methodを行った時におこります。

     Tコードモードでのキー割り当ての変更などに使用します。

 -- Variable: tcode-bushu-ready-hook
     部首合成変換に関する初期化を行った後に呼ばれます。

 -- Variable: tcode-mode-hook
     各バッファにおいて初めてTコードを使おうとしたときに呼ばれます。

 -- Variable: tcode-toggle-hook
     Tコードモードを切り替えるたびに呼ばれます。

 -- Variable: tcode-after-load-table-hook
     文字表を読み出すたびに呼ばれます。正確には、読み出した直後に呼ばれます。

     コード入力に対する動作を一部変更する場合などに使用します。

 -- Variable: tcode-before-read-stroke-hook
     Tコードモードで、2ストローク目以降の入力を入力する前に呼ばれます。

     入力待ち状態でカーソルの色を変えたい場合などに使用します。

 -- Variable: tcode-mazegaki-init-hook
     最初に交ぜ書き変換モジュールをロードするときに呼ばれます。

     交ぜ書き変換に関する設定を行うときに使用します。

キー割り当ての変更
=========

Tコードモード切り替えキーの変更
----------------

Tコードモードの切り替えを行うコマンドはtoggle-input-methodです。 tc2ではC-\ に割り当てられています。

これを他のキーに割り当てるにはEmacsのdefine-keyを使って普通に設定すればよいのです。たとえばC-jにこの機能を割り当てたい時には下のように記述します。

     (define-key global-map "\C-j" 'toggle-input-method)

また、C-\への割り当てを取り消すには、以下のように記述します。

     (global-unset-key "\C-\\")

インクリメンタルサーチ時の切り替えキーの変更は次のとおりです。

     (define-key isearch-mode-map "\C-j" 'isearch-toggle-tcode)
     (define-key isearch-mode-map "\C-\\" nil)

ただし、インクリメンタルサーチ時の切り替えは、NEmacsの場合、次のとおりです。

     (setq search-tcode-char ?\C-j)

入力文字と仮想鍵盤との対応
-------------

tc2でのキー割り当ては、入力文字(実際のキー)ではなく、仮想鍵盤で用いるキーのアドレスにより行います。デフォールトでは、次の対応になっています。

  * 実際のキー配置

           1  2  3  4  5   6  7  8  9  0
           q  w  e  r  t   y  u  i  o  p
           a  s  d  f  g   h  j  k  l  ;
           z  x  c  v  b   n  m  ,  .  /

  * 仮想鍵盤で用いるキーのアドレス

           0  1  2  3  4   5  6  7  8  9
          10 11 12 13 14  15 16 17 18 19
          20 21 22 23 24  25 26 27 28 29
          30 31 32 33 34  35 36 37 38 39

この対応の変更は、tcode-set-key-layoutで行えます。たとえば、Dvorak配列用に変更したい場合は、以下を.tcに追加します。

     (add-hook 'tcode-ready-hook
     	  (function (lambda ()
     		      (tcode-set-key-layout "dvorak"))))

このように、よく使用すると思われるキー配列は、あらかじめtcode-key-layout-listに登録されています。独自のキー配列を用いたい場合は、この変数に新たに登録してください。

Tコードモードでのキー割り当ての変更
------------------

Tコードモードでのキー割り当ての変更は、関数tcode-set-keyで行います。

たとえば、「Tコードモードを抜けてからその文字を入力する機能」を定義し、それを\に割り当てるには、以下を.tcに記述します。

     (add-hook 'tcode-ready-hook
               (function
                (lambda ()
                  ;; 「\」でモード切り替え後挿入
                  (tcode-set-key "\\" 'tcode-inactivate-and-self-insert))))

関数tcode-set-keyは次のように定義してあります。

 -- Function: tcode-set-key key func &optional type
     KEYは割り当てを変更するキーです。 FUNCはコマンドのシンボルまたはnilです。 TYPEはキーのアドレスを指定する時などに用います。

コード入力に対する動作の変更
--------------

Tコードのコード入力に対する、挿入される文字列や機能の変更は、関数tcode-set-action-to-tableで行います。

ここでは、例として、通常Tコードで`「'を入力するコード (,gのストローク)に対し、鍵括弧の対`「」'を入力する機能を割り当ててみましょう。,gのストロークは'(37 24)になります。以下を.tcに追加します。

     (defun tcode-insert-matching-kagikakko (&optional arg)
       "`「」'を挿入し、その間にカーソルを移動する。
     整数 ARG を指定すると、挿入前のカーソル位置から ARG 文字を
     `「'の前に入れる。この場合、カーソルは`」'の手前である。"
       (interactive "P")
       (insert "「")
       (and arg (tcode-forward-char (prefix-numeric-value arg)))
       (save-excursion
         (insert "」")))

     (add-hook 'tcode-after-load-table-hook
               (function
                (lambda ()
                  (if (eq tcode-input-method 'tcode)
                      ;; 対応する「」を挿入する。
                      (tcode-set-action-to-table
                       '(37 24)
                       'tcode-insert-matching-kagikakko)))))

関数tcode-set-action-to-tableは次のように定義してあります。

 -- Function: tcode-set-action-to-table sequence value
     SEQUENCEは割り当てを変更するキーストロークです。キーアドレスのリストまたはキーアドレスを指定します。キーアドレスを指定した場合、続いてSPCを入力した時の動作を変更します。

     VALUEは以下が指定できます。

     コマンド(symbol)
          そのコマンドを実行します。

     関数(symbol, lambda式)
          その関数を引数なしで呼びます。

     変数(symbol)
          その変数を評価した結果の動作を行います。

     表(vector)
          更にその表に従った動作を行います。

     リスト(list)
          更にそのリストに従った動作を行います。

     文字列(string)
          その文字列を挿入します。

     文字(char)
          その文字を挿入します。

     nil
          キーストロークを無効にします。

個人用設定ファイルの見本
============

.tcの記述例を以下に挙げます。ただし、何を設定しているかを理解せずに以下の例をそのまま自分の.tcにしてはいけません。初めてTコードを使う場合は、最初は変数tcode-data-directoryを自分の環境に合わせて設定するだけにしておき、徐々に変更していく方がよいでしょう。

          [file sample.tc not included]

TUTコードで入力するには
*************

TUTコードはTコードと同様の漢字直接入力法です。tc2は、 TUTコードの入力環境としても使用することができます。ここでは、TUTコード用の設定法と、Tコード入力環境tc2の様々な機能をどうTUTコード用に割り当てているかを簡単に説明します。

TUTコード用の設定
==========

TUTコード用の設定は、以下を.tcに記述します。

     ;;; 基本設定(TUTコード)
     (setq tcode-default-input-method "japanese-TUT-Code")

     ;;; カタカナモードのトグルを「'」に割り当てる。
     (add-hook 'tcode-after-load-table-hook
               (function
                (lambda ()
                  (tcode-set-key "'" 'tcode-toggle-katakana-mode))))

     ;;; ストローク表を3段表示にする。
     (setq tcode-help-draw-top-keys nil)

カタカナモードのトグルを行うキーは、お使いのキー配列や好みに合わせて変更してください。

以上の設定は特にTUTコードで入力するときに必要となる設定ですが、これ以外の設定項目もTコードと同様に変更できます。

各機能の割り当て
========

Tコードで使用される機能 (see Tコードを使う)は、 TUTコードでも同様に利用できます。

最上段のキーの組み合わせは、Tコードと同様の割り当てです。数字を入力したい場合は、数字キーのあとにスペースを入力してください。

fj (交ぜ書き変換)はalj、jf (部首合成変換)はalaにそれぞれ割り当てています。これらの機能を、TUT記号を変更して使用することもできます。たとえば次のように.tcに記述してください。

     (add-hook 'tcode-after-load-table-hook
               (function
                (lambda ()
                  (if (eq tcode-input-method 'tutcode)
                      (progn

                        ;; 「k SPC」で交ぜ書き変換
                        (tcode-set-action-to-table 27 'tcode-mazegaki-begin-conversion)
                        ;; 「l SPC」で部首合成変換
                        (tcode-set-action-to-table 28 'tcode-bushu-begin-conversion))))))

Tコードモードでは、?や!が、それぞれヘルプ・交ぜ書き変換辞書からの漢字の削除の機能に割り当てられています。?や!を入力したいときは、C-qの後にそのキーを押して入力してください。

補助ソフトウェア
********

打ち方表作成プログラム hasida-table
========================

直接入力できる文字の打ち方をA4紙2枚分の表にしたものを、橋田(hasida@etl.go.jp)さんが考案されました。これはTeXで処理するものでしたが、これをPSで出力できるようにし、また、どの文字を表に入れるかを簡単にカスタマイズできるようにしたプログラム(Perlスクリプト)を藤原(makoto@ki.nu)さんが作成されました。

このプログラム(hasida-0.6.tar.gz)は、WWWで入手できます(see Tコード情報の入手方法)。プログラムの詳しい内容は、プログラムに付属の文書を参照してください。

Tコード練習プログラム DOGGG
=================

DOGGGは端末画面用のTコード練習プログラムです。現在、Sun OS 4.1.XとSolaris 2.X上での動作が確認されています。また、Windows95 / 98などのDOSプロンプト、または WindowsNTのコマンドプロンプトでも動作します。ソースファイルはdoggg.lzhという名前でウェブサイト (see Tコード情報の入手方法)から入手できます。また、DOS用のバイナリーパッケージも入手可能です。

skkinput3を利用するには
================

tc2はEmacs上でしか利用できませんが、Xで動作する日本語入力プログラムskkinput3を利用すれば、 X上の他のアプリケーションに対しても、Tコードを使用することができます。

skkinput-3.0.5以降(skkiput-3.0.4以前は不可)のバージョンに対して使用できます。skkinpt3がインストールされていれば、コマンドtcinputを実行することにより、Tコード用の設定で skkinput3を起動します。

個人用の設定は~/.tc-skkで行います。 ~/.tc-skkでは、少なくとも、tcode-data-directoryの設定と、次のコードを記述してください。

     ;;; isearchでTコードを使用しない。(skkinput3では使えない。)
     (setq tcode-use-isearch nil)

skkinput3では、tc2の機能に対して以下の制約があります。

ヘルプ関係は対応していません。
     skkinput3で複数のバッファを表示する機能が実装されない限りは対応する予定はありません。

交ぜ書き変換辞書に対する登録や削除のコマンドは使用できません。

デフォールトでは、交ぜ書き変換用辞書の保存は行わないようになっています。次のコードを~/.tc-skkに記述することで、学習による交ぜ書き変換用辞書の変更があった場合に、モードをオフにした時点で保存されるようになります。

     (add-hook 'tcode-im-end-conversion-hook 'tcode-save-dictionaries)

kinput2を利用するには
==============

tc2はEmacs上でしか利用できませんが、Xで動作する日本語入力プログラムkinput2 (ただし、Wnn用)をカスタマイズすれば、 X上の他のアプリケーションに対しても、Tコードを使用することができます。

このパッケージ中のkinput2ディレクトリに、ccdef.tcodeとtc-ki2.elの二つのファイルがあります。以下、kinput2でTコード入力ができるようにするための方法を説明します。

 1. Emacsを起動し、一旦Tコードモードにしてから、tc-ki2.elをロードします。 tc-ki2.elをロードするには、M-x load-file RETの後、 tc-ki2.elを指定します。

 2. rule.tcodeというバッファが生成されていますので、これを適当なディレクトリに保存します。これは、C-x b rule.tcodeの後、C-x C-wで保存すればよいでしょう。また、保存したディレクトリに、付属のccdef.tcodeも移します。

 3. rule.tcodeをEUCコードに変換します。たとえばnkfという漢字コード変換プログラムを利用して、次のようにすることで変換できます。

          % nkf -e rule.tcode > foo
          % mv foo rule.tcode

 4. ccdef.tcodeを編集して、rule.tcodeのパスを、先ほどrule.tcodeを置いたパスと一致するように変更します。

以上です。

kinput2を使用するときは、ccdef.tcodeのあるディレクトリで

     % kinput2 -ccdef ccdef.tcode

のように起動してください。