[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2188] Re: MOSkey



  こんにちは、川合です。


Myurika さんは 2001/09/19 21:17:45 の「[OSASK 2186] Re: MOSkey」
で書きました:

>  遅くなりましたが、 http://www1.odn.ne.jp/~aaf27410/MOSkey01.lzh に上げ
>ておきました。

  ありがとうございます。早速使ってみました。

  もちろん、アプリを作っていただけてとてもうれしかったのですが、
さらに僕を喜ばせたのは、ドキュメント内の、

>同様のアプリをTownsOS上でも書いていて、それと比較してもはるかに
>少ないステップで書けてしまったのには少なからず驚きました。

の一言だったりします(笑)。まあ、和音のサポートやGUIの有無が大
きな差だったんでしょうけど。

  気になった点をいくつか。

  まず、ウィンドウタイトルがウィンドウサイズに対して長すぎます。
これは規定によって許される範囲を超えているので、できれば、ウィン
ドウサイズを大きくするか、タイトルを短くしてください。

  規定は、introaのhelloc4.txtの64〜67行目にあるように、

    タイトルのx_size * 8 + 80 <= ウィンドウのx_size

となっています。

  それと、これは意図的なものでしたら一向に構わないのですが、オク
ターブが全体的に1つだけ高くなっているような気がします。O4Aが440H
zではなく、880Hzに設定されているように思います。

>  しかし、TownsOS上でも設定次第でシフトキーなどのメイク/ブレイクは検出で
>きましたから、エミュレータを作る頃には必要になるかもしれませんね。

  はい。機能を実装するのは簡単です。今まではただの手抜きだったの
で、急いで付けることにします(笑)。

    0xb4 ... Shift
    0xb5 ... Ctrl
    0xb6 ... Alt

ということになっています(adarrel6, monza6で対応します)。

  なお、Shiftの左右を区別したいということはきっとあるでしょう。
上記のコードでは全て左側のキーにしか反応しません。右側のコードに
反応させたい場合は、第二拡張コード指定モードを選択します。これは
introcのkeytstc0では説明を省略していますが、要するに、

#define	DEFSIG_EXT2        0x00002000

を定義して、DEFSIG_EXT1の代わりに使うだけです。拡張モードは第三
まであります。

  なお、テンキーの数字のmake/breakを拾いたい場合も第二拡張コード
指定モードで'1'などを指定することで既に可能になっています。

  左右のShiftの話に戻りますが、右Shiftのキーがあるのは、AT互換機
だけです。「なにをいうか、うちのTOWNSにはちゃんとShiftが2つある
ぞ」とお思いになるでしょうが、そのどちらのキーを押しても同じキー
コードを本体側に送るので区別できないのです。どちらを押しても左Sh
iftを押したことになります。・・・TOWNSのキーボードでAT互換機に負
けているところがあるとすれば、この部分だけでしょうね。

  なお、この3種のシフトキーは普通のキーではないので、make/break/
remakeを指定できる拡張モードでのみ使用可能です。makeとremakeに自
動的に対応してくれる基本モードではサポートしません。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/