[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/