| // 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); |
| } |