KeyboardTest: a test program for KeyboardManager lib
Dependencies: mbed KeyboardManager
Diff: main.cpp
- Revision:
- 4:392068d3f56d
- Parent:
- 3:c20e3d23ce5f
--- a/main.cpp Sun Jan 23 23:15:56 2011 +0000 +++ b/main.cpp Thu Feb 03 22:03:24 2011 +0000 @@ -5,25 +5,61 @@ using namespace std; using namespace kbd_mgr; -class KeyHandler : public KeyPressEventHandler { -public: - virtual void operator()(int key, bool state) { - cout << "Key state change: " << key << " " << (state ? "Down" : "Up") << "\r" << endl; +void handleKeyPress(const KeyEvent &keypress) { + char ch = (keypress.keyChar >= 32 && keypress.keyChar < 127 ? keypress.keyChar : '?'); + + std::string eventName; + switch (keypress.event) { + case KeyEvent::KeyDown: + eventName = "Down"; + break; + case KeyEvent::KeyUp: + eventName = "Up"; + break; + case KeyEvent::KeyPress: + eventName = "Press"; + break; + case KeyEvent::RepeatedKeyPress: + eventName = "RepeatedPress"; + break; + case KeyEvent::LongKeyPress: + eventName = "LongPress"; + break; + default: + eventName = "???"; + break; } -}; + + cout << "Key state change: " << keypress.keyCode << " '" << ch << "' " << eventName << "\r" << endl; +} int main() { cout << "\n\r\nKeyboardTest " __DATE__ "-" __TIME__ "\r" << endl; PinName outPinsArray[] = { p8, p7, p6, p5 }; - KeyboardManager::OutPinsSet outPins(&outPinsArray[0], &outPinsArray[4]); - KeyHandler handler; + KeyboardMonitor::OutPinsSet outPins(&outPinsArray[0], &outPinsArray[4]); + + KeyMap keyMap("123A456B789C*0#D"); + keyMap(KeyEvent::LongKeyPress, 12, '@')(KeyEvent::LongKeyPress, 14, '$'); + + KeyboardMonitor kbdMonitor(Port0, 4, 15, outPins); + KeyboardStateChangeMonitor changeMonitor; + SingleKeyPressMonitor keyPressMonitor; + LongKeyPressMonitor longKeyPressMonitor; + KeyMapper keyMapper(keyMap); - KeyboardManager kbd(Port0, 4, 15, outPins, &handler); + longKeyPressMonitor.autoRepeat(0.500,0.250)(0,15); + longKeyPressMonitor.longKeyPress(0.500)(12)(14); - kbd.start(); - - while(1) { + keyMapper.attach(handleKeyPress); + longKeyPressMonitor.attach(keyMapper); + keyPressMonitor.attach(longKeyPressMonitor); + changeMonitor.attach(keyPressMonitor); + kbdMonitor.attach(changeMonitor); + + kbdMonitor.start(); + + while (1) { wait(10); } }