Olivier Smeesters / Mbed 2 deprecated KeyboardTest

Dependencies:   mbed KeyboardManager

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "kbd_mgr/KeyboardManager.h"
00002 
00003 #include <iostream>
00004 
00005 using namespace std;
00006 using namespace kbd_mgr;
00007 
00008 void handleKeyPress(const KeyEvent &keypress) {
00009     char ch = (keypress.keyChar >= 32 && keypress.keyChar < 127 ? keypress.keyChar : '?');
00010 
00011     std::string eventName;
00012     switch (keypress.event) {
00013         case KeyEvent::KeyDown:
00014             eventName = "Down";
00015             break;
00016         case KeyEvent::KeyUp:
00017             eventName = "Up";
00018             break;
00019         case KeyEvent::KeyPress:
00020             eventName = "Press";
00021             break;
00022         case KeyEvent::RepeatedKeyPress:
00023             eventName = "RepeatedPress";
00024             break;
00025         case KeyEvent::LongKeyPress:
00026             eventName = "LongPress";
00027             break;
00028         default:
00029             eventName = "???";
00030             break;
00031     }
00032 
00033     cout << "Key state change: " << keypress.keyCode << " '" << ch << "' " << eventName << "\r" << endl;
00034 }
00035 
00036 int main() {
00037     cout << "\n\r\nKeyboardTest " __DATE__ "-" __TIME__ "\r" << endl;
00038 
00039     PinName outPinsArray[] = { p8, p7, p6, p5 };
00040     KeyboardMonitor::OutPinsSet outPins(&outPinsArray[0], &outPinsArray[4]);
00041 
00042     KeyMap keyMap("123A456B789C*0#D");
00043     keyMap(KeyEvent::LongKeyPress, 12, '@')(KeyEvent::LongKeyPress, 14, '$');
00044     
00045     KeyboardMonitor kbdMonitor(Port0, 4, 15, outPins);
00046     KeyboardStateChangeMonitor changeMonitor;
00047     SingleKeyPressMonitor keyPressMonitor;
00048     LongKeyPressMonitor longKeyPressMonitor;
00049     KeyMapper keyMapper(keyMap);
00050 
00051     longKeyPressMonitor.autoRepeat(0.500,0.250)(0,15);
00052     longKeyPressMonitor.longKeyPress(0.500)(12)(14);
00053     
00054     keyMapper.attach(handleKeyPress);
00055     longKeyPressMonitor.attach(keyMapper);
00056     keyPressMonitor.attach(longKeyPressMonitor);
00057     changeMonitor.attach(keyPressMonitor);
00058     kbdMonitor.attach(changeMonitor);
00059 
00060     kbdMonitor.start();
00061 
00062     while (1) {
00063         wait(10);
00064     }
00065 }