diff options
-rw-r--r-- | drivers/sensors/adns5050.c | 15 | ||||
-rw-r--r-- | drivers/sensors/adns5050.h | 1 | ||||
-rw-r--r-- | keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c | 9 | ||||
-rw-r--r-- | quantum/quantum.c | 5 | ||||
-rw-r--r-- | readme.md | 4 |
5 files changed, 31 insertions, 3 deletions
diff --git a/drivers/sensors/adns5050.c b/drivers/sensors/adns5050.c index 97daa8db09..f28a5dcc45 100644 --- a/drivers/sensors/adns5050.c +++ b/drivers/sensors/adns5050.c @@ -45,6 +45,8 @@ #define REG_MOTION_BURST 0x63 // clang-format on +static bool powered_down = false; + void adns5050_init(void) { // Initialize the ADNS serial pins. gpio_set_pin_output(ADNS5050_SCLK_PIN); @@ -59,6 +61,8 @@ void adns5050_init(void) { // this ensures that the adns is actuall ready after reset. wait_ms(55); + powered_down = false; + // read a burst from the adns and then discard it. // gets the adns ready for write commands // (for example, setting the dpi). @@ -163,6 +167,10 @@ report_adns5050_t adns5050_read_burst(void) { data.dx = 0; data.dy = 0; + if (powered_down) { + return data; + } + adns5050_serial_write(REG_MOTION_BURST); // We don't need a minimum tSRAD here. That's because a 4ms wait time is @@ -211,3 +219,10 @@ bool adns5050_check_signature(void) { return (pid == 0x12 && rid == 0x01 && pid2 == 0x26); } + +void adns5050_power_down(void) { + if (!powered_down) { + powered_down = true; + adns5050_write_reg(REG_MOUSE_CONTROL, 0b10); + } +} diff --git a/drivers/sensors/adns5050.h b/drivers/sensors/adns5050.h index 8ef0f7cc7c..586f16b590 100644 --- a/drivers/sensors/adns5050.h +++ b/drivers/sensors/adns5050.h @@ -83,3 +83,4 @@ void adns5050_set_cpi(uint16_t cpi); uint16_t adns5050_get_cpi(void); int8_t convert_twoscomp(uint8_t data); bool adns5050_check_signature(void); +void adns5050_power_down(void); diff --git a/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c index 871f8006ea..f13fbc5d94 100644 --- a/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c +++ b/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c @@ -20,3 +20,12 @@ // Dummy const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}}; + +void suspend_power_down_user(void) { + // Switch off sensor + LED making trackball unable to wake host + adns5050_power_down(); +} + +void suspend_wakeup_init_user(void) { + adns5050_init(); +} diff --git a/quantum/quantum.c b/quantum/quantum.c index 011f9d73e4..b21d6f1a3d 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -246,10 +246,9 @@ uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache) { /* Get keycode, and then process pre tapping functionality */ bool pre_process_record_quantum(keyrecord_t *record) { - uint16_t keycode = get_record_keycode(record, true); - return pre_process_record_kb(keycode, record) && + return pre_process_record_kb(get_record_keycode(record, true), record) && #ifdef COMBO_ENABLE - process_combo(keycode, record) && + process_combo(get_record_keycode(record, true), record) && #endif true; } @@ -1,3 +1,7 @@ +# THIS IS THE DEVELOP BRANCH + +Warning- This is the `develop` branch of QMK Firmware. You may encounter broken code here. Please see [Breaking Changes](https://docs.qmk.fm/#/breaking_changes) for more information. + # Quantum Mechanical Keyboard Firmware [](https://github.com/qmk/qmk_firmware/tags) |