Skip to content

Commit a7ba141

Browse files
committed
use 2bits for eeprom handedness
1 parent 2f9175f commit a7ba141

File tree

4 files changed

+29
-13
lines changed

4 files changed

+29
-13
lines changed

keyboards/vitamins_included/rev2/rev2.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,9 @@ bool is_keyboard_left(void) {
88
gpio_set_pin_input(SPLIT_HAND_PIN);
99
return x;
1010
#endif
11-
return eeprom_read_byte(EECONFIG_HANDEDNESS);
11+
if (eeconfig_read_handedness() == EEHANDS_UNSET){
12+
return is_keyboard_master();
13+
} else {
14+
return eeconfig_read_handedness() == EEHANDS_LEFT ? true : false;
15+
}
1216
}

quantum/eeconfig.c

+6-4
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ void eeconfig_init_quantum(void) {
6363
eeprom_update_byte(EECONFIG_STENOMODE, 0);
6464
eeprom_write_qword(EECONFIG_RGB_MATRIX, 0);
6565
eeprom_update_dword(EECONFIG_HAPTIC, 0);
66+
eeprom_update_byte(EECONFIG_HANDEDNESS, EEHANDS_UNSET);
67+
6668
#if defined(HAPTIC_ENABLE)
6769
haptic_reset();
6870
#endif
@@ -254,15 +256,15 @@ void eeconfig_update_haptic(uint32_t val) {
254256
*
255257
* FIXME: needs doc
256258
*/
257-
bool eeconfig_read_handedness(void) {
258-
return !!eeprom_read_byte(EECONFIG_HANDEDNESS);
259+
eehands_t eeconfig_read_handedness(void) {
260+
return eeprom_read_byte(EECONFIG_HANDEDNESS);
259261
}
260262
/** \brief eeconfig update split handedness
261263
*
262264
* FIXME: needs doc
263265
*/
264-
void eeconfig_update_handedness(bool val) {
265-
eeprom_update_byte(EECONFIG_HANDEDNESS, !!val);
266+
void eeconfig_update_handedness(eehands_t val) {
267+
eeprom_update_byte(EECONFIG_HANDEDNESS, val);
266268
}
267269

268270
#if (EECONFIG_KB_DATA_SIZE) > 0

quantum/eeconfig.h

+8-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
2828
#endif
2929
#define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF
3030

31+
typedef enum {
32+
EEHANDS_LEFT,
33+
EEHANDS_RIGHT,
34+
EEHANDS_UNSET,
35+
} eehands_t;
36+
3137
// Dummy struct only used to calculate offsets
3238
typedef struct PACKED {
3339
uint16_t magic;
@@ -148,8 +154,8 @@ uint32_t eeconfig_read_haptic(void);
148154
void eeconfig_update_haptic(uint32_t val);
149155
#endif
150156

151-
bool eeconfig_read_handedness(void);
152-
void eeconfig_update_handedness(bool val);
157+
eehands_t eeconfig_read_handedness(void);
158+
void eeconfig_update_handedness(eehands_t val);
153159

154160
#if (EECONFIG_KB_DATA_SIZE) > 0
155161
bool eeconfig_is_kb_datablock_valid(void);

quantum/split_common/split_util.c

+10-6
Original file line numberDiff line numberDiff line change
@@ -157,17 +157,21 @@ __attribute__((weak)) bool is_keyboard_left_impl(void) {
157157
# if defined(INIT_EE_HANDS_LEFT) || defined(INIT_EE_HANDS_RIGHT)
158158
# if defined(INIT_EE_HANDS_LEFT)
159159
# pragma message "Forcing EEPROM setting for left hand"
160-
const bool should_be_left = true;
160+
const eehands_t eehands_forced = EEHANDS_LEFT;
161161
# else
162162
# pragma message "Forcing EEPROM setting for right hand"
163-
const bool should_be_left = false;
163+
const eehands_t eehands_forced = EEHANDS_RIGHT;
164164
# endif
165-
bool is_left = eeconfig_read_handedness();
166-
if (is_left != should_be_left) {
167-
eeconfig_update_handedness(should_be_left);
165+
if (eehands_forced != eeconfig_read_handedness()) {
166+
eeconfig_update_handedness(eehands_forced);
168167
}
169168
# endif // defined(INIT_EE_HANDS_LEFT) || defined(INIT_EE_HANDS_RIGHT)
170-
return eeconfig_read_handedness();
169+
170+
if (eeconfig_read_handedness() == EEHANDS_UNSET){
171+
return is_keyboard_master();
172+
} else {
173+
return eeconfig_read_handedness() == EEHANDS_LEFT ? true : false;
174+
}
171175
#endif
172176
}
173177

0 commit comments

Comments
 (0)