1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-29 16:29:08 +00:00

Fixes keypad keys.

This commit is contained in:
Thomas Harte 2019-07-08 16:38:06 -04:00
parent 28de629c08
commit 793c2df7ee

View File

@ -144,6 +144,12 @@ class Keyboard {
void enqueue_key_state(uint16_t key, bool is_pressed) { void enqueue_key_state(uint16_t key, bool is_pressed) {
// Front insert; messages will be pop_back'd. // Front insert; messages will be pop_back'd.
std::lock_guard<decltype(key_queue_mutex_)> lock(key_queue_mutex_); std::lock_guard<decltype(key_queue_mutex_)> lock(key_queue_mutex_);
// Keys on the keypad are preceded by a $79 keycode; in the internal naming scheme
// they are indicated by having bit 8 set. So add the $79 prefix if required.
if(key & 0x100) {
key_queue_.insert(key_queue_.begin(), 0x79);
}
key_queue_.insert(key_queue_.begin(), (is_pressed ? 0x00 : 0x80) | uint8_t(key)); key_queue_.insert(key_queue_.begin(), (is_pressed ? 0x00 : 0x80) | uint8_t(key));
} }
@ -263,10 +269,10 @@ class KeyboardMapper: public KeyboardMachine::MappedMachine::KeyboardMapper {
case Key::ForwardSlash: return 0x59; case Key::ForwardSlash: return 0x59;
case Key::RightShift: return 0x71; case Key::RightShift: return 0x71;
case Key::Left: return 0x0d; case Key::Left: return 0x100 | 0x0d;
case Key::Right: return 0x05; case Key::Right: return 0x100 | 0x05;
case Key::Up: return 0x1b; case Key::Up: return 0x100 | 0x1b;
case Key::Down: return 0x11; case Key::Down: return 0x100 | 0x11;
case Key::LeftOption: case Key::LeftOption:
case Key::RightOption: return 0x75; case Key::RightOption: return 0x75;