Layer: Make the repeating behaviour the default and only variant

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
pull/161/head
Gergely Nagy 7 years ago
parent 84768d505c
commit 96b1979ca5

@ -6,7 +6,6 @@ static uint32_t LayerState;
uint8_t Layer_::highestLayer; uint8_t Layer_::highestLayer;
Key Layer_::keyMap[ROWS][COLS]; Key Layer_::keyMap[ROWS][COLS];
Key(*Layer_::getKey)(uint8_t layer, byte row, byte col) = Layer.getKeyFromPROGMEM; Key(*Layer_::getKey)(uint8_t layer, byte row, byte col) = Layer.getKeyFromPROGMEM;
bool Layer_::repeat_first_press;
static void handleKeymapKeyswitchEvent(Key keymapEntry, uint8_t keyState) { static void handleKeymapKeyswitchEvent(Key keymapEntry, uint8_t keyState) {
if (keymapEntry.keyCode >= MOMENTARY_OFFSET) { if (keymapEntry.keyCode >= MOMENTARY_OFFSET) {
@ -29,24 +28,6 @@ static void handleKeymapKeyswitchEvent(Key keymapEntry, uint8_t keyState) {
} else { } else {
Layer.off(target); Layer.off(target);
} }
/*
* When toggling a layer off, we mask all keys still held. Masked keys
* will be ignored until released and pressed again (see
* `handleKeyswitchEvent` in key_events.cpp).
*
* We do this because when holding a momentary layer switch key, then
* pressing and holding some others, they will fire as keys on the
* momentary layer. But if we release the momentary layer switch key
* before releasing the others, they will continue firing, but from
* another layer. When typing fast, it may easily happen that we end up in
* a situation where the layer key releases first (in the same scan cycle,
* but handled first), and it will emit a key from the wrong layer. So we
* ignore held keys after releasing a layer key, until they are pressed
* again, to avoid the aforementioned issue.
*/
if (!Layer.repeat_first_press)
KeyboardHardware.maskHeldKeys();
} }
// switch keymap and stay there // switch keymap and stay there

@ -34,8 +34,6 @@ class Layer_ {
static void updateKeyCache(byte row, byte col); static void updateKeyCache(byte row, byte col);
static bool repeat_first_press;
private: private:
static uint8_t highestLayer; static uint8_t highestLayer;
static Key keyMap[ROWS][COLS]; static Key keyMap[ROWS][COLS];

Loading…
Cancel
Save