mirror of
https://github.com/TomHarte/CLK.git
synced 2025-01-14 13:33:42 +00:00
Introduces virtual left and up keys for the Vic-20.
Thereby allowing all cursor keys to be mapped.
This commit is contained in:
parent
575d0da4d1
commit
535634daca
@ -24,7 +24,7 @@ uint16_t KeyboardMapper::mapped_key_for_key(Inputs::Keyboard::Key key) {
|
|||||||
BIND(Z, KeyZ); BIND(X, KeyX); BIND(C, KeyC); BIND(V, KeyV);
|
BIND(Z, KeyZ); BIND(X, KeyX); BIND(C, KeyC); BIND(V, KeyV);
|
||||||
BIND(B, KeyB); BIND(N, KeyN); BIND(M, KeyM);
|
BIND(B, KeyB); BIND(N, KeyN); BIND(M, KeyM);
|
||||||
|
|
||||||
BIND(BackTick, KeyLeft);
|
BIND(BackTick, KeyLeftArrow);
|
||||||
BIND(Hyphen, KeyPlus);
|
BIND(Hyphen, KeyPlus);
|
||||||
BIND(Equals, KeyDash);
|
BIND(Equals, KeyDash);
|
||||||
BIND(F11, KeyGBP);
|
BIND(F11, KeyGBP);
|
||||||
@ -35,8 +35,8 @@ uint16_t KeyboardMapper::mapped_key_for_key(Inputs::Keyboard::Key key) {
|
|||||||
BIND(CloseSquareBracket, KeyAsterisk);
|
BIND(CloseSquareBracket, KeyAsterisk);
|
||||||
|
|
||||||
BIND(Backslash, KeyRestore);
|
BIND(Backslash, KeyRestore);
|
||||||
BIND(Hash, KeyUp);
|
BIND(Hash, KeyUpArrow);
|
||||||
BIND(F10, KeyUp);
|
BIND(F10, KeyUpArrow);
|
||||||
|
|
||||||
BIND(Semicolon, KeyColon);
|
BIND(Semicolon, KeyColon);
|
||||||
BIND(Quote, KeySemicolon);
|
BIND(Quote, KeySemicolon);
|
||||||
@ -56,6 +56,8 @@ uint16_t KeyboardMapper::mapped_key_for_key(Inputs::Keyboard::Key key) {
|
|||||||
|
|
||||||
BIND(Right, KeyRight);
|
BIND(Right, KeyRight);
|
||||||
BIND(Down, KeyDown);
|
BIND(Down, KeyDown);
|
||||||
|
BIND(Left, KeyLeft);
|
||||||
|
BIND(Up, KeyUp);
|
||||||
|
|
||||||
BIND(Enter, KeyReturn);
|
BIND(Enter, KeyReturn);
|
||||||
BIND(Space, KeySpace);
|
BIND(Space, KeySpace);
|
||||||
|
@ -20,7 +20,7 @@ enum Key: uint16_t {
|
|||||||
Key2 = key(7, 0x01), Key4 = key(7, 0x02), Key6 = key(7, 0x04), Key8 = key(7, 0x08),
|
Key2 = key(7, 0x01), Key4 = key(7, 0x02), Key6 = key(7, 0x04), Key8 = key(7, 0x08),
|
||||||
Key0 = key(7, 0x10), KeyDash = key(7, 0x20), KeyHome = key(7, 0x40), KeyF7 = key(7, 0x80),
|
Key0 = key(7, 0x10), KeyDash = key(7, 0x20), KeyHome = key(7, 0x40), KeyF7 = key(7, 0x80),
|
||||||
KeyQ = key(6, 0x01), KeyE = key(6, 0x02), KeyT = key(6, 0x04), KeyU = key(6, 0x08),
|
KeyQ = key(6, 0x01), KeyE = key(6, 0x02), KeyT = key(6, 0x04), KeyU = key(6, 0x08),
|
||||||
KeyO = key(6, 0x10), KeyAt = key(6, 0x20), KeyUp = key(6, 0x40), KeyF5 = key(6, 0x80),
|
KeyO = key(6, 0x10), KeyAt = key(6, 0x20), KeyUpArrow = key(6, 0x40), KeyF5 = key(6, 0x80),
|
||||||
KeyCBM = key(5, 0x01), KeyS = key(5, 0x02), KeyF = key(5, 0x04), KeyH = key(5, 0x08),
|
KeyCBM = key(5, 0x01), KeyS = key(5, 0x02), KeyF = key(5, 0x04), KeyH = key(5, 0x08),
|
||||||
KeyK = key(5, 0x10), KeyColon = key(5, 0x20), KeyEquals = key(5, 0x40), KeyF3 = key(5, 0x80),
|
KeyK = key(5, 0x10), KeyColon = key(5, 0x20), KeyEquals = key(5, 0x40), KeyF3 = key(5, 0x80),
|
||||||
KeySpace = key(4, 0x01), KeyZ = key(4, 0x02), KeyC = key(4, 0x04), KeyB = key(4, 0x08),
|
KeySpace = key(4, 0x01), KeyZ = key(4, 0x02), KeyC = key(4, 0x04), KeyB = key(4, 0x08),
|
||||||
@ -29,12 +29,17 @@ enum Key: uint16_t {
|
|||||||
KeyN = key(3, 0x10), KeyComma = key(3, 0x20), KeySlash = key(3, 0x40), KeyDown = key(3, 0x80),
|
KeyN = key(3, 0x10), KeyComma = key(3, 0x20), KeySlash = key(3, 0x40), KeyDown = key(3, 0x80),
|
||||||
KeyControl = key(2, 0x01), KeyA = key(2, 0x02), KeyD = key(2, 0x04), KeyG = key(2, 0x08),
|
KeyControl = key(2, 0x01), KeyA = key(2, 0x02), KeyD = key(2, 0x04), KeyG = key(2, 0x08),
|
||||||
KeyJ = key(2, 0x10), KeyL = key(2, 0x20), KeySemicolon = key(2, 0x40), KeyRight = key(2, 0x80),
|
KeyJ = key(2, 0x10), KeyL = key(2, 0x20), KeySemicolon = key(2, 0x40), KeyRight = key(2, 0x80),
|
||||||
KeyLeft = key(1, 0x01), KeyW = key(1, 0x02), KeyR = key(1, 0x04), KeyY = key(1, 0x08),
|
KeyLeftArrow= key(1, 0x01), KeyW = key(1, 0x02), KeyR = key(1, 0x04), KeyY = key(1, 0x08),
|
||||||
KeyI = key(1, 0x10), KeyP = key(1, 0x20), KeyAsterisk = key(1, 0x40), KeyReturn = key(1, 0x80),
|
KeyI = key(1, 0x10), KeyP = key(1, 0x20), KeyAsterisk = key(1, 0x40), KeyReturn = key(1, 0x80),
|
||||||
Key1 = key(0, 0x01), Key3 = key(0, 0x02), Key5 = key(0, 0x04), Key7 = key(0, 0x08),
|
Key1 = key(0, 0x01), Key3 = key(0, 0x02), Key5 = key(0, 0x04), Key7 = key(0, 0x08),
|
||||||
Key9 = key(0, 0x10), KeyPlus = key(0, 0x20), KeyGBP = key(0, 0x40), KeyDelete = key(0, 0x80),
|
Key9 = key(0, 0x10), KeyPlus = key(0, 0x20), KeyGBP = key(0, 0x40), KeyDelete = key(0, 0x80),
|
||||||
|
|
||||||
KeyRestore = 0xfffd
|
// Virtual keys.
|
||||||
|
KeyUp = 0xfff0,
|
||||||
|
KeyLeft = 0xfff1,
|
||||||
|
|
||||||
|
// Physical keys not within the usual matrix.
|
||||||
|
KeyRestore = 0xfffd,
|
||||||
#undef key
|
#undef key
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -479,10 +479,23 @@ class ConcreteMachine:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void set_key_state(uint16_t key, bool is_pressed) final {
|
void set_key_state(uint16_t key, bool is_pressed) final {
|
||||||
if(key != KeyRestore)
|
if(key < 0xfff0) {
|
||||||
keyboard_via_port_handler_->set_key_state(key, is_pressed);
|
keyboard_via_port_handler_->set_key_state(key, is_pressed);
|
||||||
else
|
} else {
|
||||||
|
switch(key) {
|
||||||
|
case KeyRestore:
|
||||||
user_port_via_.set_control_line_input(MOS::MOS6522::Port::A, MOS::MOS6522::Line::One, !is_pressed);
|
user_port_via_.set_control_line_input(MOS::MOS6522::Port::A, MOS::MOS6522::Line::One, !is_pressed);
|
||||||
|
break;
|
||||||
|
case KeyUp:
|
||||||
|
keyboard_via_port_handler_->set_key_state(KeyLShift, is_pressed);
|
||||||
|
keyboard_via_port_handler_->set_key_state(KeyDown, is_pressed);
|
||||||
|
break;
|
||||||
|
case KeyLeft:
|
||||||
|
keyboard_via_port_handler_->set_key_state(KeyLShift, is_pressed);
|
||||||
|
keyboard_via_port_handler_->set_key_state(KeyRight, is_pressed);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void clear_all_keys() final {
|
void clear_all_keys() final {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user