Simplify the shift tracking

We do not need to track which shift is pressed, so lets use a bool instead of a
bitfield. Makes the shift checking code smaller too!

Signed-off-by: Gergely Nagy <algernon@keyboard.io>
pull/389/head
Gergely Nagy 6 years ago
parent f74292fbee
commit 2ebf02d76a

@ -20,18 +20,15 @@
namespace kaleidoscope { namespace kaleidoscope {
uint8_t TopsyTurvy::mod_state_;
uint8_t TopsyTurvy::last_pressed_position_; uint8_t TopsyTurvy::last_pressed_position_;
bool TopsyTurvy::is_shifted_;
bool TopsyTurvy::is_active_; bool TopsyTurvy::is_active_;
EventHandlerResult TopsyTurvy::onKeyswitchEvent(Key &mapped_key, byte row, byte col, uint8_t key_state) { EventHandlerResult TopsyTurvy::onKeyswitchEvent(Key &mapped_key, byte row, byte col, uint8_t key_state) {
if (mapped_key.raw == Key_LeftShift.raw) {
bitWrite(mod_state_, 0, keyIsPressed(key_state)); if (mapped_key == Key_LeftShift ||
if (is_active_) mapped_key == Key_RightShift) {
return EventHandlerResult::EVENT_CONSUMED; is_shifted_ = keyIsPressed(key_state);
}
if (mapped_key.raw == Key_RightShift.raw) {
bitWrite(mod_state_, 1, keyIsPressed(key_state));
if (is_active_) if (is_active_)
return EventHandlerResult::EVENT_CONSUMED; return EventHandlerResult::EVENT_CONSUMED;
} }
@ -55,7 +52,7 @@ EventHandlerResult TopsyTurvy::onKeyswitchEvent(Key &mapped_key, byte row, byte
is_active_ = keyIsPressed(key_state); is_active_ = keyIsPressed(key_state);
// invert the shift state // invert the shift state
if (!mod_state_) { if (!is_shifted_) {
mapped_key.raw = mapped_key.raw - ranges::TT_FIRST; mapped_key.raw = mapped_key.raw - ranges::TT_FIRST;
mapped_key.flags |= SHIFT_HELD; mapped_key.flags |= SHIFT_HELD;
return EventHandlerResult::OK; return EventHandlerResult::OK;

@ -31,8 +31,8 @@ class TopsyTurvy: public kaleidoscope::Plugin {
EventHandlerResult onKeyswitchEvent(Key &mapped_key, byte row, byte col, uint8_t key_state); EventHandlerResult onKeyswitchEvent(Key &mapped_key, byte row, byte col, uint8_t key_state);
private: private:
static uint8_t mod_state_;
static uint8_t last_pressed_position_; static uint8_t last_pressed_position_;
static bool is_shifted_;
static bool is_active_; static bool is_active_;
}; };

Loading…
Cancel
Save