How to properly handle the keyboard with allegro?
BrknPhoenix

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

gnolam

What are you doing now in your input code?

BrknPhoenix
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

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.

BrknPhoenix

hehe so they do :p thanks for the shortcut

Thread #586246. Printed from Allegro.cc