countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2011 年 11 月 15 日
X68000 LIBRARY > ソフトウェアライブラリ > システム環境 > キー入力 > KeyWitch.X > 総合マニュアル

総合マニュアル

説明

KeyWitch.X の添付ドキュメントです。末尾に掲載されている連絡先は無効です。

KeyWitch.doc
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

                鍵盤の魔法使い 〜 KeyWitch version 2.13

                             総合マニュアル

                  1994,1995,1996,1997,1998 by M.Kamada

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


□ はじめに

 KeyWitch は、X680x0 のキー入力環境を改善する常駐型ソフトウェアです。開

発当初の目的はハード的な誤入力の回避だけでしたが、キー入力のカスタマイズ

や ASK68K へのパッチ当てなどの機能が追加されたことで、キー入力環境の総合

的な改善を目的としたソフトウェアになりました。


□ 主な機能と特徴

● ASK68K version 3.01/3.02 の不具合の修正と仕様の変更 (-a)

        文節伸縮時の自動再変換

        変換行が空のとき XF1 を押しながら入力した文字を変換行に入れない

        その他

● 3キー以上のロールオーバーで発生するハード的な誤入力の抑制 (-d)

        正確な迂回路判定と遅延入力の制御で“下さいお”などの誤入力を回避
                                                  ~~

● 環境定義ファイルによるカスタマイズ (-e)

        ASK68K に対するパッチの選択 (&ask)

        スキャンコード変換 (&assign,&code)

        BREAK や COPY などの機能を割り当てるキーの配置
        (&break,&copy,&den,&sbreak,&reset)

        スキャンコードに対応する文字コードの配置 (&char)

        任意のドライブをイジェクトするキーの指定 (&eject)

        INTERRUPT スイッチと同様にプログラムの実行を中止させるキーの指定
        (&int)

        ジョイスティックをエミュレートするキーの指定 (&joy1,&joy2)

        キーに付いている LED の入れ替えの指定 (&led)

        キー入力禁止モードを ON/OFF するキーの指定 (&lock,&unlock)

        キーに付いている LED を点滅または明滅させる指定
        (&lockblink,&unlockblink)

        メタ・文字コード入力の指定 (&meta)

        プレフィクス・スキャンコード入力の指定 (&prefix)

        リピートしないキーの指定 (&repeat)

        LED の初期状態の指定 (&setled)

        離したとき他のキーのリピートを止めるキーの指定 (&stop)

        サフィクス・スキャンコード入力の指定 (&suffix)

        テレビコントロールキーの配置 (&tvctrl)

● キー入力禁止モード (-i)

        X680x0 Compact 以外のキーボードでも入力を禁止できる

● ジョイスティックの操作をキーボードでエミュレートする (-j)

        上と下、右と左、それぞれ同時に押されたら打ち消す

● 離したときリピートをキーデータバッファから消す (-k)

        処理の遅い機能をリピートさせても SHIFT+BREAK で止めなくてよい

● キーに付いている LED の入れ替え(NUM を除く) (-l)

        LED 付きのキーを LED ごと入れ替えられる

● メタ文字コード入力 (-m)

        例えば、半角文字を、ひらがなや4分の1角文字として入力できる

● 特定のキーのリピートの抑制 (-n)

        SHIFT や CTRL でキーデータバッファを一杯にしない

● プログラム毎に異なるキー配置を設定できる (-p)

        カスタマイズの条件で、実行中のプログラム名の条件を指定可能

● 特定のキーを離したとき他のキーのリピートを止める (-s)

        CTRL+H をリピートさせて CTRL を先に離しても H が入力されない

● テレビコントロールキーのカスタマイズ (-t)

        テレビの電源をキー操作で ON/OFF できる

● 常駐したままカスタマイズ内容を変更できる

        常駐したまま環境を追加したり設定し直したりできる

        メモリブロックを追加するとき上位から確保させられる (-u)

● 先行入力の表示 (-v)

        入力後 0.1 秒以上処理されなかったデータを画面に表示する

● 遅延シフトセンス (-w)

        IOCS レベルでキーデータとシフトキーの情報を同期させる

● スキャンコードレベルのカスタマイズが可能 (-x)

        1つのスキャンコードを条件に従って0個以上のスキャンコードに変換

        プレフィクス、サフィクスのスキャンコード入力が可能

● キー入力関係の初期化を強化

        コネクタが差し込まれたときリピート間隔などを自動設定

        X680x0 Compact のキーボードかどうかを自動判別

● 環境定義ファイルのサンプルを多数付属

        ASK68K+em.x の環境で XF3+V の V などを変換行の先頭に入れない
        (emx_ask.env)

        その他

● 付属の SXKeyW.x を使えば SX-Window 上でも KeyWitch の機能が有効

        ASK68K と同様のパッチを SXCON.X にあてる

        誤入力の抑制

        LED の入れ替え

        キー入力のカスタマイズ

        プログラム名の条件がアクティブなウィンドウを持つタスク名に対応

        その他


─◇ もくじ ◇─────────────────────────────

        1  アーカイブの内容
        2  動作環境
        3  使い方
                        組み込みを強制的に中止させる方法
           3.1  スイッチ
                -a{0|[1]} (Ask68k)
                -d{0|[1]} (Delayed input)
                        特別扱いの誤入力について
                -e (Environment)
                -i{0|[1]} (Ignore)
                -j{0|[1]} (Joy stick)
                -k{0|[1]} (Kill repeat)
                -l{0|[1]} (Led)
                -m{0|[1]} (Meta)
                -n{0|[1]} (Not repeat)
                -p{0|[1]} (Program)
                -r (Release)
                -s{0|[1]} (Stop repeat)
                -t{0|[1]} (Tv-control)
                -u{0|[1]} (Upper memory)
                -v{0|[1]} (Visual input)
                -w{0|[1]} (Wait shift)
                -x{0|[1]} (eXchange)
                -y{0|[1]} (Yank)
           3.2  拡張機能
        4  環境定義ファイル
           4.1  記号の説明
           4.2  ルール
           4.3  キーコード
                スキャンコード
                        スキャンコード表 (X680x0 Compact 以外)
                        スキャンコード表 (X680x0 Compact NUM OFF)
                        スキャンコード表 (X680x0 Compact NUM ON)
                スキャンコード以外のキーコード
                        LED の状態を表すキーコード
                        シフトキーの状態を表すキーコード
                        かなのキー配置を表すキーコード
                        電卓の表示状態を表すキーコード
                        OPT.2 キーの使用状態を表すキーコード
                キーコードからスキャンコードへの変換
           4.4  キーネーム
           4.5  プログラム名
                        SX-WINDOW 上のタスク名
           4.6  環境定義コマンド
                &ask
                &assign
                &break
                &char
                &code
                &copy
                &den
                &eject
                &int
                &joy1
                &joy2
                &kill
                &led
                &lock
                &lockblink
                &meta
                &name
                &prefix
                &prog
                &repeat
                &reset
                &rule
                &sbreak
                &setled
                &stop
                &suffix
                &target
                &tvctrl
                &unlock
                &unlockblink
           4.7  パッチネーム
                auto
                ins
                led
                lock
                n-n
                space
                tsu
                tsu-n
                x-x
                xf1
                zenkaku
        5  付属の環境定義ファイルについて
                KeyWitch.env
                altshift.env
                ascii.env
                ask_n.env
                ask_x.env
                ask_xf1.env
                c_num.env
                c_numden.env
                capshira.env
                del.env
                denwa.env
                dvorak.env
                edx_rubi.env
                ejectall.env
                emx_ask.env
                ibm.env
                intcopy.env
                oyayubi.env
                pc98.env
                preshift.env
                sccaps.env
                scsireset.env
                shinjis.env
                ten000.env
                tenhex.env
                tenhome.env
                tvsw.env
                underline.env
                xbasic.env
                xf3_meta.env
                xfmod.env
                _shift.env
        6  SX-Window を使用する場合
                        SX-Window を使用する場合の注意事項
                        SXKeyW.x のスイッチ
                        ダイアログの操作について
                        誤入力の回避
                        タスク名の条件をルールで使う
                        SXCON.X へのパッチ
                        シャーペン.X に関する特記事項
        7  他の常駐物と併用する場合のご注意
                        CONDRV.SYS と併用する場合
                        MuTERM と併用する場合
                KeyWitch が変更するベクタについて
        8  使用上のご注意
        9  一般的なご注意
        10  参考文献
        11  謝辞
        12  連絡先


━◆ 1 ◆ アーカイブの内容 ◆━━━━━━━━━━━━━━━━━━━━━

 このアーカイブに含まれているファイルは、次の7個です。すべて揃っている

ことを確認して下さい。

        KeyWitch.x      本体
        SXKeyW.x        スタートアップメンテに登録するプログラム
        KeyWitch.doc    このファイル
        KWTech.doc      誤入力を回避する方法について
        KWHist.doc      バージョンアップ履歴
        KeyWEnv.Lzh     環境定義ファイルのサンプルのアーカイブ
        KeyWitch.cut    添付カットファイル

 KeyWEnv.Lzh に含まれているファイルは、次の 32 個です。

        KeyWitch.env    altshift.env    ascii.env       ask_n.env
        ask_x.env       ask_xf1.env     c_num.env       c_numden.env
        capshira.env    del.env         denwa.env       dvorak.env
        edx_rubi.env    ejectall.env    emx_ask.env     ibm.env
        intcopy.env     oyayubi.env     pc98.env        preshift.env
        sccaps.env      scsireset.env   shinjis.env     ten000.env
        tenhex.env      tenhome.env     tvsw.env        underline.env
        xbasic.env      xf3_meta.env    xfmod.env       _shift.env


━◆ 2 ◆ 動作環境 ◆━━━━━━━━━━━━━━━━━━━━━━━━━

 KeyWitch version 2.13 は、以下の環境で動作します。

        X680x0 シリーズ全機種
        Human68k version 2.xx/3.0x
        SX-Window version 3.1


━◆ 3 ◆ 使い方 ◆━━━━━━━━━━━━━━━━━━━━━━━━━━

 KeyWitch.x は、デバイスドライバまたはコマンドとして組み込めます。

 コマンドとして起動した場合は、パラメータを何も指定しなければ、次のよう

に使用法が表示されます。

────────────────────────────────────
A>KeyWitch
鍵盤の魔法使い 〜 KeyWitch version 2.13
    Copyright 1994,1995,1996,1997,1998 by M.Kamada

使用法: KeyWitch [-{adeijklmnprstuvwxy}{0|1}…] [環境定義ファイル名 …]

  -a        <Ask68k> ASK68K version 3.01/3.02 の不具合の修正と仕様の変更を行います
  -d <Delayed input> 3キー以上のロールオーバーで発生するハード的な誤入力を抑制します
  -e   <Environment> 環境定義ファイルに従ってキー配置を変更します (KeyWitch.env)
  -i        <Ignore> キー入力禁止モードを使います
  -j     <Joy stick> ジョイスティックの操作をキーボードでできるようにします
  -k   <Kill repeat> キーを離したときリピートした入力をキーデータバッファから消します
  -l           <Led> キーに付いている LED の入れ替えを有効にします
  -m          <Meta> メタキーを使用します
  -n    <Not repeat> 特定のキーのリピートを禁止します
  -p       <Program> プログラム毎に異なるキー配置を使用します
  -r       <Release> 機能および常駐を解除するか、初期状態から設定し直します
  -s   <Stop repeat> 特定のキーを離したとき同時に押されていたキーのリピートを止めます
  -t    <Tv-control> キーボードによるテレビコントロールをカスタマイズします
  -u  <Upper memory> 環境の変更でメモリブロックが分かれるとき上位から確保します
  -v  <Visual input> 先行入力を画面左下に表示します
  -w    <Wait shift> 遅延シフトセンスを行います
  -x      <eXchange> スキャンコードの入れ替えを有効にします
  -y          <Yank> コマンドラインよりも先に環境変数 KEYWOPT の内容を解釈します

環境変数 KEYWITCH で、環境定義ファイルを検索するパスを指定できます

────────────────────────────────────

 コマンドラインでは、スイッチまたは環境定義ファイル名が1つでも指定され

ていれば常駐します。デバイスドライバとして組み込む場合は、CONFIG.SYS で

DEVICE= に続けて記述して下さい。

 スイッチや環境定義ファイルに間違いがある場合は、エラーメッセージが表示

され、組み込みは中止されます。


□ 組み込みを強制的に中止させる方法

 起動時に かな キーを押し続けていると、組み込みを中止できます(かな キ

ーの LED が点滅してしまいますが、それは無視して、組み込み中止のメッセー

ジが表示されてから一旦 かな キーを離し、LED を元に戻して下さい)。


━◆ 3.1 ◆ スイッチ ◆━━━━━━━━━━━━━━━━━━━━━━━━

 スイッチは複数指定できますが、それらは -a -d のように分けて指定しても、

-ad のように繋げて指定しても構いません。なお、スイッチは大文字で指定して

も同じ意味になります。また、スイッチの先頭の文字として / を使うことはで

きません。

 常駐していない状態では、各スイッチの直後に 0 を指定すればそのスイッチ

は無効、それ以外の数値を指定すれば有効です。指定しなかったスイッチは 0

を、また、数値を省略した場合は 1 を、それぞれ指定したものと見なされます。

 既に常駐している状態では、各スイッチの直後に 0 を指定すれば無効、それ

以外の数値を指定すれば有効になります。指定しなかったスイッチは変化しませ

ん。数値を省略した場合は 1 を指定したものと見なされます。

 続いて、個々のスイッチについて説明します。


─◇ -a{0|[1]} (Ask68k) ◇───────────────────────

 -a[1] を指定すると、メモリ上の ASK68K version 3.01 または ASK68K

version 3.02 にパッチがあたります。

 環境定義ファイルで特に指定しなければ、次のパッチがあたります。

  ・文節を伸縮したとき自動的に再変換するようになります。
  ・FEP の動作中に INS キーの入力が素通りするようになります。
  ・FEP を起動したとき INS キーの LED が消えないようになります。
  ・SHIFT,CTRL,OPT.1 がロックする不具合がなくなります(3.01 のみ)。
  ・ローマ字入力で L,M,R,V,W,Y を重ねて「っ」が入るようになります。

 パッチの内容は環境定義コマンド &ask で変更できます。&ask については、

環境定義コマンドおよびパッチネームの説明を参照して下さい。


─◇ -d{0|[1]} (Delayed input) ◇───────────────────

 -d[1] を指定すると、3キー以上のロールオーバーによって発生するハード的

な誤入力が抑制されます。

 下記のような英単語やローマ字を入力すると実際には押していないキーまで押

したことになってしまうことがある人は、このスイッチを指定してみて下さい。

 X680x0 Compact 以外のキーボードの場合

        the     that    basic   copy    fail    post    few
        ~~~     ~~~      ~~~    ~~~     ~~~     ~~~     ~~~
        hospital        cmp     gzip    lha     pic
        ~~~             ~~~      ~~~    ~~~     ~~~
        しょ(sho)       おさ(osa)       さい(sai)       だい(dai)
             ~~~             ~~~             ~~~             ~~~
 X680x0 Compact のキーボードの場合

        ask     move    not     net     last    will    spoil
        ~~~      ~~~    ~~~     ~~~     ~~~     ~~~      ~~~
        the     ten     eof     chariot
        ~~~     ~~~     ~~~        ~~~~
        しゃ(sha)       という(toiu)    かす(kasu)
             ~~~               ~~~~          ~~~~

 スイッチ -d[1] が指定されると、KeyWitch は、誤入力の発生しないシフト関

係を除くすべてのキー入力に対して、キーボードマトリクス上の迂回路判定と遅

延入力の制御を行います。この機能によって、ロールオーバーによって発生する

ハード的な誤入力を、ほとんど回避することができます(100 パーセント回避で

きるわけではありません)。

 誤入力の回避方法については、付属の KWTech.doc を参照して下さい。

 ゲームで複数のキーを同時に押したときの反応が遅れるなどの影響が出るとき

は、-d0 を指定してこの機能を停止させて下さい。


□ 特別扱いの誤入力について

 X680x0 Compact のキーボードを使用している場合は、not の入力を特別扱い
                                                   ~~~
にして、より正確に誤入力を回避するように工夫してあります。


─◇ -e (Environment) ◇────────────────────────

 -e を指定すると、環境定義ファイルとして、実行した KeyWitch.x と同じデ

ィレクトリにある KeyWitch.env を読み込みます。ただし、環境定義ファイル名

をコマンドラインで指定した場合は、指定した環境定義ファイルだけを読み込み

ます。

 既に組み込まれている状態で -e を指定した場合は、環境の追加になってしま

います。環境を初期化して最初からやり直したいときは、スイッチ -r も指定し

て下さい。


─◇ -i{0|[1]} (Ignore) ◇───────────────────────

 -i[1] を指定すると、キー入力を禁止できるようになります。

 X680x0 Compact のキーボードでは SHIFT+CTRL+OPT.2 を押すとキー入力が禁

止できますが、解除するためのキーを知らなくてもコネクタを繋ぎ直せば解除で

きてしまいます。また、他のキーボードには入力を禁止する機能がありません。

そこで、割り込み処理のレベルで入力を禁止できるようにしました。

 環境定義ファイルで特に指定しなければ、キー入力を禁止するキー、解除する

キー共に、SHIFT+CTRL+OPT.2 に割り当てられます。

 キー入力を禁止するためのルールは、環境定義コマンド &lock で、また、解

除するためのルールは同じく &unlock で指定します。&lock、&unlock について

は、環境定義コマンドの説明を参照して下さい。

 入力を無視するだけでは暴走状態と見分けがつかないので、入力が禁止されて

いるときは押されたキーのスキャンコードをキーボードの LED にエコーバック

するようになっています。見た目は かな+ローマ字+コード入力 を押しながらキ

ーボードのコネクタを繋いだ場合と同じです。ただし、コネクタを繋ぎ直しても

元に戻りません。なお、&lockblink を指定することで、入力が禁止されている

とき LED を点滅させることができます。


─◇ -j{0|[1]} (Joy stick) ◇─────────────────────

 -j[1] を指定すると、ジョイスティックの操作を IOCS レベルでキーボードか

らできるようになります。

 環境定義ファイルで特に指定しなければ、次のように割り当てられます。

 ジョイスティック1
        テンキーの8(↑)、2(↓)、4(←)、6(→)、
        Z(ボタンA)、X(ボタンB)

 ジョイスティック2
        対応なし

 キーと操作の対応は、環境定義コマンド &joy1 および &joy2 で変更できます。

&joy1、&joy2 については、環境定義コマンドの説明を参照して下さい。


─◇ -k{0|[1]} (Kill repeat) ◇────────────────────

 -k[1] を指定すると、特定のキーをリピートさせてから離したときにキーデー

タバッファの末尾にリピートした分のデータが溜まっていたら、それを取り除き

ます。リピート間隔を短く設定していて、うっかり処理の遅い動作をリピートさ

せて止まらなくなってしまい、慌てて SHIFT+BREAK を押すといったようなこと

を防ぐためのスイッチです。

 環境定義ファイルで特に指定しなければ、すべてのキーが、離したときにリピ

ートを取り除く対象になります。

 離したときリピートを取り除くキーは、環境定義コマンド &kill で変更でき

ます。&kill については、環境定義コマンドの説明を参照して下さい。


─◇ -l{0|[1]} (Led) ◇────────────────────────

 -l[1] を指定すると、キーに付いている LED の入れ替えが有効になります。

 LED 付きのキーを入れ替える場合、入力が入れ替わっても、元の場所の LED

が対応しているのでは不便です。そこで、KeyWitch では IOCS レベルで LED を

入れ替えられるようになっています。ただし、X680x0 Compact のキーボードに

ある NUM キーの LED は入れ替えられません。

 LED の入れ替えは環境定義コマンド &led で指定します。&led については、

環境定義コマンドの説明を参照して下さい。


─◇ -m{0|[1]} (Meta) ◇────────────────────────

 -m[1] を指定すると、メタキーの定義が有効になります。例えば、XF3+A を

ESC-A に変換するといったことが可能になります。

 メタキーは環境定義コマンド &meta で指定します。&meta については、環境

定義コマンドの説明を参照して下さい。

 SX-Window のコンソールではメタキーに ESC コードを割り当てるとシャーペ

ンの機能が動作してしまうので、コンソール上で動作しているプログラムでは

ESC を割り当てたメタキーは使えません。このような場合は、環境定義コマンド

&prefix を利用するようにして下さい。


─◇ -n{0|[1]} (Not repeat) ◇─────────────────────

 -n[1] を指定すると、特定のキーのリピートが禁止されます。例えば、CTRL

キーを押さえているだけでキーデータバッファが一杯になるようなことを防げま

す。

 環境定義ファイルで特に指定しなければ、次のキーがリピートしなくなります。

        SHIFT   CTRL    OPT.1   OPT.2

 リピートを禁止するキーは、環境定義コマンド &repeat で変更できます。

&repeat については、環境定義コマンドの説明を参照して下さい。


─◇ -p{0|[1]} (Program) ◇──────────────────────

 -p[1] を指定すると、プログラム名を条件に含んだルールが有効になります。

プログラムごとに異なるキー配置やメタキーなどを使いたい場合に指定します。

 プログラム名は、環境定義コマンド &prog で定義します。環境定義コマンド

およびプログラム名の説明を参照して下さい。


─◇ -r (Release) ◇──────────────────────────

 -r は、同時に他のスイッチを指定しなければ、機能および常駐を解除します。

同時に他のスイッチも指定した場合は、環境を初期状態から設定し直します。

 常駐を解除する場合はすべてのベクタが復元され、メモリ上の ASK68K にパッ

チをあてた部分も元に戻ります。

 KeyWitch がデバイスドライバとして組み込まれている場合は、常駐を解除す

ることができません。

 KeyWitch が変更したベクタが別のプログラムによって変更されていたり、メ

モリ上の ASK68K にパッチをあてた部分が変化している場合は、常駐を解除でき

ません。ただし、ベクタが変更されていても、それが ROM を指している場合は、

警告メッセージを表示した上で常駐を解除します。

 SX-Window のコンソールや μEmacs のシェルウィンドウなどで、KeyWitch

の常駐を解除することはできません。


─◇ -s{0|[1]} (Stop repeat) ◇────────────────────

 -s[1] を指定すると、特定のキーを離したときに、同時に押されていた別のキ

ーのリピートが止まります。例えば、リピート間隔が短く設定されていると

CTRL+H で文字列を取り消した場合に CTRL を H よりも一瞬早く離してしまうだ

けで h が入力されてしまいますが、-s[1] を指定することでこの症状を防ぐこ

とができます。

 このスイッチは、スイッチ -n[1] と同時に指定しなければ無効です。

 環境定義ファイルで特に指定しなければ、次のキーを離したときに同時に押さ

れていた別のキーのリピートが止まります。

        SHIFT   CTRL    OPT.1   OPT.2

 離したときにリピートを止めるキーは、環境定義コマンド &stop で変更でき

ます。&stop については、環境定義コマンド &stop の説明を参照して下さい。


─◇ -t{0|[1]} (Tv-control) ◇─────────────────────

 -t[1] を指定すると、キーボードに割り当てられたテレビコントロールキーの

カスタマイズが有効になります。従来のテレビコントロールキーは使えなくなり、

代わりに環境定義コマンド &tvctrl の指定が有効になります。

 テレビコントロールケーブルが繋がっている環境では、テレビコントロールに

使うキーの配置を変更したり、キーに割り当てられていない機能(テレビの電源

の ON/OFF など)を割り当てたり、X680x0 Compact のキーボードで NUM キーを

押さずにテレビコントロールできるような設定が可能です。

 また、テレビコントロールケーブルが繋がっていない環境では、テレビコント

ロールに使う組み合わせのキーをアプリケーションで使えるようになります。例

えば、SX-Window のシャーペンなどで SHIFT+カーソルキー に割り当てた機能が

使えるようになります。


─◇ -u{0|[1]} (Upper memory) ◇────────────────────

 -u[1] を指定すると、KeyWitch のデータを格納するためのメモリブロックの

確保が上位アドレスから行われるようになります。

 常駐したまま環境を追加すると、元の場所にすべてのデータが納まらず、別の

メモリブロックを確保しなければならないことがあります。-u[1] を指定しなけ

れば下位のアドレスから確保するようになっていますが、このとき空きメモリが

分断されてメモリ効率が悪くなることがあるので、上位から確保させることもで

きるようになっています。メモリに十分余裕があるときは、気にする必要はあり

ません。


─◇ -v{0|[1]} (Visual input) ◇────────────────────

 キーデータバッファに書き込まれてから 0.1 秒以上処理されずにバッファに

残っているキーデータがあるとき、そのキーデータ以降の入力を次のキー入力割

り込みやキーセンスで画面左下に表示します。表示はテキストプレーン2および

3に対して行われ、表示位置はテキスト座標 (0,31) に固定されています。

 キーデータバッファに残っていない先行入力のデータは表示されません。例え

ば、ASK68K を使用している場合は、先行入力の先頭1文字が CON デバイス内に

転送されるために1文字目が表示されないことがあります。


─◇ -w{0|[1]} (Wait shift) ◇─────────────────────

 -w[1] を指定すると、IOCS レベルの遅延シフトセンスが有効になります。キ

ーデータをキーデータバッファに格納するとき、SHIFT や CTRL などのシフトの

状態を一緒に保存しておき、シフトセンスを行うときにキーデータが残っていた

ら、そのキーデータに対応するシフトの状態を返します。アプリケーションによ

ってシフトキーの反応が良くなる場合と悪くなる場合があり得ますので、指定す

る場合は注意が必要です。ASK68K version 3.02 の場合は指定しない方がよいで

しょう。


─◇ -x{0|[1]} (eXchange) ◇──────────────────────

 -x[1] を指定すると、スキャンコードレベルでのキー配置のカスタマイズが有

効になります。つまり、環境定義コマンド &code、&assign、&prefix、&suffix

の指定が有効になります。


─◇ -y{0|[1]} (Yank) ◇────────────────────────

 -y は特殊なスイッチで、コマンドラインよりも先に環境変数 KEYWOPT の内容

を解釈するように指示するものです。これを利用すると、KeyWitch を組み込み

直す度に長いパラメータを記述する必要がなくなります。なお、デバイスドライ

バとして組み込む場合は、-y を指定することはできません。


━◆ 3.2 ◆ 拡張機能 ◆━━━━━━━━━━━━━━━━━━━━━━━━

 キーボードのコネクタを繋ぎ直したとき、リピート間隔などを再設定すると共

に、接続されたキーボードが X680x0 Compact のキーボードかどうかを自動的に

チェックして誤入力の回避に必要なキーマトリクスを選択しています。

 ROM のバグで、電卓を使うと IOCS コールの _B_KEYINP、_B_KEYSNS、_DENSNS

において d3 レジスタが破壊されることがあるので、これらのコールのとき d3

レジスタを保護するようにしました。


━◆ 4 ◆ 環境定義ファイル ◆━━━━━━━━━━━━━━━━━━━━━

 キー入力環境を定義するために、後述の環境定義コマンドを書き連ねたファイ

ルが、環境定義ファイルです。KeyWitch のパラメータに環境定義ファイル名を

いくつか記述すると、KeyWitch がそれらのファイルを前から順に読み込んで解

釈し、キー配置などを指定された通りに設定します。

 環境定義ファイルをまとめて置いておくパス(ディレクトリ名)を、環境変数

KEYWITCH に定義しておくことができます。これを利用すれば、コマンドライン

に環境定義ファイル名を書くときにパスを省略することができます。

 既に常駐している状態では、環境を追加することになります。初期状態から環

境を設定し直す場合は、環境定義ファイル名と共にスイッチ -r を指定して下さ

い。


━◆ 4.1 ◆ 記号の説明 ◆━━━━━━━━━━━━━━━━━━━━━━━

 環境定義ファイルの中で使える特別な記号は、次の通りです。

        "       次の " まで、記号を特別に解釈しません。

        %       改行まで注釈と見なして無視します。

        $xx     文字コードが 16 進数2桁で xx となる文字を表します。

        ^x      コントロールコードを指定します。
                x と $40 を eor した文字で、^@ は $00、^? は $7F です。

        \"      " 記号を指定します。

        \%      % 記号を指定します。

        \$      $ 記号を指定します。

        \^      ^ 記号を指定します。

        \\      \ 記号を指定します。

        \改行   コマンドを次の行に継続します。
                改行は $0A または $0D$0A です。


━◆ 4.2 ◆ ルール ◆━━━━━━━━━━━━━━━━━━━━━━━━━

 環境定義ファイルの中で、条件を指定する部分をルールと呼びます。ルールは

次のような形式で、キーコードまたはプログラム名の条件を必要な数だけスペー

スで区切って列挙したものです。

        ルール ::= {キーコード|キーネーム|プログラム名}{=0|[=1]} …

 1行に記述したルールの全体が成立するためには、それに含まれているキーコ

ード(またはキーネーム)の条件がすべて成立していて、尚且つ、プログラム名

の条件が指定されているときはそのいずれか1つが成立していなければなりませ

ん。ただし、プログラム名を含んでいるルールは、スイッチ -p[1] を指定しな

ければ常に成立しません。

 キーコード、キーネーム、プログラム名の条件については、それぞれの項目で

説明します。


━◆ 4.3 ◆ キーコード ◆━━━━━━━━━━━━━━━━━━━━━━━

 キーコードとは、それぞれのキーまたは特定の条件に固有に付けられている1

バイトの番号です。これは IOCS _B_KEYINP の結果の上位バイトで返されるスキ

ャンコードに、KeyWitch に特有の番号(シフトキーの LED の状態など)を追加

したものです。

 キーコードは、環境定義ファイルの中で、ルールやスキャンコードの入れ替え

などを定義するときに 16 進数2桁で記述します。

 環境定義コマンド &name を使ってキーコードに対応するキーネームを定義し、

キーコードの代わりに使用することもできます。キーネームについては次節で説

明します。


─◇ スキャンコード ◇─────────────────────────

 以下に、キーとスキャンコードの対応を図示します。キーの略号の下に書いて

ある2桁の 16 進数が、スキャンコードです。略号はキーボードと見比べて解釈

して下さい。ルールでは、

        キーコード[=1] → キーが押されているとき成立
        キーコード=0   → キーが離されているとき成立

となります。


□ スキャンコード表 (X680x0 Compact 以外)

  BR  CP    F1 F2 F3 F4 F5    F6 F7 F8 F9 F0    か ロ コ  CA 記 登 HE
  61  62    63 64 65 66 67    68 69 6A 6B 6C    5A 5B 5C  5D 52 53 54


  EC 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0  -= ^~ \| BS  HM IN DL  CL /  *  -
  01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  36 5E 37  3F 40 41 42

  TB  Q  W  E  R  T  Y  U  I  O  P  @` [{       RU RD UN  7  8  9  +
  10  11 12 13 14 15 16 17 18 19 1A 1B 1C       38 39 3A  43 44 45 46
                                            RT
   CN  A  S  D  F  G  H  J  K  L  ;+ :* ]}  1D            4  5  6  =
   71  1E 1F 20 21 22 23 24 25 26 27 28 29         ↑     47 48 49 4A
                                                ← 3C →
   SH   Z  X  C  V  B  N  M  ,< .> /? _    SH   3B ↓ 3D  1  2  3
   70   2A 2B 2C 2D 2E 2F 30 31 32 33 34   70      3E     4B 4C 4D
                                                                   EN
     ひ  X1  X2      SP      X3  X4  X5  全      O1  O2   0  ,  .  4E
     5F  55  56      35      57  58  59  60      72  73   4F 50 51


□ スキャンコード表 (X680x0 Compact NUM OFF)

        BR  CP    F1 F2 F3 F4 F5    F6 F7 F8 F9 F0    記 登 HE
        61  62    63 64 65 66 67    68 69 6A 6B 6C    52 53 54

                                                      全 ひ コ
        EC 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0  -= ^~ \| BS  60 5F 5C
        01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

        TB  Q  W  E  R  T  Y  U  I  O  P  @` [{       HM CL DL
        10  11 12 13 14 15 16 17 18 19 1A 1B 1C       36 3F 37
                                                  RT
         CN  A  S  D  F  G  H  J  K  L  ;+ :* ]}  1D  NU IN UN
         71  1E 1F 20 21 22 23 24 25 26 27 28 29      74 5E 3A

         SH   Z  X  C  V  B  N  M  ,< .> /? _    SH   RU ↑ RD
         70   2A 2B 2C 2D 2E 2F 30 31 32 33 34   70   38 3C 39

          O1 CA X1  X2     SP     X3 X4 X5 ロ か O2   ← ↓ →
          72 5D 55  56     35     57 58 59 5B 5A 73   3B 3E 3D


□ スキャンコード表 (X680x0 Compact NUM ON)

        BR  CP    F1 F2 F3 F4 F5    F6 F7 F8 F9 F0    記 登 HE
        61  62    63 64 65 66 67    68 69 6A 6B 6C    52 53 54

                                                      全 ひ コ
        EC 1! 2" 3# 4$ 5% 6& 7  8  9  /  *  ^~ \| BS  60 5F 5C
        01 02 03 04 05 06 07 43 44 45 40 41 0D 0E 0F

        TB  Q  W  E  R  T  Y  4  5  6  -  @` [{       HM CL DL
        10  11 12 13 14 15 16 47 48 49 42 1B 1C       36 3F 37
                                                  RT
         CN  A  S  D  F  G  H  1  2  3  +  :* ]}  1D  NU IN UN
         71  1E 1F 20 21 22 23 4B 4C 4D 46 28 29      74 5E 3A

         SH   Z  X  C  V  B  N  0  ,  .  =  EN   SH   RU ↑ RD
         70   2A 2B 2C 2D 2E 2F 4F 50 51 4A 4E   70   38 3C 39

          O1 CA X1  X2     SP     X3 X4 X5 ロ か O2   ← ↓ →
          72 5D 55  56     35     57 58 59 5B 5A 73   3B 3E 3D


─◇ スキャンコード以外のキーコード ◇─────────────────

 スキャンコードは 01〜6C,70〜74 だけですが、キーコードでは 80〜8B,8D〜

8F も使用できます。


□ LED の状態を表すキーコード

 キーコード 80〜86,8F は、下記のキーに付いている LED の状態を表します。

        80 … かな
        81 … ローマ字
        82 … コード入力
        83 … CAPS
        84 … INS
        85 … ひらがな
        86 … 全角
        8F … NUM

ルールでは、

        {80〜86,8F}[=1] → LED が点灯しているとき成立
        {80〜86,8F}=0   → LED が消灯しているとき成立

となります。なお、かな キーと ローマ字 キーの LED は同時に点灯しないので、

80=1 と 81=1 が同時に成立することはありません。また、X680x0 Compact のキ

ーボードを使用していないときは、NUM キーが存在しないので 8F=1 は常に成立

しません。

注意: X680x0 Compact のキーボードにおいて、SHIFT+CTRL+OPT.1 の操作で NUM

キーの LED を ON/OFF した場合、その操作が X680x0 本体に通知されないため

に、8F{=0|[=1]} の結果にも反映しません。NUM キーの LED の状態をキーボー

ドから直接得る手段がないため、キーコード 8F のルールの判定では KeyWitch

の内部のワークを参照しています。なお、NUM キーの LED の状態によってスキ

ャンコードが変化するキーが押されたときに内部のワークと矛盾が生じた場合は、

SHIFT+CTRL+OPT.1 によって NUM キーの LED が変化したと判断し、内部のワー

クを修正するようになっています。


□ シフトキーの状態を表すキーコード

 キーコード 88〜8B は、下記のシフトキーの状態を表します。

        88 … SHIFT
        89 … CTRL
        8A … OPT.1
        8B … OPT.2

ルールでは、

        {88〜8B}[=1] → キーが押されているとき成立
        {88〜8B}=0   → キーが離されているとき成立

となります。これらの条件は、原則として、キーコード 70〜73 と同じ結果にな

ります。

   ヽヽ
□ かなのキー配置を表すキーコード
                                         ヽヽ
 キーコード 87 は、SRAM に保存されているかなのキー配置の設定です。ルー

ルでは、

        87[=1] → あいうえお順のとき成立
        87=0   → 旧 JIS 配列のとき成立

となります。


□ 電卓の表示状態を表すキーコード

 キーコード 8D は、電卓の表示状態を示します。ルールでは、

        8D[=1] → 電卓が表示されているとき成立
        8D=0   → 電卓が表示されていないとき成立

となります。


□ OPT.2 キーの使用状態を表すキーコード

 キーコード 8E は、SRAM に保存されている OPT.2 キーをテレビコントロール

に使うかどうかの設定です。ルールでは、

        8E[=1] → OPT.2 キーでテレビコントロールするとき成立
        8E=0   → OPT.2 キーでテレビコントロールしないとき成立

となります。


─◇ キーコードからスキャンコードへの変換 ◇──────────────

 キーコード 80〜86,88〜8B,8F はスキャンコードではありませんが、スキャン

コードの入れ替えの指定に使用することができます。ただし、LED の状態とは関

係なく、それぞれ次のようにスキャンコードに読み代えられるだけです。

        80 → 5A        かな
        81 → 5B        ローマ字
        82 → 5C        コード入力
        83 → 5D        CAPS
        84 → 5E        INS
        85 → 5F        ひらがな
        86 → 60        全角
        88 → 70        SHIFT
        89 → 71        CTRL
        8A → 72        OPT.1
        8B → 73        OPT.2
        8F → 74        NUM

 キーコード 87,8D〜8E は、該当するスキャンコードがありませんので、スキ

ャンコードの入れ替えの指定には使用できません。


━◆ 4.4 ◆ キーネーム ◆━━━━━━━━━━━━━━━━━━━━━━━

 キーコードは 16 進数で記述するため分かりにくいので、それぞれのキーコー

ドに対応した単語を定義してキーコードの代わりに使えるようになっています。

この単語をキーネームと呼びます。

 キーネームはあらかじめ定義されていません。キーネームを定義するには、環

境定義コマンド &name を使います。&name については、環境定義コマンドの説

明を参照して下さい。

 1度定義したキーネームはその後に読み込まれるすべての環境定義ファイルで

使用できます。1つのキーコードに2つ以上のキーネームを割り当てることがで

きますが、この逆はできません。


━◆ 4.5 ◆ プログラム名 ◆━━━━━━━━━━━━━━━━━━━━━━

 プログラム名は、実行ファイルのファイル名からパスを除いた部分をそのまま

書いたものです。環境定義コマンド &prog によって定義し、ルールにプログラ

ムの条件を指定する場合に使用します。&prog については、環境定義コマンドの

説明を参照して下さい。

 プログラム名に英字の大文字と小文字の区別はありません。

 ルールにプログラム名を使うときは、

        プログラム名[=1] → 指定したプログラムの実行中ならば成立
        プログラム名=0   → 指定したプログラムの実行中でなければ成立

と書きます。


─◇ SX-WINDOW 上のタスク名 ◇─────────────────────

 SX-Window 上では、スタートアップメンテに SXKeyW.x を登録しておけば、ア

クティブなウィンドウを持つタスクの実行ファイル名がプログラム名の条件の比

較対象になります。


━◆ 4.6 ◆ 環境定義コマンド ◆━━━━━━━━━━━━━━━━━━━━

 環境定義コマンドとは、環境定義ファイルの中で指定するコマンドのことです。

コマンドは行の先頭から書き始め、その後ろに空白で区切りつつパラメータを並

べ、行の末尾で終わります。コマンドの先頭の文字は & です。環境定義ファイ

ルは、% で始まるコメントの行を除けば、環境定義コマンドを列挙したファイル

と言えます。

 環境定義コマンドとして、次の 30 個の単語が定義されています。

        &ask            &int            &name           &stop
        &assign         &joy1           &prefix         &suffix
        &break          &joy2           &prog           &target
        &char           &led            &repeat         &tvctrl
        &code           &kill           &reset          &unlock
        &copy           &lock           &rule           &unlockblink
        &den            &lockblink      &sbreak
        &eject          &meta           &setled

 続いて、個々のコマンドについて説明します。


─◇ &ask ◇──────────────────────────────

文法:   &ask パッチネーム{=0|[=1]} …

機能:   ASK68K にあてるパッチの選択

説明:   メモリ上の ASK68K version 3.01/3.02 にあてるパッチを選択します。

        パッチは、スイッチ -a[1] を指定した場合にあてられます。

        パッチネームに続けて =0 を指定したパッチは無効になり、=1 を指定

        したパッチは有効になります。=0 または =1 を省略した場合は =1 と

        見なされ、有効になります。

        指定しなかったパッチの有効無効は変化しません。

        パッチネームとパッチの内容については、パッチネームの説明を参照し

        て下さい。

例:     &ask を指定しなかった場合のデフォルト。

                &ask auto ins led lock tsu


─◇ &assign ◇────────────────────────────

文法:   &assign {キーネーム|キーコード}[={0|1}] …

機能:   スキャンコード変換の定義

説明:   1つのキー入力を別の0個以上のキー入力に変換する方法を指定します。

        &rule で指定したルールが成立しているとき、&assign の1番目のパラ

        メータの入力を2番目以降のパラメータの入力に変換します。このとき、

        実際に入力された1番目のキーの入力は、それを2番目以降にも記述し

        ない限り、入力されなかったことになります。

        &assign のパラメータにスキャンコード以外のキーコードを指定した場

        合は、対応するキーのスキャンコードとして解釈されます。

        &assign によるキー入力の変換は、スイッチ -x[1] を指定した場合に

        有効です。

注意:   &assign によって変換された後の入力は IOCS レベルに反映しますが、

        ルールの判定には、シフトキー以外、変換される前の入力が利用されま

        す。

例:     ↑ キーをスキャンコードレベルで CTRL+P にします。

                &name 1A P
                &name 3C ↑
                &name 89 CTRL
                &rule
                &assign ↑ CTRL=1 P=1 P=0 CTRL=0

        上の変換は文字コードレベルでもできますが、スキャンコードを見てい

        るエディタなどでも正しく使えるようにするためには、スキャンコード

        レベルで変換しておいた方が無難です。

例:     CTRL+XF3 で かな キーの LED を ON/OFF できるようにします。

                &name 57 XF3
                &name 80 かな
                &name 89 CTRL
                &rule CTRL=1
                &assign XF3=1 かな=1 かな=0

例:     SHIFT キーをトグル動作にします。

                &name 88 SHIFT
                &rule SHIFT=1
                &assign SHIFT=0
                &assign SHIFT=1 SHIFT=0


─◇ &break ◇─────────────────────────────

文法:   &break ルール

機能:   BREAK キーの処理を発生させるルールの定義

説明:   通常 BREAK キーを押すと発生する処理を割り当てるルールを定義しま

        す。

        プログラムの条件が異なるルールに限って、複数のルールを登録するこ

        とができます。プログラムの条件が同じルールは上書きされます。

例:     &break を指定しなかった場合のデフォルト。

                &name 61 BREAK
                &name 88 SHIFT
                &break BREAK=1 SHIFT=0


─◇ &char ◇─────────────────────────────

文法:   &char 文字列 …

機能:   スキャンコードに対応する文字コードの配置の定義

説明:   &rule で指定したルールが成立している場合の、スキャンコード→文字

        列変換テーブルを定義します。

        パラメータには、&target で指定したスキャンコードに対応する文字列

        を &target のパラメータと同じ順序に並べます。

        &char を指定しなかった場合のデフォルトについては付属の環境定義フ

        ァイル KeyWitch.env を参照して下さい。

例:     SHIFT を押さずに _ を入力できるようにします。

                &name 34 _
                &name 80 かな
                &name 89 CTRL
                &rule かな=0 CTRL=0
                &target _
                &char _


─◇ &code ◇─────────────────────────────

文法:   &code {キーネーム|キーコード} …

機能:   スキャンコード変換テーブルの定義

説明:   &rule で指定したルールが成立している場合の、スキャンコード→スキ

        ャンコード変換テーブルを定義します。

        パラメータには、&target で指定したスキャンコードに対応するスキャ

        ンコードを &target のパラメータと同じ順序に並べます。

        &code のパラメータにスキャンコード以外のキーコードを指定した場合

        は、対応するキーのスキャンコードとして解釈されます。

        &code を指定しなかった場合のデフォルトについては付属の環境定義フ

        ァイル KeyWitch.env を参照して下さい。

        &code によるキー入力の変換は、スイッチ -x[1] を指定した場合に有

        効です。


─◇ &copy ◇─────────────────────────────

文法:   &copy ルール

機能:   COPY キーの処理を発生させるルールの定義

説明:   通常 COPY キーを押すと発生する処理を割り当てるルールを定義します。

        プログラムの条件が異なるルールに限って、複数のルールを登録するこ

        とができます。プログラムの条件が同じルールは上書きされます。

        なお、&copy で指定したルールは、キーのリピートによって連続実行さ

        れません。

例:     &copy を指定しなかった場合のデフォルト。

                &name 62 COPY
                &copy COPY=1


─◇ &den ◇──────────────────────────────

文法:   &den ルール

機能:   電卓を ON/OFF するルールの定義

説明:   通常 OPT.1+OPT.2 を押すと発生する処理を割り当てるルールを定義し

        ます。

        プログラムの条件が異なるルールに限って、複数のルールを登録するこ

        とができます。プログラムの条件が同じルールは上書きされます。

        なお、&den で指定したルールは、キーのリピートによって連続実行さ

        れません。

例:     &den を指定しなかった場合のデフォルト。

                &name 8A OPT.1
                &name 8B OPT.2
                &den OPT.1=1 OPT.2=1


─◇ &eject ◇─────────────────────────────

文法:   &eject ドライブ指定 …

機能:   任意のドライブをイジェクトするキーの指定

説明:   コンソールが持っている CTRL+F1〜F4 による A:〜D: のイジェクトと

        は独立して、ドライブのイジェクトを行うキーを指定します。E: 以降

        のドライブを指定したり、ドライブ名の代わりにフロッピーディスクの

        ドライブ番号を指定することができます。また、CTRL+F5 に相当する単

        なるバッファフラッシュや、SCSI バスリセットを行うキーの指定も可

        能です。

        パラメータは、&target で定義した順序で指定します。&rule で指定し

        たルールが成立しているとき &target で指定したキーが押されたら、

        対応する &eject のパラメータのドライブ指定に従ってイジェクトなど

        が行われます。

        ドライブ指定は、キー操作毎に下記の文字を1つ以上記述します。1つ

        のキー操作で複数の動作を行う場合は、間隔をあけずに書いて下さい。

                !       SCSI バスリセットを発生させます

                @       バッファフラッシュを行います

                0〜3    フロッピーディスクのドライブ番号による指定です
                        このドライブをイジェクトします

                A〜Z または a〜z(A: なども可)
                        ドライブ名による指定です
                        このドライブをイジェクトします

        &eject を指定しなかった場合のデフォルトはありません。

        SX-Window では、スタートアップメンテに SXKeyW.x を指定しておくこ

        とでキー操作によるイジェクトが可能です。イジェクト予告とイジェク

        ト実行のイベントも発行しています。

注意:   イジェクトできないドライブに対しては、イジェクトを発行しません。

例:     コンソールが持っている CTRL+F1〜F5 の機能を、&eject で記述してみ

        ます。

                &name 63 F1
                &name 64 F2
                &name 65 F3
                &name 66 F4
                &name 67 F5
                &name 89 CTRL
                &rule CTRL=1
                &target F1 F2 F3 F4 F5
                &eject  A: B: C: D: @

例:     CTRL+F10 で、イジェクト可能なすべてのドライブをイジェクトします。

                &name 89 CTRL
                &name 6C F10
                &rule CTRL=1
                &target F10
                &eject A:-Z:


─◇ &int ◇──────────────────────────────

文法:   &int ルール

機能:   INTERRUPT スイッチの代わりをさせるルールの定義

説明:   キーが押されたときルールが成立していたら、NMI ベクタの指すアドレ

        スへジャンプします。つまり、INTERRUPT スイッチを押した場合と同様

        に白窓が表示されて、実行中のプログラムを中止することができます。

        また、デバッグ中であればデバッガに復帰します。ただし、NMI ベクタ

        が Human68k の内部を指している場合(CONFIG.SYS に PROCESS= の指

        定があって、デバッガなどを実行していないとき)は、実行中のプログ

        ラムがメインスレッドならばエラー処理のトラップ(白窓)を発行しま

        す。メインスレッドでなければ無視します。また、CPU が 68030 でコ

        プロセッサ命令の実行中のときも無視します。

        プログラムの条件が異なるルールに限って、複数のルールを登録するこ

        とができます。プログラムの条件が同じルールは上書きされます。

        &int を指定しなかった場合のデフォルトのルールはありません。

        なお、&int で指定したルールは、キーのリピートによって連続実行さ

        れません。

注意:   ディスクアクセス中のプログラムを強制的に中止するのは危険です。


─◇ &joy1 ◇─────────────────────────────

文法:   &joy1 {キーネーム|キーコード} …

機能:   ジョイスティック1の操作をエミュレートするキーの定義

説明:   パラメータには、操作に対応するキーを次の順序で指定します。

                上、下、左、右、ダミー、ボタンA、ボタンB、ダミー

        ここで、ダミーの部分には、ヌルキー(00)を書いておいて下さい。

        また、引数は8個すべて書かなければなりません。

        ジョイスティックの操作は、スイッチ -j[1] を指定した場合に有効で

        す。

例:     &joy1 を指定しなかった場合のデフォルト。

                &name 00 なし
                &name 44 .8
                &name 47 .4
                &name 49 .6
                &name 4C .2
                &name 2A Z
                &name 2B X
                &joy1 .8 .2 .4 .6 なし Z X なし


─◇ &joy2 ◇─────────────────────────────

文法:   &joy2 {キーネーム|キーコード} …

機能:   ジョイスティック2の操作をエミュレートするキーの定義

説明:   パラメータには、操作に対応するキーを次の順序で指定します。

                上、下、左、右、ダミー、ボタンA、ボタンB、ダミー

        ここで、ダミーの部分には、ヌルキー(00)を書いておいて下さい。

        引数は8個すべて書かなければなりません。

        ジョイスティックの操作は、スイッチ -j[1] を指定した場合に有効で

        す。

        &joy2 を指定しなかった場合は、ジョイスティック2のキーの割り当て

        はありません。


─◇ &led ◇──────────────────────────────

文法:   &led {キーネーム|キーコード} …

機能:   キーに付いている LED の入れ替えの定義

説明:   1つ目のキーネームのキーの LED の状態を、2つ目以降のキーネーム

        のキーの LED に反映させます。キーネームはすべて LED が付いている

        キーを指定して下さい。

        なお、NUM キーの LED は入れ替えられません。

例:     &led を指定しなかった場合のデフォルト。

                &name 80 かな
                &name 81 ローマ字
                &name 82 コード入力
                &name 83 CAPS
                &name 84 INS
                &name 85 ひらがな
                &name 86 全角
                &led かな かな
                &led ローマ字 ローマ字
                &led コード入力 コード入力
                &led CAPS CAPS
                &led INS INS
                &led ひらがな ひらがな
                &led 全角 全角


─◇ &kill ◇─────────────────────────────

文法:   &kill {0|1} …

機能:   離したときキーデータバッファからリピートを取り除くキーの定義

説明:   パラメータは、&target で定義した順序で指定します。1 を指定したキ

        ーは、リピートさせてから離したときに、キーデータバッファの末尾に

        リピートのデータが残っていたらそれを取り除きます。0 を指定したキ

        ーは取り除きません。なお、&kill で定義しなかったキーはすべて 0

        です。また、&kill を指定しなかった場合は、すべてのキーが 1 です。

        この機能を有効にするには、スイッチ -k[1] を指定します。

注意:   &kill の指定は &assign などによるスキャンコード変換の影響を受け

        ます。


─◇ &lock ◇─────────────────────────────

文法:   &lock ルール

機能:   キー入力を禁止するルールの定義

説明:   キー入力禁止モードに入るためのルールを指定します。

        プログラムの条件が異なるルールに限って、複数のルールを登録するこ

        とができます。プログラムの条件が同じルールは上書きされます。

        キー入力の禁止は、スイッチ -i[1] を指定した場合に有効です。

注意:   X680x0 Compact のキーボードでは、&lock だけ指定すると入力の禁止

        を解除する手段がなくなってしまいますから、&unlock も指定するよう

        にして下さい。

        SX-Window 使用時には、キー入力を禁止しないで下さい。

例:     &lock を指定しなかった場合のデフォルト。

                &name 88 SHIFT
                &name 89 CTRL
                &name 8B OPT.2
                &lock SHIFT=1 CTRL=1 OPT.2=1


─◇ &lockblink ◇───────────────────────────

文法:   &lockblink インターバル {キーネーム|キーコード} …

機能:   キー入力禁止状態で LED を点滅させる順序の定義

説明:   2番目以降のパラメータには LED が付いているキーを列挙します。キ

        ー入力禁止状態で、指定された順序で LED が点灯するようになります。

        なお、キーコードが 0 のときはすべての LED が消えます。

        最初のパラメータは変化のスピード(インターバル)です。1/100 秒単

        位の時間を $ に続けて2桁の 16 進数で指定して下さい。

        &lockblink を指定しなかった場合、キー入力が禁止されているときは

        押したキーのキーコードが LED にエコーバックされます。

例:     キー入力が禁止されているとき、CAPS キーの LED を点滅させます。

                &name 00 なし
                &name 83 CAPS
                &lockblink $32 CAPS なし


─◇ &meta ◇─────────────────────────────

文法:   &meta 文字 ルール

機能:   メタ文字を発生させるルールの定義

説明:   ルールが成立しているとき、文字コードが0でないキー入力があれば、

        その文字コードの直前に &meta で定義した文字が入力されます。

        異なるルールのメタ文字を複数登録することができます。同じルールの

        場合は上書きされます。

        メタ文字は、スイッチ -m[1] を指定した場合に限って入力されます。

        &meta を指定しなければ、メタキーは何も定義されていません。


─◇ &name ◇─────────────────────────────

文法:   &name キーコード キーネーム

機能:   キーネームの定義

説明:   キーネームにキーコードを割り当てます。

        &name を指定しなければ、キーネームは何も定義されていません。

        一度定義したキーネームは、後に読み込むすべての環境定義ファイルで

        有効です。

注意:   1つのキーコードに複数のキーネームを割り当てられますが、その逆は

        できません。


─◇ &prefix ◇────────────────────────────

文法:   &prefix {キーネーム|キーコード}[={0|1}] …

機能:   プレフィクス・スキャンコード入力の定義

説明:   &rule で指定したルールが成立しているとき &target で指定したキー

        のいずれかが押されたらその入力の前に入力するキーを指定します。

        &rule で指定したルールが成立しているとき、&target で指定したいず

        れかの入力があったら、その入力の前に &prefix のパラメータが指定

        された順序に入力されます。

        &prefix のパラメータにスキャンコード以外のキーコードを指定した場

        合は、対応するキーのスキャンコードとして解釈されます。

        &prefix によるキー入力の変換は、スイッチ -x[1] を指定した場合に

        有効です。

注意:   &prefix によって加えられた入力は IOCS レベルに反映しますが、ルー

        ルの判定には、シフトキー以外、加えられる前の入力だけが利用されま

        す。

例:     XF3+? を ESC-? に変換します。

                &name 01 ESC
                &name 57 XF3
                &rule XF3=1
                &target 02 03 04 05     % 必要なキーをすべて書きます
                &prefix XF3=0 ESC=1 ESC=0


─◇ &prog ◇─────────────────────────────

文法:   &prog プログラム名 …

機能:   プログラム名の定義

説明:   ルールに使用するプログラム名を登録します。

        プログラム名は、実行ファイル名からパスを除いた部分です。拡張子は

        付けて下さい。大文字と小文字の区別はありません。

        プログラムの条件は、スイッチ -p[1] を指定した場合に有効です。

        &prog を指定しなければ、プログラム名は何も定義されていません。

        一度定義したプログラム名は、後に読み込むすべての環境定義ファイル

        で有効です。

注意:   登録していないプログラム名はルールに使用できません。


─◇ &repeat ◇────────────────────────────

文法:   &repeat {0|1} …

機能:   リピートしないキーの定義

説明:   リピートしないキーを指定します。

        パラメータは、&target で定義した順序で指定します。0 を指定したキ

        ーはリピートしますが、1 を指定したキーはリピートしません。なお、

        &repeat で定義しなかったキーはすべて 0 です。

        リピートしない指定にする場合は、スイッチ -n[1] を指定します。

注意:   &repeat の指定は &assign などによるスキャンコード変換の影響を受

        けます。

例:     &repeat を指定しなかった場合のデフォルト。

                &name 88 SHIFT
                &name 89 CTRL
                &name 8A OPT.1
                &name 8B OPT.2
                &target SHIFT CTRL OPT.1 OPT.2
                &repeat 1 1 1 1


─◇ &reset ◇─────────────────────────────

文法:   &reset ルール

機能:   リセットを発生させるルールの定義

説明:   プログラムの条件が異なるルールに限って、複数のルールを登録するこ

        とができます。プログラムの条件が同じルールは上書きされます。

        なお、&reset で指定したルールは、キーのリピートによって連続実行

        されません。

例:     &reset を指定しなかった場合のデフォルト。

                &name 37 DEL
                &name 89 CTRL
                &name 8A OPT.1
                &reset DEL=1 CTRL=1 OPT.1=1


─◇ &rule ◇─────────────────────────────

文法:   &rule [ルール]

機能:   各種ルールの指定

説明:   幾つかの環境定義コマンドで必要なルールを定義します。

        無条件にする場合はパラメータを完全に省略します。

        &rule の定義は、これが書かれている環境定義ファイルの中だけで有効

        です。

        &rule を指定しなければ &assign、&char、&code、&eject、&prefix、

        &suffix、&tvctrl は使えません。

        ルールの記述の仕方については、ルールの説明を参照して下さい。


─◇ &sbreak ◇────────────────────────────

文法:   &sbreak ルール

機能:   SHIFT+BREAK の処理を発生するルールの定義

説明:   通常 SHIFT+BREAK を押すと発生する処理を割り当てるルールを定義し

        ます。

        プログラムの条件が異なるルールに限って、複数のルールを登録するこ

        とができます。プログラムの条件が同じルールは上書きされます。

        なお、&sbreak で指定したルールは、キーのリピートによって連続実行

        されません。

例:     &sbreak を指定しなかった場合のデフォルト。

                &name 61 BREAK
                &name 88 SHIFT
                &sbreak BREAK=1 SHIFT=1


─◇ &setled ◇────────────────────────────

文法:   &setled {キーネーム|キーコード}{=0|[=1]}

機能:   LED の初期状態の定義

説明:   KeyWitch を組み込んだときに LED に設定する状態を指定します。

        起動時に、SRAM に保存されている LED の設定を無視したい場合に使い

        ます。

例:     KeyWitch を組み込んだときに CAPS OFF、ひらがな ON に設定します。

                &name 83 CAPS
                &name 85 ひらがな
                &setled CAPS=0 ひらがな=1


─◇ &stop ◇─────────────────────────────

文法:   &stop {0|1} …

機能:   離したとき他のキーのリピートを止めるキーの定義

説明:   離したとき他のキーのリピートを止めるキーを指定します。

        パラメータは、&target で定義した順序で指定します。0 を指定したキ

        ーを離したときはリピートを止めませんが、1 を指定したキーを離した

        ときはリピートを止めます。なお、&stop で定義しなかったキーはすべ

        て 0 です。

        リピートを止める指定にする場合は、スイッチ -n[1]s[1] を指定しま

        す。

注意:   &stop の指定は &assign などによるスキャンコード変換の影響を受け

        ます。

例:     &stop を指定しなかった場合のデフォルト。

                &name 88 SHIFT
                &name 89 CTRL
                &name 8A OPT.1
                &name 8B OPT.2
                &target SHIFT CTRL OPT.1 OPT.2
                &stop 1 1 1 1


─◇ &suffix ◇────────────────────────────

文法:   &suffix {キーネーム|キーコード}[={0|1}] …

機能:   サフィクス・スキャンコード入力の定義

説明:   &rule で指定したルールが成立しているとき &target で指定したキー

        のいずれかが押されたらその入力の後に入力するキーを指定します。

        &rule で指定したルールが成立しているとき、&target で指定したいず

        れかの入力があったら、その入力の後に &suffix のパラメータが、指

        定された順序に入力されます。

        &suffix のパラメータにスキャンコード以外のキーコードを指定した場

        合は、対応するキーのスキャンコードとして解釈されます。

        &suffix によるキー入力の変換は、スイッチ -x[1] を指定した場合に

        有効です。

注意:   &suffix によって加えられた入力は IOCS レベルに反映しますが、ルー

        ルの判定には、シフトキー以外、加えられる前の入力だけが利用されま

        す。

例:     SHIFT を押して離すと、その直後の入力だけ SHIFT が有効になるよう

        にします。

                &name 88 SHIFT
                &rule SHIFT=1
                &assign SHIFT=0
                &assign SHIFT=1 SHIFT=0
                &target 02 03 04 05     % 必要なキーをすべて書きます
                &suffix SHIFT=0


─◇ &target ◇────────────────────────────

文法:   &target {キーネーム|キーコード} …

機能:   各種テーブルの指定

説明:   &char、&code、&eject、&repeat、&stop、&tvctrl のパラメータの順序

        を定義したり、&prefix、&suffix の対象となるキーを指定します。

注意:   &target の定義は、これが書かれている環境定義ファイルの中だけで有

        効です。

        &target を指定しなければ、&char、&code、&eject、&prefix、&repeat、

        &stop、&suffix、&tvctrl は使えません。


─◇ &tvctrl ◇────────────────────────────

文法:   &tvctrl テレビコントロール{コード|機能名} …

機能:   テレビコントロールキーの配置の定義

説明:   &rule で指定したルールが成立している場合の、テレビコントロールキ

        ーの割り当てを定義します。

        テレビコントロール機能のキーの配置を変更したり、キーに割り当てら

        れていない機能(テレビの電源の ON/OFF など)をキーに割り当てるこ

        とができます。

        パラメータには、&target で定義したキーの順序で、対応するテレビコ

        ントロールコード(16 進数2桁)または機能名を記述します。テレビ

        コントロールコードおよび機能名と機能の内容に付いては、下記の表を

        参照して下さい。

        &tvctrl を指定しなかった場合のデフォルトについては付属の環境定義

        ファイル KeyWitch.env を参照して下さい。

注意:   &tvctrl の指定は、スイッチ -t を指定した場合に有効です。


            テレビコントロールコードと機能名

        コード  機能名          機能
          01    volup     ボリュームアップ(リピート可)
          02    voldown   ボリュームダウン(リピート可)
          03    volnormal ボリュームノーマル
          04    chcall    チャンネルコール
          05    reset     テレビ画面(初期化・リセット)
          06    mute      音声ミュート
          07    powon     電源 ON
          08    tvcom     テレビ⇔コンピュータ
          09    video     テレビ⇔外部入力、
                          コンピュータ⇔オーバースキャン
          0A    normal    コントラストノーマル
          0B    chup      チャンネルアップ(リピート可)
          0C    chdown    チャンネルダウン(リピート可)
          0D    powoff    電源 OFF
          0E    onoff     電源 ON⇔OFF
          0F    super     スーパーインポーズ⇔スーパーインポーズ解除
          10    ch1       チャンネル 1
          11    ch2       チャンネル 2
          12    ch3       チャンネル 3
          13    ch4       チャンネル 4
          14    ch5       チャンネル 5
          15    ch6       チャンネル 6
          16    ch7       チャンネル 7
          17    ch8       チャンネル 8
          18    ch9       チャンネル 9
          19    ch10      チャンネル 10
          1A    ch11      チャンネル 11
          1B    ch12      チャンネル 12
          1C    tv        テレビ画面(初期化・リセット)
          1D    com       コンピュータ画面
          1E    super1    スーパーインポーズ(コントラストダウン)
          1F    super2    スーパーインポーズ(コントラストノーマル)


        機能名の前に on+ を付けると、テレビの電源を ON にしてからその機

        能を実行するという指定になります。

          例:   on+ch10   電源を ON にしてからチャンネルを 10 にする


─◇ &unlock ◇────────────────────────────

文法:   &unlock ルール

機能:   キー入力の禁止を解除するルールの定義

説明:   キー入力禁止モードから抜けるルールを指定します。

        プログラムの条件が異なるルールに限って、複数のルールを登録するこ

        とができます。プログラムの条件が同じルールは上書きされます。

        なお、&unlock のルールには LED の条件を含めないで下さい。LED の

        条件を含めると、入力が禁止されている状態では LED の状態がわから

        ないので、解除が困難になります。

        キー入力の禁止は、スイッチ -i[1] を指定した場合に有効です。

注意:   X680x0 Compact のキーボードでは、&lock だけ指定すると入力の禁止

        を解除する手段がなくなってしまいますから、&unlock も指定するよう

        にして下さい。

例:     &unlock を指定しなかった場合のデフォルト。

                &name 88 SHIFT
                &name 89 CTRL
                &name 8B OPT.2
                &unlock SHIFT=1 CTRL=1 OPT.2=1


─◇ &unlockblink ◇──────────────────────────

文法:   &unlockblink インターバル {0|1|2|3} …

機能:   LED の明滅の定義

説明:   2番目以降のパラメータには、キーに付いている LED の明るさを列挙

        します。明るさは4段階で、0 が最も明るく、3 が最も暗くなります。

        明るさは 16 個まで指定できます。

        最初のパラメータは変化のスピード(インターバル)です。1/100 秒単

        位の時間を $ に続けて2桁の 16 進数で指定して下さい。

        &unlockblink を指定しなかった場合、LED は最も明るい状態のままで

        明るさは変化しません。

        LED の明るさを変化させるとき、LED が一瞬消えてしまうことがありま

        す。

注意:   &unlockblink を指定すると、キーボードのマウスコネクタを通したマ

        ウス入力が正常にできなくなることがあります。その場合は、マウスを

        本体のコネクタに繋ぎ直して下さい。

例:     LED を明滅させます。

                &unlockblink $0A 0 1 2 1


━◆ 4.7 ◆ パッチネーム ◆━━━━━━━━━━━━━━━━━━━━━━

 メモリ上の ASK68K にあてるパッチは、それぞれその内容に応じた名前が決め

られています。その名前をパッチネームと呼びます。パッチネームを環境定義コ

マンド &ask のパラメータに指定することで、あてるパッチを選べるようになっ

ています。パッチネームとして次の 11 個の単語が定義されています。

        auto    ins     led     lock    n-n     space   tsu
        tsu-n   x-x     xf1     zenkaku

 これらのパッチは ASK68K version 3.01 および ASK68K version 3.02 に対し

て有効です。SX-Window のインラインモードには効力が及びませんが、SXKeyW.x

を使用することで、以下のパッチはインラインモードでも有効になります。

        n-n     tsu     x-x     zenkaku

SXKeyW.x が SXCON.X にパッチをあてて処置していますので、SXCON.X よりも後

から SXKeyW.x を組み込むようにして下さい。対応している SXCON.X のバージ

ョンについては、SX-Window を使用する場合の説明を参照して下さい。

 続いて、パッチネームごとにパッチの内容を説明します。


─◇ auto ◇──────────────────────────────

 文節を伸縮したとき自動的に再変換させます。文節を伸縮した後で再変換しな

いことはほとんどないので、自動的に再変換してくれたほうが便利だと思います。

 SX-Window のインライン入力では、元々再変換するようになっています。


─◇ ins ◇──────────────────────────────

 FEP の動作中も INS キーの入力を再定義可能キーとして素通りさせます。

SX-Window のインライン入力では無効です。


─◇ led ◇──────────────────────────────

 FEP を起動したとき、INS キーの LED が消えてしまう不具合をなくします。

 SX-Window では関係ありません。


─◇ lock ◇──────────────────────────────

 ASK68K version 3.01 で、SHIFT,CTRL,OPT.1 の各キーが押されたままの状態

になってしまう不具合をなくします。

 ASK68K version 3.02 の場合はこの不具合がありません。また、SX-Window で

も関係ありません。


─◇ n-n ◇──────────────────────────────

 ローマ字入力で NN を「んN」と変換させます。「どんな」と入力したいのに

「どんあ」になってしまう人は指定してみて下さい。「ん」を入力するときは、

X を使うか、NN としてから BS キーで N を1つ消す、あるいは N' を使って下

さい。

 SX-Window のインライン入力では、SXCON.X よりも後から SXKeyW.x を組み込

むことで有効になります。

 なお、n-n と tsu-n は同時に指定できません。


─◇ space ◇─────────────────────────────

 CTRL キーを押していなくても、スペースが自動的に確定しないようにします。

これは全角スペースを半角スペースに変換できるようにするために用意したパ

ッチですが、新設した xf1 を指定すれば XF1+スペース で半角スペースを入力

できるのでこちらの方が便利でしょう。

 SX-Window のインライン入力では無効です。


─◇ tsu ◇──────────────────────────────

 ローマ字入力で L,M,R,V,W,Y を重ねて「っ」が入るようにします。同時に、

FEP を起動していない状態で同様の入力を行った場合の不具合を改善します。

「ふっるーい」などの入力が楽になります。

 SX-Window のインライン入力では、SXCON.X よりも後から SXKeyW.x を組み込

むことで有効になります。


─◇ tsu-n ◇─────────────────────────────

 ローマ字入力で NN を「っN」と変換させます。はっきり言って無意味です。

 SX-Window のインライン入力では無効です。

 なお、n-n と tsu-n は同時に指定できません。


─◇ x-x ◇──────────────────────────────

 X を「ん」に変換しません。「X68」が「ん68」になってしまう人は指定

してみて下さい。

 SX-Window のインライン入力では、SXCON.X よりも後から SXKeyW.x を組み込

むことで有効になります。


─◇ xf1 ◇──────────────────────────────

 変換行が空の状態で XF1 キーを押しながらキーを押したとき、そのキーが

ASK68K の影響を受けずに素通りするようにします。半角スペースや英単語を

入力する場合に便利です。

 SX-Window のインライン入力には、元々同じ機能があります。


─◇ zenkaku ◇────────────────────────────
                                                               ヽヽ
 機能名 ZENKAKU の機能を、英字変換ではなくて全角変換にします。かな入力

を使っている人は指定してみて下さい。

 SX-Window のインライン入力では、SXCON.X よりも後から SXKeyW.x を組み込

むことで有効になります。
                            ヽヽ
 今のところ、一旦半角にしたかな文字を zenkaku の全角変換で全角に戻して

から再び半角に変換すると、英字になってしまうことがあります。


━◆ 5 ◆ 付属の環境定義ファイルについて ◆━━━━━━━━━━━━━━

 環境定義ファイルのサンプルとして、次の 32 個を付属しました。

        KeyWitch.env    altshift.env    ascii.env       ask_n.env
        ask_x.env       ask_xf1.env     c_num.env       c_numden.env
        capshira.env    del.env         denwa.env       dvorak.env
        edx_rubi.env    ejectall.env    emx_ask.env     ibm.env
        intcopy.env     oyayubi.env     pc98.env        preshift.env
        sccaps.env      scsireset.env   shinjis.env     ten000.env
        tenhex.env      tenhome.env     tvsw.env        underline.env
        xbasic.env      xf3_meta.env    xfmod.env       _shift.env

 続いて、個々の環境定義ファイルについて説明します。


─◇ KeyWitch.env ◇──────────────────────────

 標準の環境を環境定義ファイルの形式で書いたものです。KeyWitch のプログ

ラムにはこれと同等の環境が組み込まれていますから、このまま使用しても意味

がありません。環境定義ファイルの書き方のサンプルとして参照して下さい。


─◇ altshift.env ◇──────────────────────────

 SHIFT キーを押す度に、SHIFT の状態が ON/OFF するようにします。

 使用する場合は、スイッチ -x を指定して下さい。


─◇ ascii.env ◇───────────────────────────

 ASCII 配列にするサンプルです。

 ワークステーションを使い慣れている人にお勧めします。デリートコード $7F

は CTRL+/? で入力できます。


─◇ ask_n.env ◇───────────────────────────

 パッチネーム n-n を有効にして、ASK68K のローマ字入力で NN を「んN」と

変換させます。ナ行をローマ字表記通りに入力したい人は指定してみて下さい。

 使用する場合は、スイッチ -a を指定して下さい。


─◇ ask_x.env ◇───────────────────────────

 パッチネーム x-x を有効にして、ASK68K のローマ字入力で X を「ん」に変

換せず「x」または「X」として入力できるようにします。「ん」は N で十分

だと思う人にお勧めします。

 使用する場合は、スイッチ -a を指定して下さい。


─◇ ask_xf1.env ◇──────────────────────────

 パッチネーム xf1 を有効にして、ASK68K の変換行が空のとき、XF1 を押しな

がらキーを押すとそれが変換行に入らず素通りするようにします。半角スペース

や英単語を入力するのが楽になります。

 使用する場合は、スイッチ -a を指定して下さい。


─◇ c_num.env ◇───────────────────────────

 X680x0 Compact のキーボードを使用している場合に、ホームポジションから

NUM キーを操作できるようにします。NUM キーの操作を XF2+XF3 に割り当てて

いますが、他のキーに変更しても構いません。このサンプルは、KeyWitch が

NUM キーをコントロールできることを利用しています。通常は

SHIFT+CTRL+OPT.1 で十分でしょう。sccaps.env を使う場合は役に立つかも知れ

ません。

 使用する場合は、スイッチ -x を指定して下さい。


─◇ c_numden.env ◇──────────────────────────

 X680x0 Compact のキーボードを使用している場合に、NUM キーの LED の状態

と電卓の表示状態を連動させます。OPT.1+OPT.2 による電卓の ON/OFF も有効で

す。

 使用する場合は、スイッチ -x を指定して下さい。

 なお、SHIFT+CTRL+OPT.1 による NUM キーの操作で電卓を ON/OFF することは

できません。


─◇ capshira.env ◇──────────────────────────

 CAPS キーと ひらがな キーを LED ごと入れ替えます。X680x0 Compact のキ

ーボードは CAPS キーが左下にありますが、他のキーボードでは右上にあって不

便なので、左下にある ひらがな キーと入れ替えてしまおうという発想です。単

に入力が入れ替わるだけでなく、それぞれのキーに付いている LED まで入れ替

えてしまえるところが、KeyWitch の特徴です。

 使用する場合は、スイッチ -lx を指定して下さい。


─◇ del.env ◇────────────────────────────

 DEL キーで ASCII のデリートコード $7F を発生させます。


─◇ denwa.env ◇───────────────────────────

 テンキーの数字を電話並びにします。つまり、上の段から 1,2,3,… となって、

一番下の段の中央が0になります。

 使用する場合は、スイッチ -x を指定して下さい。


─◇ dvorak.env ◇───────────────────────────

 DVORAK 配列にするサンプルです。


─◇ edx_rubi.env ◇──────────────────────────

 ed.x でルビ入力ができるようにします。XF4+A で上付き 1/4 角、XF5+A で下

付き 1/4 角の文字が入力できます。このサンプルは、メタキーとプログラムの

条件を利用しています。

 使用する場合は、スイッチ -mp を指定して下さい。


─◇ ejectall.env ◇──────────────────────────

 CTRL+F10 で、イジェクト可能なすべてのドライブをイジェクトします。イジ

ェクトに対応しているフロッピーディスクや、MO、CD-ROM などが、全部飛び出

します。リセットする前や、仕事を終えて本体の電源を切るときなどに使うと便

利でしょう。

 CTRL+F1〜F5 は標準と同じですが、SX-Window でもイジェクトできるように、

あえて定義してあります。


─◇ emx_ask.env ◇──────────────────────────

 em.x で、ASK68K の変換行が ON の状態でも CTRL+スペース や XF3+V などを

入力できるようにします。

 使用する場合は、スイッチ -apx を指定して下さい。


─◇ ibm.env ◇────────────────────────────

 IBM 系のキーボードは、X680x0 のキーボードの CTRL の位置に CAPS があり、

X680x0 Compact 以外のキーボードの ひらがな の位置に CTRL があります。こ

のファイルでは CTRL,CAPS,ひらがな を入れ替えます。こだわる人は更に改造し

て下さい。

 使用する場合は、スイッチ -lx を指定する必要があります。

 なお、このファイルは X680x0 Compact 以外用です。


─◇ intcopy.env ◇──────────────────────────

 COPY キーで実行中のプログラムを止められるようにします。COPY キーの元の

機能は残していません。


─◇ oyayubi.env ◇──────────────────────────

 親指シフトのサンプルです。親指左を XF2 に、親指右を XF3 にそれぞれ割り

当ててあります。本物の親指シフトを使ったことがないので、間違いがあるかも

しれません。使用する場合は適当に修正して下さい。1つのキーに濁点を含んだ

2バイトの文字列を割り当てています。


─◇ pc98.env ◇────────────────────────────

 標準の JIS 配列の ` と ~ を入れ替えます。


─◇ preshift.env ◇──────────────────────────

 SHIFT を押して離した後、別のキーを押した直後まで SHIFT を有効にします。

SHIFT を多用するアプリケーションとは相性が悪いことがあります。プログラム

の条件を加えるなどして対応して下さい。

 使用する場合は、スイッチ -x を指定して下さい。


─◇ sccaps.env ◇───────────────────────────

 SHIFT と CTRL を同時に押さえることで CAPS を ON/OFF できるようにします。

 使用する場合は、スイッチ -x を指定して下さい。


─◇ scsireset.env ◇─────────────────────────

 CTRL+HELP で SCSI バスリセットを発生させます。SCSI まわりの原因でハン

グアップしてしまったとき、SCSI バスリセットを試みると、復帰できることが

あります。ディスクアクセス中にいきなり RESET スイッチを押すよりも比較的

安全に(データ破壊を最小限に食い止めて)復帰できる可能性があります。

 接続している SCSI 機器によっては、SCSI バスリセットが発生してから数秒

間復帰しないことがありますが、異常ではありません。

 普段は無闇に SCSI バスリセットを使わないほうがよいでしょう。この機能が

原因で万が一データの破壊が生じても、責任は持てません。どうしても RESET

せずに復帰したい場合の最後の手段として使用して下さい。


─◇ shinjis.env ◇──────────────────────────

 新 JIS 配列のサンプルです。本物の新 JIS 配列を使ったことがないので、間

違いがあるかもしれません。使用する場合は適当に修正して下さい。


─◇ ten000.env ◇───────────────────────────

 テンキーに 000 を設けます。電卓は無効です。1つのキーに3バイトの文字

列を割り当てています。


─◇ tenhex.env ◇───────────────────────────

 XF3+テンキーの1〜6 を A〜F にします。これによって、電卓の 16 進数モー

ドが少し使いやすくなります。

 使用する場合は、スイッチ -x を指定して下さい。


─◇ tenhome.env ◇──────────────────────────

 X680x0 Compact で NUM キーをロックしてしまうと、テンキーの位置にあるシ

フトキーを併用する記号が入力できなくなってしまいます。そこで、NUM をロッ

クする代わりに XF1 を押しながらテンキーを使えるようにします。

 使用する場合は、スイッチ -x を指定して下さい。


─◇ tvsw.env ◇────────────────────────────

 OPT.2+HOME でテレビの電源を ON/OFF できるようにします。OPT.2 キーをテ

レビコントロールに使える設定のときに有効です。

 使用する場合は、スイッチ -t を指定して下さい。


─◇ underline.env ◇─────────────────────────

 標準の配列で SHIFT を押さずに _ を入力できるようにします。


─◇ xbasic.env ◇───────────────────────────

 X-BASIC の予約語を XFn+A〜 に割り当てるサンプルです。実用性は不明です。

KeyWitch が1つにキーに1文字だけでなく文字列を割り当てられることを利用

しています。


─◇ xf3_meta.env ◇──────────────────────────

 XF3 を ESC コードのメタキーにします。このサンプルでは &prefix を利用し

ているので、SX-Window のコンソールウィンドウでもメタキーが有効です。

 使用する場合は、スイッチ -x を指定して下さい。


─◇ xfmod.env ◇───────────────────────────

 CTRL+XF3 で かな、CTRL+XF4 で ローマ字、CTRL+XF5 で CAPS をそれぞれ操

作します。X680x0 Compact 以外のキーボードでは かな,ローマ字,CAPS がホー

ムポジションから遠いので、この割り当てが便利です。

 使用する場合は、スイッチ -x を指定して下さい。


─◇ _shift.env ◇───────────────────────────

 _ のキーを SHIFT キーにします。これは ASCII 配列などで _ キーが余って

いるとき、ここを SHIFT として使えるようにするためのものです。

 使用する場合は、スイッチ -x を指定して下さい。


━◆ 6 ◆ SX-Window を使用する場合 ◆━━━━━━━━━━━━━━━━━

 KeyWitch の機能を SX-Window 上でも有効に使うには、付属の SXKeyW.x を利

用して下さい。SXWIN.X を起動するよりも前に KeyWitch を組み込んでから

SX-Window を起動して、スタートアップメンテに SXKeyW.x を登録して使います。

スタートアップメンテに SXCON.X が登録されている場合は、SXCON.X よりも後

から SXKeyW.x が組み込まれるようにして下さい。


□ SX-Window を使用する場合の注意事項

 KeyWitch のアイコンをダブルクリックしたり、コンソールウィンドウで

KeyWitch を組み込まないで下さい。

 キー入力禁止機能を使用すると、禁止を解除した後にキーボードの LED の状

態が正常に戻らなくなることがあります。なるべく、入力を禁止しないように注

意して下さい。


 以下は、SXKeyW.x を使用している場合についての説明です。


□ SXKeyW.x のスイッチ

 SXKeyW.x のパラメータとして指定できるスイッチは、次の1個です。


・-o{0|[1]}

 キーが押されたときポインタがアクティブなウィンドウのウィンドウコンテン

ツの上にあったら、ポインタを消して文字を読みやすくします。マウスを動かす

とポインタが現れます。


□ ダイアログの操作について

 SXKeyW.x が組み込まれている状態で再び SXKeyW.x を実行すると、環境設定

のための簡単なダイアログが表示されます。これについて簡単に説明します。


・チェックボタン

 それぞれ、ボタンの右側に書いてある機能の ON/OFF を行います。


・設定ボタン

 ダイアログを閉じて、チェックボタンの状態に応じて環境を設定します。


・取消ボタン

 チェックボタンの変更を取り消してダイアログを閉じます。


・解除ボタン

 機能を解除して SXKeyW.x を終了します。


□ 誤入力の回避

 KeyWitch が -d[1] の指定で常駐していると、SX-Window 上でのキー入力にも

誤入力の回避が有効です。

 ゲームで複数のキーを同時に押したときの反応が遅れるなどの影響が出るとき

は、ダイアログでこの機能を停止させて下さい。


□ タスク名の条件をルールで使う

 KeyWitch が -p[1] の指定で常駐していると、プログラム名を含んだルールが

SX-Window のタスク名に対応します。


□ SXCON.X へのパッチ

 スイッチ -a を指定したときに ASK68K にあてられるパッチはすべてインタフ

ェイス関係なので、SX-Window のインライン入力には効力が及びません。そこで、

SXKeyW.x で SXCON.X にパッチをあてることによって、一部のパッチがインライ

ン入力でも有効になるようになっています。

 SXCON.X に対応しているパッチは、次の4個です。

        n-n     tsu     x-x     zenkaku

パッチの内容についてはパッチネームの説明を参照して下さい。

 SXKeyW.x が対応している SXCON.X のバージョンは、以下の通りです。

        SXCON              X        39402  94-05-07  12:00:00
                SX-Window ver3.1 システムディスク(旧)

        SXCON              X        39408  94-06-05  12:00:00
                SX-Window ver3.1 システムディスク(新1)

        SXCON              X        39558  94-07-20  12:00:00
                SX-Window ver3.1 システムディスク(新2)

        SXCON              X        39652  94-12-10  12:00:00
                シャーペンワープロパック ver1.0

        SXCON              X        39674  95-05-10  17:21:56
                シャーペンワープロパック ver1.1


□ シャーペン.X に関する特記事項

 シャーペン.X で SHIFT+テンキー などのテレビコントロールキーに機能を割り当

てたいときは、KeyWitch の組み込み時にスイッチ -t を指定しておいてから

SX-Window を起動して、シャーペン.X をカスタマイズして下さい。


━◆ 7 ◆ 他の常駐物と併用する場合のご注意 ◆━━━━━━━━━━━━━

 KeyWitch は常駐時に重要なベクタをいくつか変更します。ベクタの変更が競

合する他のプログラムと併用した場合、双方が正常に動作しなくなる可能性があ

りますので、ご注意下さい。

 SX-Window のコンソールや μEmacs のシェルウィンドウなどで、KeyWitch を

常駐させないで下さい。その場は常駐したように見えても、後で暴走することが

あります。

 KeyWitch は、なるべく他のデバイスドライバや常駐プログラムよりも前に組

み込むようにして下さい。ただし、ASK68K にパッチをあてる場合は、

ASK68K.SYS よりも後に組み込んで下さい。また、CONDRV.SYS と併用する場合は

KeyWitch のほうを後から組み込むようにして下さい(後述)。&lockblink また

は &unlockblink を使用する場合は HIOCS.X よりも後から組み込んで下さい。

使用しない場合は HIOCS.X よりも前に組み込んだほうが若干効率的です。

 ASK68K version 3.02 を使用しているにも関わらず、ASK のバージョンが違う

というエラーが表示されるときは、ASK68K.SYS を組み込んだ後に組み込まれた

プログラムが、競合するベクタ(KNJCTRL)を変更している可能性があります。


□ CONDRV.SYS と併用する場合

 CONDRV.SYS と併用する場合は、KeyWitch のほうを後から組み込むようにして

下さい。併用による誤動作を防ぐために、KeyWitch が常駐するとき CONDRV.SYS

にパッチをあてています。


□ MuTERM と併用する場合

 MuTERM を使用する場合は、あらかじめ KeyWitch を解除しておくか、MuTERM

に立花えりりん氏が作られたパッチをあててから使用して下さい。


─◇ KeyWitch が変更するベクタについて ◇───────────────

 KeyWitch が常駐すると、下記のベクタが変更されます。ここで (*) をつけた

ベクタの処理では元のルーチンが併用されますが、その他は KeyWitch の中にあ

るルーチン(Spurious Interrupt は ROM 内の rte)だけが使用されます。

        $0060   Spurious Interrupt
        $0114   Timer-C
        $012C   MFP USART Receive Error
        $0130   MFP USART Receive Buffer Full
        $0400   IOCS _B_KEYINP (*)
        $0404   IOCS _B_KEYSNS (*)
        $0408   IOCS _B_SFTSNS
        $040C   IOCS _KEY_INIT
        $0414   IOCS _SKEYSET
        $0418   IOCS _LEDCTRL
        $041C   IOCS _LEDSET
        $0420   IOCS _KEYDLY
        $0424   IOCS _KEYREP
        $0430   IOCS _TVCTRL
        $0434   IOCS _LEDMOD
        $04EC   IOCS _JOYGET (*)

 他のプログラムでこれらのベクタを変更するものと併用する場合は、変更内容

の競合に注意して下さい。また、組み込みを解除する場合は、後から組み込んだ

プログラムを先に解除して下さい。


━◆ 8 ◆ 使用上のご注意 ◆━━━━━━━━━━━━━━━━━━━━━━

 環境定義ファイルの記述に対して文法チェックを行っていますが、設定に矛盾

があるかどうかはほとんどチェックしていません。そのため、無理な設定が原因

でキー入力に支障が出て、リセットせざるを得ない状況になる可能性があります。

環境定義ファイルを変更した場合は、念のためコマンドラインで組み込んでみて

正しく入力できることを確かめてから、AUTOEXEC.BAT などに書くことをお勧め

します。

 間違った環境が自動的に組み込まれるようなシステムにしてしまった場合は、

リセット後、KeyWitch のメッセージが出るまで かな キーを押して続けて下さ

い。組み込みを中止できます。

 ASK68K に対するパッチは、メモリ上の ASK68K を直接書き換えています。

KeyWitch 以外のパッチとは併用しないで下さい。KeyWitch は、ASK68K のバー

ジョンと、書き換える部分のデータが純正と同じかどうかだけをチェックしてい

ます。SXKeyW.x による SXCON.X に対するパッチも同様です。

 機種(ROM)に依存しないようにするために、KeyWitch はソフトウェアキーボ

ードの処理を一切行っていません。このため、ソフトウェアキーボードの表示が

実際の状態と異なることがあります。

 &unlockblink を指定すると、キーボードのマウスコネクタを通したマウス入

力が正常にできなくなることがあります。そのときは、マウスを本体のコネクタ

に繋ぎ直して下さい。


━◆ 9 ◆ 一般的なご注意 ◆━━━━━━━━━━━━━━━━━━━━━━

 KeyWitch は正しく動作することを望んで作られていますが、無保証です。

KeyWitch の不具合によって損害が発生したとしても、使用者の責任になります。

 KeyWitch はフリーウェアとします。著作権は放棄していません。

 転載の場合に連絡は不要です。ただし、転載していただいた場合は、バージョ

ンアップにできる限り追従して下さるようにお願いします。アーカイブの形態は

特に制限しませんが、含まれるファイルを一切変更しないで下さい。


━◆ 10 ◆ 参考文献 ◆━━━━━━━━━━━━━━━━━━━━━━━━

[1] X68000 データブック、POPCOM 編集部編、小学館、1987

[2] “吾輩は X68000 である[第22回]キーボードのマジック(その2)”
        Oh!X 1993 年5月号 pp.120-124、泉大介著、ソフトバンク

[3] SX-WINDOW プログラミング、吉沢正敏著、ソフトバンク

[*] XC v2.0 のプログラマーズマニュアル

[*] ROM、Human、ASK、FSX、SXCON などの解析結果


━◆ 11 ◆ 謝辞 ◆━━━━━━━━━━━━━━━━━━━━━━━━━━

 KeyWitch の作成にあたり、以下のフリーウェアを利用させていただきました

(順不同・敬称略)。

        しゃれまっくす rel5c6   lika/homy/salt/peace/shuna/rima/sharl
        has v3.09+64            Y.Nakamura/M.Kamada

 また、以下のフリーウェアも活用させていただいています(順不同・敬称略)。

        gzip 1.2.4              ArctanX
        dis 2.78 patchlevel+04  K.Abe/R.ShimiZu/syo.
        hiocs 1.10+16           Y.Nakamura
        TwentyOne 1.32a         Ext
        lha 2.63                吉崎 栄泰/岡田 紀雄
        lx 1.20                 M.Harashino
        bdif/bup 1.2 rel.2      K.Higashide

        ClickMenu 1.10d         Masaru Oki
        SAdjust 1.22            Sho-Ta
        SilentActivate 1.24     CHIHI
        SXperiod 0.04.3         R.Mauriat
        Active Jump 0.11        PRAY
        2行にするの(他多数)    けんと

        その他

 また、rkeydrv.r v1.02(小笠原博之氏作)を参考にさせていただきました。

これらの各フリーウェアの作者の方々に感謝致します。

 そして、直接ご協力下さった次の方々にもお礼申し上げます。

・電脳倶楽部77号に掲載された KeyWitch version 1.08c を見て真っ先に連絡

してくださり、NetWork SX とシーラカンスカンパニーへの転載を申し出てくだ

さった、An(箕浦真)さん。

・KeyWitch を X680x0 Compact のキーボードに対応させるために、一時的なキ

ーボードの交換に快く応じて下さった、遠藤敏夫さん。

・バグ情報、ご感想、ご要望、励ましのお言葉などを寄せて下さった、x6chat、

NetWork SX、その他の皆さん。

 添付カットファイル KeyWitch.cut は、電脳倶楽部第89号の“イカプロんぷ

と”の読み物のコーナーで KeyWitch が紹介されたときに、そのドキュメントの

カットとして、和田八汐さんに描いていただいたものです。

 最後になりましたが、本ドキュメントの最初に掲げた「鍵盤の魔法使い」の表

現は、平本@クボタさんからいただいたものです。平本さんには x6chat でバグ

情報などを寄せていただく傍ら、Internet News で KeyWitch を紹介していただ

くなど、大変お世話になっています。


━◆ 12 ◆ 連絡先 ◆━━━━━━━━━━━━━━━━━━━━━━━━━

 このドキュメントをよくお読みになった上で、動作がおかしいと思われる場合、

または、このドキュメントの内容が間違っていると思われる場合は、下記までご

連絡下さい。なお、バグ報告をしていただく際は、異常動作の内容と発見された

時のハード・ソフトの環境(特に、併用されたフリーソフトウェア)をできる限

り具体的に説明していただけると、対応しやすくなります。

 KeyWitch 本体のバージョンもお忘れなく。

 状況によっては対応に時間がかかる場合もありますので、予めご了承下さい。

        Mankai Special X680x0 user's Net: MKSX0109:かまだ


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

(EOF)

─◇ WITCH IMAGES ◇─────────────────────────
        KeyWitch version 1 ── KIKI   (KIKI'S DELIVERY SERVICE)
        KeyWitch version 2 ── KUKURI (MAGICAL CIRCLE GURUGURU)
───────────────────────────────────