Allegro.cc - Online Community

Allegro.cc Forums » Programming Questions » How to properly handle the keyboard with allegro?

This thread is locked; no one can reply to it. rss feed Print
How to properly handle the keyboard with allegro?
BrknPhoenix
Member #7,304
June 2006

edit: It has been fixed :D

What I do now gets by, but it clearly doesn't handle like a regular keyboard. It misses key presses every so often, and it's highly annoying. I downloaded an allegro game off allegro.cc last night, 3579 or something like that, and it had similar issues where it couldn't keep up with a fast typing user and would mis-read keys.

All I'm looking for is to be able to properly handle keyboard input as it regularly is in a windows environment. Can anyone offer some direction?

A J
Member #3,025
December 2002
avatar

Quote:

How to properly handle the keyboard with allegro

the keyboard is a magic device with mysteries powers... you should handle it with great care.. like you handle your woman... oh' i forgot, your an allegro game hacker, you probably dont know about that :P

___________________________
The more you talk, the more AJ is right. - ML

gnolam
Member #2,030
March 2002
avatar

What are you doing now in your input code?

--
Move to the Democratic People's Republic of Vivendi Universal (formerly known as Sweden) - officially democracy- and privacy-free since 2008-06-18!

BrknPhoenix
Member #7,304
June 2006

Quote:

What are you doing now in your input code?

Well, I haven't gotten into the meat of it yet. It's just debug stuff. Here is the call to the function that checks the keys:

    if (keyboard_needs_poll())
    {
        poll_keyboard();
    }
       
    if (DEBUG == true)
    {
        Debug->CheckKeys();    
    }

and here's the CheckKeys function that is just kinda mangled together. It kinda works but notsomuch, hehe

1void objDebug::CheckKeys()
2{
3 static bool F1_p = false;
4 static bool F2_p = false;
5
6 if (key[KEY_ESC])
7 {
8 GameManager->SetQuit(true);
9 }
10
11 if (key[KEY_F1] && !(F1_p))
12 {
13 if (key_shifts & KB_CTRL_FLAG)
14 {
15 if (mouse_info == true)
16 {
17 mouse_info = false;
18 }
19 else
20 {
21 mouse_info = true;
22 }
23 F1_p = true;
24 }
25 }
26 else if (!key[KEY_F1])
27 {
28 F1_p = false;
29 }
30
31 if (key[KEY_F2] && !(F2_p))
32 {
33 if (key_shifts & KB_CTRL_FLAG)
34 {
35 if (timer_info == true)
36 {
37 timer_info = false;
38 }
39 else
40 {
41 timer_info = true;
42 }
43 F2_p = true;
44 }
45 }
46 else
47 {
48 F2_p = false;
49 }
50}

CGamesPlay
Member #2,559
July 2002
avatar

Check this out:

Quote:

            if (timer_info == true)
            {
                timer_info = false;
            }
            else
            {
                timer_info = true;
            }

timer_info = !timer_info;Both snippets do the same. You decide ;) Same applies for the mouse_info variable.

--
Tomasu: Every time you read this: hugging!

Ryan Patterson - <http://cgamesplay.com/>

BrknPhoenix
Member #7,304
June 2006

hehe so they do :p thanks for the shortcut

Go to: