日本語OpenVMS

日本語OpenVMS

IMLIB/OpenVMS ライブラリ・
リファレンス・マニュアル

AA-PU8TE-TE


1999 年 4 月

本書は,ユーザが漢字変換のキー定義をできるようにするライブラリである IMLIB についての解説書です。

改訂/更新情報: 日本語 OpenVMS V6.2『IMLIB/OpenVMS ライブラリ・リファレンス・マニュアル』の改訂版です。
ソフトウェア・バージョン: 日本語OpenVMS Alpha V7.2
  日本語OpenVMS VAX V7.2


1999年4月

本書の著作権はコンパックコンピュータ株式会社が保有しており,本書中の解説および図,表はコンパックの文書による許可なしに,その全体または一部を,いかなる場合にも再版あるいは複製することを禁じます。

また,本書に記載されている事項は,予告なく変更されることがありますので,あらかじめご承知おきください。万一,本書の記述に誤りがあった場合でも,コンパックは一切その責任を負いかねます。

本書で解説するソフトウェア(対象ソフトウェア)は,所定のライセンス契約が締結された場合に限り,その使用あるいは複製が許可されます。

Copyright ©1999

次へ 目次 索引 DOC HOME


まえがき

本書の目的

本書は,ユーザ・キー定義ライブラリ,IMLIB/KEYBIND を使用したアプリケーションの開発者のためのマニュアルです。IMLIB/KEYBIND は,ユーザが漢字変換のキー定義をできるようにするライブラリです。IMLIB を使用してアプリケーションを開発すると,ユーザによるキー定義で各種のプログラムを動作することができます。ユーザによるキー定義の方法については,『ユーザ・キー定義 利用者の手引き』を参照してください。

本書の構成

本書は6つの章と2つの付録から構成されています。

第 1 章 IMLIBの機能について説明します。
第 2 章 アプリケーションを作成するための具体的な方法について説明します。
第 3 章 ACTIONを実行するモジュールの作成方法について説明します。
第 4 章 アプリケーションの作成について説明します。
第 5 章 IMLIBルーチンの一覧です。
第 6 章 IMLIBを使ったプログラムの開発について説明します。
付録 A KEYSYM TO KEYCODE がサポートする KEYSYM の一覧です。
付録 B IMLIBで定義済みのシンボルについて説明します。

表記法

本書では,以下の表記法を使用しています。

表記法 意味
[Return] 四角形で囲まれたこの記号は,キーボードのキーを押すことを示します。たとえば,[Return]は Returnキーを押すことを示します。
[Ctrl/x] [Ctrl/x] の記号は,Ctrl キーを押しながら,同時にあるキーを押すことを示します。たとえば,[Ctrl/c] は Ctrl キーと c 文字キーを同時に押します。
[ ] 大括弧は,項目が省略可能であることを示します。
英大文字 英大文字は,コマンド,修飾子,パラメータ,ルーチン名,ファイル名,ファイル保護コード名,システム特権の短縮形を示します。


第 1 章
IMLIB の機能

この章は,ユーザ・キー定義ライブラリ IMLIB を使うことで実現できる機能について書かれています。

1.1 ユーザによるかな漢字変換のキー定義

IMLIBは,かな漢字変換のキーをユーザが定義することができる機能を提供します。IMLIBが定める規則に従ってアプリケーションを作成すると,ユーザはKEYBINDファイルを書き換えることで,アプリケーションの中でのかな漢字変換入力を自分の好みのキー定義で行うことができるようになります。KEYBINDファイルについての詳細は,『ユーザ・キー定義 利用者の手引き』を参照してください。

IMLIBを使ったユーザ・キー定義をサポートすることには,次のような利点があります。

アプリケーションを作るときに必要な規則は,本書に書かれています。ユーザによるかな漢字変換キー定義の方法については,『ユーザ・キー定義 利用者の手引き』を参照してください。

1.2 ユーザによるかな漢字変換の付加情報の指定

IMLIBは,KEYBINDファイルによるかな漢字変換キー定義に加えて,かな漢字変換に関連する環境の指定を行う機能を,提供しています。このような付加情報の指定は,PROFILEファイルで行います。PROFILEファイルについての詳細は,『ユーザ・キー定義 利用者の手引き』を参照してください。

ユーザの指示どおりにアプリケーションが動作するためには,アプリケーションは PROFILEファイルに書かれている情報を検索し,その指示に従った動作をするように作成されなければなりません。

PROFILEに書かれた情報を獲得するにはGET PROFILE DATAを使います。

PROFILEには,複数のアプリケーションで共通に使われる情報と,個々のアプリケーションで使われる情報の両方を書くことができます。共通に使われる情報のINDEXは,『ユーザ・キー定義 利用者の手引き』を参照してください。アプリケーションの動作環境によっては,共通のINDEXが意味をなさない場合もありますので,アプリケーションには共通のINDEXをすべてサポートする義務はありません。しかし,できるだけ多くの共通のINDEXをサポートすることが望まれます。

アプリケーションごとのINDEXはアプリケーションが独自に決めることができます。INDEXは次のような形式に従ってください。


 
    facility-name.any-string 
 

たとえば, XYZというプロダクトが,エラーのときにベルを鳴らすかどうかをPROFILE の中で指定するようなときには,INDEXは


 
    XYZ.ERROR.bell 
 


のようになります。そのVALUEには,文字列 "enable" または "disable" をとるということをアプリケーションが独自に決めることができます。この場合は,PROFILEの中に


 
    XYZ.ERROR.bell : enable 
 


と書けば,そのアプリケーションでエラーが発生したときにはベルが鳴ることになります。

PROFILEのINDEXは大文字と小文字を区別しません。したがって
XYZ.ERROR.bellxyz.error.bellは同じINDEX とみなされます。
これに対してGET PROFILE DATAが返すVALUEは,PROFILEに書かれたとおりですので,大文字と小文字を区別して扱います。


第 2 章
アプリケーションの作成

この章には,アプリケーションを作成するための具体的な方法が書かれています。

IMLIB の機能は,アプリケーションの中で使われる状況によって,次のように分類できます。

以下の節では,分類されたそれぞれの機能について説明します。

2.1 IMLIBの初期化

IMLIB の初期化は以下の手順に従って行われます。

  1. PROFILEのオープン

    OPEN PROFILE によって PROFILE をオープンします。OPEN PROFILE が返す UNIT ID は,これ以降 IMLIB のライブラリを呼び出すときに使われます。複数のかな漢字変換コンテキストを使うアプリケーションは,必要なコンテキストの数だけ OPEN PROFILE を呼びます。

  2. PROFILE情報の読み込み

    GET PROFILE DATA によって,PROFILE に書かれた情報を読み込みます。PROFILE の情報に,キー定義以外のかな漢字変換の環境を定義するものが含まれています。アプリケーションは,できる限り PROFILE に書かれた情報に従って動作することが望まれます。

  3. KEYBINDの設定

    SET KEYBIND によって,バイナリ形式の KEYBIND ファイルを読み込みます。

以上で IMLIB の初期設定は完了します。次はキー入力処理に移ります。

2.2 IMLIBの終了

IMLIB の使用を終了するときに使われる機能について,以下に示します。

2.3 キー入力処理

キー入力処理はIMLIBを使う上での核となる部分です。この節は,キー入力処理を行うアプリケーションの作成方法について書かれています。

2.3.1 アプリケーションとの関係

アプリケーションが,IMLIB を使ってキー入力を処理する概念を示す図を, 図 2-1 に示します。

図 2-1 IMLIBとアプリケーションの関係


  1. ターミナルからキーが入力される。

  2. アプリケーションは,入力されたキーに何が定義されているのかを IMLIB に問い合わせる。

  3. IMLIB は,問い合わせのあったキーを KEYBIND ファイルの情報に従って検索する ( 実際には KEYBIND ファイルの内容は,最初にメモリ上に読み込まれているのでメモリ中を検索する )。

  4. 検索によって実行する機能 (ACTION) が得られる。

  5. KEYBIND ファイルから得た情報を,アプリケーションに返す。

  6. アプリケーションは,IMLIB から返された情報がかな漢字変換に関するものであった場合,かな漢字変換ライブラリを呼び出してかな漢字変換を実行する。

  7. かな漢字変換の結果がアプリケーションに返る。

  8. 実行結果をターミナルに出力する。

2.3.2 かな漢字変換入力インターフェイスの範囲

かな漢字変換入力を行うには,いくつかのレベルがあります。IMLIB は,パーソナル・コンピュータ用に市販されているワードプロセッサ・プログラムの 1 つである「一太郎」 1 と同程度のかな漢字変換入力インターフェイスの実現を前提に,設計されています。

市販されているパーソナル・コンピュータ上のワードプロセッサ・プログラムは一般に,日本語 OpenVMS 独自のかな漢字変換インターフェイス (JEDI, EVEJなどのインターフェイス) よりも,複雑なインターフェイスを持っています。最も典型的な例はスペース・キーの機能です。スペース・キーは,キーが押されたときの状態によって通常のスペース・キーとして動作したり,かな漢字変換キーとして動作したりします。また,自動ローマ字かな変換の機能なども,ワードプロセッサのインターフェイスの実現を複雑にしているものの 1 つです。

注意

1 一太郎は株式会社ジャスト・システムの登録商標です。

2.3.3 アプリケーションが用意するもの

アプリケーションは,KEYBINDによって提供されるキー定義の情報やPROFILEによって指定される付加情報以外のものを,すべて用意しなければなりません。たとえば,以下に示すものはアプリケーションが用意するものです。

2.3.4 処理の流れ

IMLIB を使ったプログラムの中で実行される処理の流れを,図 2-2 に示します。これはIMLIBのCバインディング・インターフェイスで記述した例です。VMSバインディングの場合は,GET KEY ACTIONが2つの呼び出し(SET KEYとGET ACTION) に分かれます。これによって処理の流れも変わります。

図 2-2 処理の流れ


2.3.5 キー入力モジュール

キー入力モジュールは,ユーザのキー入力を受け取ります。IMLIB を使うためには,入力は 1 つのキーごとに行わなければなりません。キー入力のメカニズムは,オペレーティング・システムや使用しているユーザ環境によって異なります。IMLIB は,OpenVMS オペレーティング・システム,ULTRIX オペレーティング・システム,Digital UNIX オペレーティング・システム,およびそれらの上に構築されている DECwindows のインターフェイスを考慮して作られています。

2.3.5.1 OpenVMS

OpenVMS でのキー入力には,QIO が使われます。QIO は入力のターミネータとしてエスケープ・シーケンスを指定することができますので,キーボード上のファンクション・キー数字キーパッドや編集キーを,1 回の QIO で読み込むことができます。読み込まれたキーは,エスケープ・シーケンス,文字キーともに ENCODE KEY を呼び出すことで IMLIB の KEYCODE に変換することができます。

2.3.5.2 DECwindows

DECwindows では,XLookupString によってキー入力を読み込みます。XLookupString は,X Window System で定義されているKEYSYMの値を返しますので,アプリケーションは,IMLIB が提供するルーチン KEYSYM TO KEYCODE を使って,KEYCODE の値を得ます。

2.3.6 ローマ字かな変換

ワードプロセッサなどでよく見られる,キー入力時の自動ローマ字かな変換のサポートは,アプリケーションが行う必要があります。自動ローマ字かな変換をサポートするかどうかは,アプリケーション開発者の任意です。

2.3.7 文字列バッファ

ワードプロセッサで見られるのと同等なユーザ・インターフェイスを提供するには,文字列バッファが 3 個必要です。それぞれのバッファの役割を以下に示します。

  1. キー入力バッファ

    ユーザが入力した文字キーを,そのまま保持しておくバッファです。このバッファの内容は,変換対象や入力文字列編集の対象となる文字列に対応します。変換が確定すると,このバッファの内容は消去されます。

  2. キー・エコー・バッファ

    自動ローマ字かな変換を行った結果を保持するバッファです。自動ローマ字かな変換を行わない場合や,かなキー入力を行った場合には,キー入力バッファの内容と同じになります。このバッファの内容は,変換対象や入力文字列編集の対象となります。変換が確定するとこのバッファの内容は消去されます。

  3. 表示バッファ

    スクリーン上と同じイメージを保持します。かな漢字変換の結果はこのバッファに反映されます。

2.3.8 入力文字列編集

ユーザにとって使いやすい入力インターフェイスを提供するためには,入力文字列を編集できる機能を提供することは不可欠です。入力文字列編集とは,たとえばユーザが "日本語" と入力しようとしたのに,間違えて "nijongo" というようなローマ字を入力してしまったときに,カーソルを "j" まで移動して,"h" と置き換えるような作業のことを言います。正しい文字と置きかわった時点で「変換キー」を押すと,かな漢字変換を行うことができるということになります。

入力文字列編集において問題となる点のうち,自動ローマ字かな変換を行っているときに限定される点については, 第 2.3.9 項 で説明します。この節では,入力文字列編集について一般的な説明を行います。

2.3.8.1 入力文字列編集の条件

入力文字列編集を行うのは,内部状態が「入力状態」にあるときです。次のような条件の場合に内部状態が「入力状態」になります。


次へ 目次 索引