mirror of
https://github.com/TomHarte/CLK.git
synced 2025-11-02 02:16:18 +00:00
Avoid ambiguity with new DelaySlot 'key'.
This commit is contained in:
@@ -49,7 +49,7 @@ enum class BBCKey: uint16_t {
|
||||
//
|
||||
// Break; a key, but not on the keyboard matrix.
|
||||
//
|
||||
Break = 0xfffd,
|
||||
Break = 0xfffc,
|
||||
|
||||
//
|
||||
// Master only keys.
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
using namespace Electron;
|
||||
|
||||
uint16_t KeyboardMapper::mapped_key_for_key(Inputs::Keyboard::Key key) const {
|
||||
uint16_t KeyboardMapper::mapped_key_for_key(const Inputs::Keyboard::Key key) const {
|
||||
#define BIND(source, dest) case Inputs::Keyboard::Key::source: return Electron::Key::dest
|
||||
switch(key) {
|
||||
default: break;
|
||||
@@ -70,7 +70,7 @@ uint16_t KeyboardMapper::mapped_key_for_key(Inputs::Keyboard::Key key) const {
|
||||
return MachineTypes::MappedKeyboardMachine::KeyNotMapped;
|
||||
}
|
||||
|
||||
const uint16_t *CharacterMapper::sequence_for_character(char character) const {
|
||||
const uint16_t *CharacterMapper::sequence_for_character(const char character) const {
|
||||
#define KEYS(...) {__VA_ARGS__, MachineTypes::MappedKeyboardMachine::KeyEndSequence}
|
||||
#define SHIFT(...) {KeyShift, __VA_ARGS__, MachineTypes::MappedKeyboardMachine::KeyEndSequence}
|
||||
#define CTRL(...) {KeyControl, __VA_ARGS__, MachineTypes::MappedKeyboardMachine::KeyEndSequence}
|
||||
@@ -148,6 +148,6 @@ const uint16_t *CharacterMapper::sequence_for_character(char character) const {
|
||||
return table_lookup_sequence_for_character(key_sequences, character);
|
||||
}
|
||||
|
||||
bool CharacterMapper::needs_pause_after_key(uint16_t key) const {
|
||||
bool CharacterMapper::needs_pause_after_key(const uint16_t key) const {
|
||||
return !is_modifier(Key(key));
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ enum Key: uint16_t {
|
||||
// Virtual keys.
|
||||
KeyF1 = 0xfff0, KeyF2, KeyF3, KeyF4, KeyF5, KeyF6, KeyF7, KeyF8, KeyF9, KeyF0,
|
||||
|
||||
KeyBreak = 0xfffd,
|
||||
KeyBreak = 0xfffc,
|
||||
};
|
||||
|
||||
constexpr bool is_modifier(const Key key) {
|
||||
|
||||
@@ -44,7 +44,7 @@ enum Key: uint16_t {
|
||||
KeyF8 = 0xfff5,
|
||||
|
||||
// Physical keys not within the usual matrix.
|
||||
KeyRestore = 0xfffd,
|
||||
KeyRestore = 0xfffc,
|
||||
};
|
||||
|
||||
struct KeyboardMapper: public MachineTypes::MappedKeyboardMachine::KeyboardMapper {
|
||||
|
||||
@@ -137,6 +137,12 @@ public:
|
||||
*/
|
||||
static constexpr uint16_t KeyNotMapped = 0xfffe;
|
||||
|
||||
/*!
|
||||
Indicates that a key is not mapped (for the keyboard mapper) or that a
|
||||
character cannot be typed (for the character mapper).
|
||||
*/
|
||||
static constexpr uint16_t DelaySlot = 0xfffd;
|
||||
|
||||
/*!
|
||||
Allows individual machines to provide the mapping between host keys
|
||||
as per Inputs::Keyboard and their native scheme.
|
||||
|
||||
@@ -31,8 +31,8 @@ enum Key: uint16_t {
|
||||
KeyEquals = 0x0700 | 0x80, KeyReturn = 0x0700 | 0x20, KeyRightShift = 0x0700 | 0x10,
|
||||
KeyForwardSlash = 0x0700 | 0x08, Key0 = 0x0700 | 0x04, KeyL = 0x0700 | 0x02, Key8 = 0x0700 | 0x01,
|
||||
|
||||
KeyNMI = 0xfffd,
|
||||
KeyJasminReset = 0xfffc,
|
||||
KeyNMI = 0xfffc,
|
||||
KeyJasminReset = 0xfffb,
|
||||
};
|
||||
|
||||
struct KeyboardMapper: public MachineTypes::MappedKeyboardMachine::KeyboardMapper {
|
||||
|
||||
@@ -96,7 +96,7 @@ uint16_t Typer::try_type_next_character() {
|
||||
delegate_->clear_all_keys();
|
||||
if(character_mapper_.needs_pause_after_reset_all_keys() ||
|
||||
(string_pointer_ > 0 && string_[string_pointer_ - 1] == string_[string_pointer_])) {
|
||||
return 0xffff; // Arbitrarily. Anything non-zero will do.
|
||||
return MachineTypes::MappedKeyboardMachine::DelaySlot;
|
||||
}
|
||||
++phase_;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user