[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchTech 00218] Re: キー入力
- Subject: [WitchTech 00218] Re: キー入力
- From: "c.mos" <c.mos@zob.ne.jp>
- Date: Fri, 04 Aug 2000 13:07:03 +0900
c.mos です。
キー入力の質問が相次いでいるので、内部の流れをC言語で示しておきます。
(いいのか? (^^;)
---------------------------------------------------------------
static WORD key_status;
static WORD key_status_xor;
WORD key_press_check()
{
WORD key = get_keyport();
key_status_xor = key ^ key_status;
return key_status = key;
}
WORD key_hit_check()
{
WORD key = key_press_check();
if(key &= key_status_xor) {
init_key_repeat();
}
return key;
}
WORD key_wait()
{
WORD key = key_hit_check();
if(key == 0) {
while((key = key_repeat()) == 0);
}
return key;
}
WORD key_hit_check_with_repeat()
{
WORD key = key_hit_check();
if(key == 0) {
key = key_repeat();
}
return key;
}
---------------------------------------------------------------
これを見ておわかりのように、key_press_check()を呼ぶと
内部のkey statusが更新されてしまうため、続けてkey_hit_check()を
呼んでも、押されたキーは取得できません。
pressとhitを両方得たい場合は、key_press_check()のみ呼んで
自前で処理するしかないと思われます。
しかし、こうして見ると、key_press_check()は、ポートを読むだけにした方が、
使い易かった気がするなぁ。(^^;;
c.mos
ML Archives