X680x0 Ko-Window 知っておきたい基本事項 最初は必ず KOWIN.DOC を読んで下さい。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ このドキュメントはおまけの読み物です。 Ko-Window のアプリケーションを使う上で、ほとんど暗黙の了解に近い基本的な事 項をまとめてみました。知らなくてもなんとかなるけど知っておくと便利!聞きたく ても聞けなかったあの疑問も一気に解消。Ko-Window てこんなに便利だったのか、と 感嘆すること間違いなし!(大げさ度256倍) ●ドラッグって何?マウスでつかむって何? ドラッグとはマウス操作の1つです。 ・カーソル移動 ただだまってマウスを動かすことです。それに合せて画面上のマウスカーソ ルも移動します。動かす時にボタンを押していてはいけません。 ・クリック 目的の場所で、マウスボタンを押してすぐ離すこと。クリックの場合、離す という動作は意外に重要です。 ・ドラッグ マウスボタンを押したままマウスを移動することをドラッグといいます。ペ ンを紙に押しつけたまま動かして文字を書く、のと同じです。 ウィンドウを動かす時は「ドラッグ」を使います。動かしたいウィンドウのタイト ルバーにマウスカーソルを移動させ、そこで左ボタンを押したまま目的の位置までマ ウスを動かします。離した時にその位置にウィンドウが移動します。 この動作は、まるで手で物を持ち上げて、他の場所まで動かすのに非常によく似て います。そのためこういうドラッグ動作を「ウィンドウをつかんで移動させる」と表 現することがあるのです。 タイトルバー上でドラッグしてボタンを押している状態、つまりウィンドウ枠が表 示されてそれを動かしている時、それがちょうどつかんでいる状態になります。 このようなつかむと表現するのは、実際はウィンドウだけでなくファイルや画像デー タの場合がほとんどです。kf.win から他のアプリケーションへファイル名を転送する ことを「ファイルをつかんで放り込む」と表現することがあります。 また gview.win で表示している画像を、gv_rev.win へマウスで転送して画像反転 を行うような場合も「画像をつかんで gv_rev へ運ぶ」となるわけです。 ● run 実行とは? Ko-Window 用語(?)として「run 実行」という言葉が出てくることがあります。これ は Command.win の「run」コマンドに由来します。 Command.win 上では、単純な文字メッセージしか表示しない通常のコマンドはその まま実行させることができますが、直接 V-RAM や画面を破壊するプログラムを実行す ると、ウィンドウの描画内容が崩れてしまいます。 もっとも画面の表示が崩れているだけで動作自体は特に悪いわけではないのですが、 実行が終わったあとにウィンドウの表示をいちいち戻さなければならないのは不便で す。 そこで登場するのが「run 実行」というのもです。V-RAM を直接乗っ取ったり、直 接描画したりするアプリを安全に実行するには、Command.win 上から run プログラム名 と実行すればいいのです。例えば X68K 初代についてきた有名なグラディウスも、 Command.win 上から run gradius.x と実行すればきちんと動かすことができます。もちろんグラディウスを終了させれば 元のウィンドウ画面に復帰します。 早い話、Ko-Window からチャイルドでコマンドを実行するようなものです。 Command.win の場合は 'run' コマンドですが、シェルやアプリケーションによって は別のコマンド前や実行方法になっている場合があります。ですが、このように画面 を実行後に復帰させてチャイルドでコマンド実行するとを全部ひっくるめて「run 実 行」と呼ぶことがあるのです。ぜひぜひ覚えておきましょう。 なお Command.win 上で、何も引数を与えずにただ「run [CR]」とだけ実行すると、 チャイルドで一時的に通常のシェル状態に戻ることができます。「exit [CR]」で復帰 します。これも覚えておくと便利です。 ●ウィンドウ上での行編集 Ko-Window 上で行入力を行う場合、ちょうど半角文字の半分の形のカーソルが出て いることがあります。これは Ko-Window 標準の行入力ルーチンを使用していることを 意味しています。この状態では、アプリケーションの種類に関係なく常に共通の行編 集操作ができるようになっています。 またこの時、キー操作は ED モードと Emacs モードの2種類があり、ユーザーに よって自由に選択可能になっています。 ・編集キー操作 Normal Mode (ED.X) Emacs Mode 機能 --------------------------------------------------------------- [CTRL]+[a]|[↑] [CTRL]+[p] 単語左移動 [CTRL]+[b]|[CLR] [CTRL]+[g] 行頭/行末移動 [CTRL]+[d]|[→] [CTRL]+[f] 右移動 [CTRL]+[f]|[↓] [CTRL]+[n] 単語右移動 [CTRL]+[g]|[DEL] [CTRL]+[d] 文字削除 [CTRL]+[h]|[BS] [CTRL]+[h] 後退削除 [CTRL]+[k] [CTRL]+[k] カーソル以後削除 [CTRL]+[o]|[INS] [CTRL]+[o] 挿入切り替え [CTRL]+[p] [CTRL]+[e] 行末へ [CTRL]+[q] [CTRL]+[a] 行頭へ [CTRL]+[s]|[←] [CTRL]+[b] 左移動 [CTRL]+[u]|[HOME] [CTRL]+[u] 行クリア [CTRL]+[v] [CTRL]+[q] コントロール文字入力 [CTRL]+[_][e] [CTRL]+[_][?] モード変更(?は任意の1文字) Emacsモードでもカーソルキーは使用できますが表記を省略しています。また両 モードで重ならない操作は、どちらでも使用できます。(CTRL+V 等) 直接モードを切り替えるには次のようにします EDモード -> Emacsモード [CTRL]+[_] を押したあと [e] を押す Emacsモード -> EDモード [CTRL]+[_] を押したあと [e] 以外を押す デフォルトの編集モードは、環境変数「KOWINKEY」によって定義しておくことがで きます。この設定さえ行っておけば、Ko-Window 上のキー入力は、常に共通の操作で 行うことができます。 KOWINKEY の内容 意味 --------------------------------------------------------------- 未定義 Normal Mode (ED.X バインド) ed Normal Mode (ED.X バインド) emacs Emacs Mode ied 強制 Insert Normal Mode (ED.X) iemacs 強制 Insert Emacs Mode <例> set KOWINKEY=iemacs 強制 Insert 設定にしておくと、[INS]キーの LED 状態に関係なく常に挿入状態 になります。 ●コンソールって何? アプリケーションのドキュメントを見ていると、よく「エラーメッセージはコンソー ルに出力します」と書いてあることがあります。 このコンソールというのは、いわばウィンドウ上で1つ、テキストを表示する代表と なるウィンドウを決めておいて、アプリケーションのエラーやメッセージを、そこに 一括して表示させよう、というものです。 もともとは UNIX や X-WINDOW にあるコンソール、を真似たものです。 こうしておけば、ワーニングのためにいちいちダイアログが出て他の処理も全部中 断してしまうことはありませんし、多数出たメッセージもあとからバックスクロール させてゆっくりと見ることができます。そして何よりアプリケーション側の負担が大 きく減ります。 通常は Command.win か KoConsole.win をコンソールウィンドウとして使用するこ とになるでしょう。 ●ウィンドウサーバーって何ですか? Ko-Window とどこが違うの? ウィンドウサーバーとは、ウィンドウの管理や描画等、基本的な機能を受け持つプ ログラムのことです。各アプリケーションはウィンドウサーバーにやりたいことをリ クエストして、描画や移動等を行っているわけです。 もっと簡単にいいますと、Ko-Window サーバーというのは「WSRV.X」のことです。 そしていろいろなアプリケーションやその関連するものをひっくるめて Ko-Window と呼んでいるわけです。 ●アプリケーションの起動オプション アプリケーション毎にほぼ共通のオプションスイッチです。もちろん中には別のス イッチだったり違う意味に使われていたりすることもあるので、個々のドキュメント もぜひ参照しておいて下さい。 注意すべきことは、Ko-Window のアプリケーションでは、オプションスイッチの大 文字と小文字を明確に区別することが多いということです。大文字と小文字で別の意 味を持たせる可能性があることから、最初から区別する方向で作られているアプリケー ションが多いのです。またオプションスイッチの記号は '-' です。中には '/' をス イッチの記号として使えるアプリケーションもあるかもしれませんが、'-' でないと 反応しないものがほとんどです。 (1) スイッチの大文字小文字は区別する! (2) スイッチの記号は / ではなく - を使おう! (3) とにかくドキュメント通りに指定すれば間違いはない! 以上3点、ぜひ覚えておきましょう。 ・まず間違いなく必ず持っていて、かつ共通のオプション -x 横方向座標指定 -y 縦方向座標指定 この2つはウィンドウの初期起動座標をドット単位で与えます。例 えば、画面上の左上にそのプログラムを起動したければ「-x0 -y0」 とコマンド行に書いて実行すればいいのです。もちろん片方だけ指 定することもあります。 <例> kf.win -x100 -y0 ・指定できる場合は必ず共通のオプション -h 横サイズ -v 縦サイズ ウィンドウの大きさを指定します。ウィンドウの大きさを変更でき ないアプリケーションではこのオプションはありませんが、リサイ ズできるものではほとんどこのスイッチがあります。片方だけサポー トしているものもあります。指定はドット単位です。 <例> uclock.win -h80 -v80 -f フォントサイズ(必ず小文字!) フォントの大きさを変更できる場合はこのオプションです。フォン トのサイズはユーザーが任意で選べるアプリケーションが結構あり ます。Command.win や tview.win 、kf.win などなど。その場合、 起動時に指定する場合のオプションは -f です。選べるフォントの 種類は、実はアプリケーションではなくてサーバーとフォントドラ イバの能力に依存します。現時点(1995/11/14)では以下の5種類です。 -f8 8dotフォントの指定(恵梨沙フォントが必要) -f10 10dotフォントの指定 -f12 12dotフォントの指定 -f16 16dotフォントの指定 -f24 24dotフォントの指定 上記以外の値を -f オプションに与えないで下さい。 なお上記のうち 10dot フォントは、hfont に hfont10.fon を与え て組み込んでおかなければ使うことができませんが、これはすでに Ko-Window のほぼ標準と化しているので必ず組み込んでおいて下さ い。10dot フォントを組み込んでも消費メモリは 2.5Kbyte 増える だけですから、心配する必要はまずありません。 8dotフォントを使用するには恵梨沙フォントが必要です。 -a 文字アトリビュート(必ず小文字!) フォントサイズ同様、文字の描画色を設定できます。その場合はこ の -a オプションになります。デフォルトの色はアプリケーション によってまちまちですが、圧倒的に -a9 (灰色反転) のものが多い でしょう。気に入らない方はこのオプションで変更しましょう。代 表的なカラーは以下の通り -a9 Ko-Windowテキスト標準色(灰色地に黒文字) -a11 白地に黒文字(これがデフォルトのアプリも存在する) -a3 黒背景に白文字(いわゆる普通の非ウィンドウ時の配色) -a13 標準色+強調 フォントの線が細くて見にくい、という時は これが有効かもしれません(ホント?) 以下、Ko-Window アトリビュートコードの詳細。bit?の後ろのかっ この中の数値を加算して、その値を -a オプションに与えます。例 えば 白 + 反転 + 強調 なら 3 + 8 + 4 なので -a15 とすればい いことになります。 bit0〜1(0〜3) 文字色(黒,灰,透明,白) bit2(4) 強調 bit3(8) 反転 bit4(16) 網かけ bit5(32) 白反転 bit5(64) 下線 ●ウィンドウオペレーション タイトルバーでの操作等、基本的なウィンドウオペレーションをまとめてみました。 あまりに基本過ぎるので、どのアプリケーションのドキュメントでもいちいち説明し ていません。というわけでここで詳しく書いてみます。 ・タイトルバーの操作ボックス 操作ボックスは以下の種類があります。ボックスは左ボタンで操作します。 ┌─┐ リサイズボックスといいます。タイトルバーの左上にあります。左ボタンで |┌┤ ドラッグするとウィンドウサイズを変更できます。リサイズできないウィン └┴┘ ドウの場合はこれはありません。また縦横にスクロールバーが出ている時は、 ウィンドウ右下の角でも同様にリサイズできることがあります。右下の場合 は、必ずしも ┌┬┐ ├┘|というマークでなくただの空白になっていることが多いのですが、そ └─┘ れでもちゃんと右下の角でもリサイズはできますので忘れずに。 ┌─┐ クローズボックスです。ウィンドウを閉じます。アプリケーションも終了し |/| ます。 └─┘ ┌─┐ アイコンボックスです。左ボタンでクリックしてアイコン化します。アイコ |×| ンというのは、ウィンドウを一時的にじゃまにならないシンボルサイズにし └─┘ ておくことです。アイコンをクリックするともとの元に戻ります。 □┐ プッシュボックスです。左ボタンでクリックすると、他のウィンドウの下に └┘ 押し込むことができます。ウィンドウの重なりを変更する時に使います。 ┌─┐ ズームボックスです。左ボタンでクリックしてウィンドウを最大の大きさに |□| します。あまり見たことがないかもしれません。これがついているアプリは └─┘ それほど多くはないです。 タイトルバーにつく操作ボックスはこれで全部です。アプリ毎に、必要なスイッチ だけタイトルバーに現れます。これらは全部、マウスボタンを離した時に反応します。 だからクローズボタンを押した瞬間、セーブし忘れていたのを思い出しても、慌てず にカーソルをずらして別のところで離せば大丈夫です。(ドラッグになるのでたいて いウィンドウ移動になります。) ・タイトルバー タイトルバーは、つかんでドラッグするとウィンドウの移動です。これはもうご存 じの方が多いと思います。その他にも以下の操作ができます。 ◆ウィンドウ移動 左ドラッグ タイトルバーの上でマウスの左ボタンを押し、押したままカーソルを目的位 置まで動かします。離すとその場所にウィンドウが移動します。 ◆ウィンドウのポップ 左クリック プッシュボックスと逆の働きです。タイトルバーをクリックすると、ウィン ドウの重なりから1番上に出てきます。 ◆マネージャーメニュー 右クリック アプリケーションによって、ポップアップメニューはそれぞれ専用のものが 出ることがありますが、タイトルバー上右クリックすると、必ずウィンドウ マネージャーのポップアップメニューが出ます。 ・スクロールバー もしかしたら、スクロールバーでの操作を文章で詳しく説明するのはこれが初めて かもしれません。スクロールバーには「縦バー」と「横バー」の2種類が存在します。 アプリケーションによって、縦バーのみだったり横バーのみだったり、縦横が一緒に ついていたりします。 「縦バーの例」 ─┌─┐ ↑│ │ スライダは、左ドラッグで直接つかんで |│ │ 上下に動かせます。スライダの上下移動 |│□│ ← スライダ に合せて、ウィンドウ内のスクロールが スライダ|│ │ ついてきます。 の移動範|│ │ 左ボタンを押している間は、ドラッグ中 囲 |│ │ スクロールバーからカーソルが外れても |│ │ 大丈夫です。(落としません) |│ │ |│ │ |│ │ ← 移動範囲を直接左クリックすると、その位置にスライダがダイ ↓│ │ レクト移動します。 ─├─┤ │▲│ ├─┤ │▼│ └─┘ ↑ スクロールボックス それぞれクリックすると、押している間その方向にスクロールします。 スライダは、スクロール可能範囲によって長さがかわります。これを見ると大体の テキストや領域の長さがわかります。 スクロールバーの1番使いやすい動かし方は、直接つかんで左ドラッグ、です。Mac 系のスクロールバーと違い、ボタンを離してから動くのではなくて移動に合せて直接 スクロールがついてきます。そんなの知らなかった、って方はぜひお試し下さい。 縦横のバーがついている場合、その合流地点の角はリサイズスイッチになっている ことがほとんどです。Command.win 等、空白になっていてもちゃんとリサイズ可能で すので。 ┌┐ ││ ││ ├┤ ├┤ ──┬┬┼┤ ──┴┴┴┘←ここ ・ウィンドウマネージャーでの常識 通常このようなウィンドウ操作は、ウィンドウマネージャーによって拡張されてい る場合がほとんどです。細かな点に関してはそれぞれのウィンドウマネージャーによっ て異なりますが、ほぼ Ko-Window の標準として共通化されている操作もあります。 ◆どこでもウィンドウポップ [SHIFT]+左クリック マウスカーソルのある位置のウィンドウを1番上にします。タイトルバーが 他のウィンドウにすっかり隠れていてウィンドウの端しか見えていない場合 でも、そこにカーソルを置いて [SHIFT]+左クリックすれば1番上に持って くることができます。 ◆どこでもウィンドウ移動 [SHIFT]+左ドラッグ ポップ同様、マウスカーソルのある位置のウィンドウを動かします。タイト ルバーでなくても構わないので非常に便利です。 ◆どこでもウィンドウリサイズ [SHIFT]+右ドラッグ 左ドラッグではウィンドウ移動でしたが、右ドラッグの場合はリサイズがで きます。 ◆ワンタッチペースト [CTRL]+左クリック ClipBoard の内容を、そのウィンドウに転送します。 なおこれらの設定は、自由度の高いウィンドウマネージャーの場合は自由にカスタ マイズすることができます。(SPopUp.win 等) そのため、設定によっては上記の操作 と違う設定になっている場合もあるので注意して下さい。 その他にもウィンドウマネージャーによって、それぞれ特徴ある機能が用意されて いるのでぜひぜひいろいろと試してみて下さい。 ●クリップ&ペーストとウィンドウ間データ通信 テキストのクリップ&ペースト機能は、ほとんどのウィンドウマネージャー、アプ リケーション、が対応しています。また、クリップボードを介さずに、直接他のウィ ンドウへ文字列を転送できるものも多数存在します。 ・クリップ 任意のテキストを切り出して、ClipBoard と呼ばれる領域にコピーします。 Command.win や各種スクリーンエデイタ、または tview.win 等、テキスト タイプ(特にスクロールバーのついているもの)ではほとんどがこのクリップ が可能です。また kf.win のように、一見 clip には対応してないように見 えても、実はちゃんと [OPT.1] を押しながらドラッグで clip できるよう になっているアプリケーションもあります。 ・ペースト ClipBoard の内容を取り出して、ウィンドウに転送します。ペーストされた 内容は、たいていキー入力と同じに扱われます。そのため、バックログから 切り出してエディタに転送したり、tview で呼んでいるドキュメントの例文 を、そのまま Command.win で実行、なんてことができます。 ・クリップボード瞬間Q&A <<クリップボードの内容を確認するには?>> Command.win で「clip [CR]」と実行します。現在のクリップボードの内容 を表示します。 <<画像データのクリップはできないの?>> SClip.win というプログラムを使うと、ウィンドウ上の任意のエリアを直接 切り出して、Sheet 画像として転送することができるようになります。 ・ウィンドウ間の直接転送 kf から直接ファイル名をドラッグして Command.win まで運ぶと、そのパス 名が Command.win へキー入力として送られます。このように、Clip&Paste を介さずに直接文字列を転送することもできます。例えば sreport.win の 時刻表示や残りメモリ容量も、sreport.win の右側からドラッグすることで 転送可能です。 ウィンドウ間で通信でダイレクト転送している場合は、つかんでいる間マウ スカーソルの形が変化します。(手の形になる) ウィンドウ間で転送できるのは文字列とは限らず、ほとんどの場合、Sheet データや画像データも他のウィンドウへ持って行くことができるようになっ ています。 ウィンドウ間通信は、プログラムから制御したり、スクリプトから送ったり、 またはデータ転送だけでなく、操作コマンドを与えるなど実にいろいろな応 用がききます。このように、柔軟でかつ強力なウィンドウ間の操作ができる のが Ko-Window の大きな特徴の1つであり、かつ便利なところです。 今 CutEdit.win で描いたばかりの絵が、さっとマウスカーソルを動かすだけ でいきなりウィンドウ背景になったり、いろいろなわざをマスターして友達 に自慢しましょう。 ● Ko-Window の "Ko" って何の意味? Ko-Window の作者は皆さんご存知のとおり小林忠司さんといいます。つまり "Ko" というのは小林忠司さんのいわばハンドル名のようなもので、"Ko-Window" というの は Ko さんの作った Window という意味だそうです。 ● Ko-Window ってマルチタスクなんでしょうか? Ko-Window の各アプリケーションは、最初から全部イベントドリブンによるマルチ タスク動作をします。例えばエディタで文章を書いていても時計は常に動いてますし、 また同時に shot.win を起動してゲームを動かすこともできます。これは Human の BG 機能とは無関係で、Ko-Window 上であれば常に並列動作します。 ですが Command.win 上で Human のコマンド、例えばプログラムのコンパイル等を 行うと、そのプログラムが終了するまで一時的に時計など他のプロセスも停止したよ うに見えます。これはなぜかというと、その Human のコマンドが、イベントドリブ ンによるマルチタスクをするようプログラムが書かれていないからです。 そこで、このように Ko-Window の並列動作を考慮して書かれていないプログラム でも、他のプログラム実行が止まらないようにするためには Human の BG 機能を使 うことができます。こちらはイベントドリブンではなくて TSS によるマルチタスク になります。 -- 1995 8/ 6 1995 11/14 8dotフォント追加 小笠原博之 oga@art.udn.ne.jp