summaryrefslogtreecommitdiffstats
path: root/gui/hardwarekeyboard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/hardwarekeyboard.cpp')
-rw-r--r--gui/hardwarekeyboard.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/gui/hardwarekeyboard.cpp b/gui/hardwarekeyboard.cpp
new file mode 100644
index 000000000..d8cdfd45a
--- /dev/null
+++ b/gui/hardwarekeyboard.cpp
@@ -0,0 +1,83 @@
+// hardwarekeyboard.cpp - HardwareKeyboard object
+// Shell file used for most devices. A custom hardwarekeyboard.cpp is needed for devices with a hardware keyboard.
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/reboot.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <time.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+#include <string>
+
+extern "C" {
+#include "../twcommon.h"
+#include "../minuitwrp/minui.h"
+}
+
+#include "rapidxml.hpp"
+#include "objects.hpp"
+
+HardwareKeyboard::HardwareKeyboard(void)
+{
+
+}
+
+HardwareKeyboard::~HardwareKeyboard()
+{
+
+}
+
+int HardwareKeyboard::KeyDown(int key_code)
+{
+ mPressedKeys.insert(key_code);
+ PageManager::NotifyKey(key_code, true);
+#ifdef _EVENT_LOGGING
+ LOGERR("HardwareKeyboard::KeyDown %i\n", key_code);
+#endif
+ return 0; // 0 = no key repeat anything else turns on key repeat
+}
+
+int HardwareKeyboard::KeyUp(int key_code)
+{
+ std::set<int>::iterator itr = mPressedKeys.find(key_code);
+ if(itr != mPressedKeys.end())
+ {
+ mPressedKeys.erase(itr);
+ PageManager::NotifyKey(key_code, false);
+ }
+#ifdef _EVENT_LOGGING
+ LOGERR("HardwareKeyboard::KeyUp %i\n", key_code);
+#endif
+ return 0;
+}
+
+int HardwareKeyboard::KeyRepeat(void)
+{
+ /*
+ * Uncomment when key repeats are sent somewhere.
+ * std::set<int>::iterator itr = mPressedKeys.find(key_code);
+ * if(itr != mPressedKeys.end())
+ * {
+ * Send repeats somewhere, don't remove itr from mPressedKeys
+ * }
+ */
+
+#ifdef _EVENT_LOGGING
+ LOGERR("HardwareKeyboard::KeyRepeat\n");
+#endif
+ return 0;
+}
+
+void HardwareKeyboard::ConsumeKeyRelease(int key)
+{
+ mPressedKeys.erase(key);
+}