[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 2203] Re: MOSkey
こんばんは、川合です。
Myurika さんは 2001/09/22 20:01:24 の「[OSASK 2202] Re: MOSkey」
で書きました:
> 普通に考えると、メイク/ブレイクが拾いたいことの方が少ないので、仕方な
>いのかな、と思ってたんです。
いやいや、シューティングゲームを作る場合(たとえばinvader2)、
キーのメイクブレイクが拾えるかどうかは死活問題です。まあ、ジョイ
パッドへ逃げるという手はありますが。
> でも、OSASKでこうも簡単に拾えてしまうとなんというか…。
まあ考えようによっては、普通のキー入力をするにしてもいちいちシ
グナルとの対応を宣言しなければいけないわけで、メイク・ブレイクが
拾いやすい代わりに、普通の入力の設定が少し面倒かもしれません。
> 修正しておきました。ただ直すのでは面白くないので、ちょっと機能を上げて
>おきました。 http://www1.odn.ne.jp/~aaf27410/MOSkey03.lzh にあります。
早速ダウンロードしました。
ソースを見て思ったのですが、シグナル定義が長くなってきたので、
static struct {
int len, keyid, signal;
} table_defsig[] = {
{ 1, KEY_LEFT | MAKEEVENT, CURSOR_LEFT }, // カーソルキーのメイク
{ 0, ' ' | MAKEEVENT, PORTAMENTSIGNAL }, // スペースキーのメイク
{ 0, KEY_ALT | MAKEEVENT, HOLDONSIGNAL }, // ALTキーのメイク
{ 0, KEY_ALT | BREAKEVENT, HOLDOFFSIGNAL }, // ALTキーのブレイク
{ 79, '0' | MAKEEVENT, MAKESIGNAL }, // 文字キーのメイク
{ 0, KEY_ESCAPE | MAKEEVENT, MAKESIGNAL + 80 }, // Escapeキーのメイク
{ 2, KEY_ENTER | MAKEEVENT, MAKESIGNAL + 81 }, // Enter,Bs,Tabキーのメイク
{ 1, KEY_SHIFT | MAKEEVENT, MAKESIGNAL + 84 }, // Shift,Controlキーのメイク
{ 79, '0' | BREAKEVENT, BREAKSIGNAL }, // 文字キーのブレイク
{ 0, KEY_ESCAPE | BREAKEVENT, BREAKSIGNAL + 80 }, // Escapeキーのブレイク
{ 2, KEY_ENTER | BREAKEVENT, BREAKSIGNAL + 81 }, // Enter,Bs,Tabキーのブレイク
{ 1, KEY_SHIFT | BREAKEVENT, BREAKSIGNAL + 84 } // Shift,Controlキーのメイク
};
for (int i = 0; i < (sizeof table_defsig / sizeof *table_defsig); i++) {
lib_definesignal1p0(table_defsig[i].len, 0x100,
table_defsig[i].keyid, window, table_defsig[i].signal);
}
なんていうのはいかがでしょう。
> そういえば、TOWNSの昔のキーボードにはALTキーがないんですよね。そう思っ
>てキーボードを眺めていたら、全部のキーが検出したくなってきました(笑)。
まず昔のキーボードにはALTキーがないという問題ですが、それは確
かに事実なので、上記宣言に、
{ 0, KEY_INSERT | MAKEEVENT, HOLDONSIGNAL }, // Insertキーのメイク
{ 0, KEY_INSERT | BREAKEVENT, HOLDOFFSIGNAL }, // Insertキーのブレイク
を追加しておくというのはどうでしょう?こうすれば、AltでもInsert
でも同じシグナルが発生するようになります。まあ、こういう配慮を
しなくても将来のOSASKではユーザーがアプリのキーバインドをオーバ
ーライドして設定できるようになるので、心配はいらないのかもしれま
せんが(笑)。
全部のキーを検出したいということでしたら、対応してもいいですよ
。winman0.cの関数sgg_wm0_definesignal3sub()内のテーブルをこそこ
そといじるだけなんですから(笑)。
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/