00001
00011 #ifndef KEYPAD_H
00012 #define KEYPAD_H
00013
00014 #include <NDS/jtypes.h>
00015
00020 enum KP_Keys {
00021 KP_KEY_A,
00022 KP_KEY_B,
00023 KP_KEY_SELECT,
00024 KP_KEY_START,
00025 KP_KEY_RIGHT,
00026 KP_KEY_LEFT,
00027 KP_KEY_UP,
00028 KP_KEY_DOWN,
00029 KP_KEY_R,
00030 KP_KEY_L,
00031 KP_NUM_KEYS,
00032 KP_LAST_KEY = KP_KEY_L,
00033 KP_FIRST_KEY = KP_KEY_A,
00034 };
00035
00048 class KeyPad {
00054 struct keyData {
00055 bool pressed;
00056 bool repeating;
00057 uint16 counter;
00058 uint16 mask;
00059 keyData();
00060 };
00061
00062 uint16 repeat_delay;
00063 uint16 repeat_rate;
00064 uint16 counter;
00065 uint16 current_keys;
00066 keyData kd[KP_NUM_KEYS];
00067 uint16 touchX;
00068 uint16 touchY;
00069 uint16 touchZ1;
00070 uint16 touchZ2;
00071 uint16 buttons;
00072 protected:
00086 bool updateKey(uint16 keys, uint16 counter, keyData& key);
00087 public:
00097 KeyPad(int repeat_delay, int repeat_rate);
00098
00112 uint16 Update(int buttons = -1, int x = -1, int y = -1,
00113 int z1 = -1, int z2 = -1);
00114
00119 uint16 GetKeys(void);
00120
00132 bool TouchPos(uint16& x, uint16& y);
00133
00151 static bool TouchPos(int buttons, int x, int y, int z1, int z2,
00152 uint16& x, uint16& y);
00153 };
00154
00155 #endif