mirror of
https://github.com/zsa/qmk_firmware.git
synced 2026-01-09 23:22:30 +00:00
fix: trackball cpi boundaries, restore user set default cpi at boot
This commit is contained in:
@@ -192,6 +192,7 @@ void navigator_trackball_device_init(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trackball_init = 1;
|
trackball_init = 1;
|
||||||
|
restore_cpi(current_cpi);
|
||||||
if (!callback_token) {
|
if (!callback_token) {
|
||||||
// Register the callback to read the trackball motion
|
// Register the callback to read the trackball motion
|
||||||
callback_token = defer_exec(NAVIGATOR_TRACKBALL_READ, sci18is606_read_callback, NULL);
|
callback_token = defer_exec(NAVIGATOR_TRACKBALL_READ, sci18is606_read_callback, NULL);
|
||||||
@@ -217,20 +218,17 @@ uint16_t navigator_trackball_get_cpi(void) {
|
|||||||
void restore_cpi(uint8_t cpi) {
|
void restore_cpi(uint8_t cpi) {
|
||||||
current_cpi = cpi;
|
current_cpi = cpi;
|
||||||
paw3805ek_set_cpi();
|
paw3805ek_set_cpi();
|
||||||
printf("restored cpi: %d\n", current_cpi);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void navigator_trackball_set_cpi(uint16_t cpi) {
|
void navigator_trackball_set_cpi(uint16_t cpi) {
|
||||||
if (cpi == 0) { // Decrease one tick
|
if (cpi == 0) { // Decrease one tick
|
||||||
if (current_cpi > NAVIGATOR_TRACKBALL_CPI_TICK) {
|
if (current_cpi > NAVIGATOR_TRACKBALL_CPI_TICK) {
|
||||||
current_cpi -= NAVIGATOR_TRACKBALL_CPI_TICK;
|
current_cpi -= NAVIGATOR_TRACKBALL_CPI_TICK;
|
||||||
printf("decreased cpi: %d\n", current_cpi);
|
|
||||||
paw3805ek_set_cpi();
|
paw3805ek_set_cpi();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (current_cpi < 255 - NAVIGATOR_TRACKBALL_CPI_TICK) {
|
if (current_cpi <= NAVIGATOR_TRACKBALL_CPI_MAX - NAVIGATOR_TRACKBALL_CPI_TICK) {
|
||||||
current_cpi += NAVIGATOR_TRACKBALL_CPI_TICK;
|
current_cpi += NAVIGATOR_TRACKBALL_CPI_TICK;
|
||||||
printf("increased cpi: %d\n", current_cpi);
|
|
||||||
paw3805ek_set_cpi();
|
paw3805ek_set_cpi();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
# define NAVIGATOR_TRACKBALL_CPI_TICK 5
|
# define NAVIGATOR_TRACKBALL_CPI_TICK 5
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define NAVIGATOR_TRACKBALL_CPI_MAX 125
|
||||||
|
|
||||||
#ifndef NAVIGATOR_TRACKBALL_TIMEOUT
|
#ifndef NAVIGATOR_TRACKBALL_TIMEOUT
|
||||||
# define NAVIGATOR_TRACKBALL_TIMEOUT 100
|
# define NAVIGATOR_TRACKBALL_TIMEOUT 100
|
||||||
#endif
|
#endif
|
||||||
@@ -36,33 +38,6 @@
|
|||||||
#define SCI18IS606_GET_ID 0xFE
|
#define SCI18IS606_GET_ID 0xFE
|
||||||
|
|
||||||
#define WRITE_REG_BIT 0x80
|
#define WRITE_REG_BIT 0x80
|
||||||
/*
|
|
||||||
The PAW3805EK datasheet suggests the following CPI values for the X and Y axes:
|
|
||||||
CPI X-axis Y-axis
|
|
||||||
800 0x1F 0x22
|
|
||||||
1000 0x26 0x2A
|
|
||||||
1200 0x2E 0x32
|
|
||||||
1600 0x3C 0x43
|
|
||||||
2000 0x4C 0x54
|
|
||||||
2400 0x5B 0x64
|
|
||||||
3000 0x70 0x7B
|
|
||||||
*/
|
|
||||||
#define CPI_TICKS 7
|
|
||||||
#define DEFAULT_CPI_TICK 1
|
|
||||||
#define CPI_X_800 0x1F
|
|
||||||
#define CPI_Y_800 0x22
|
|
||||||
#define CPI_X_1000 0x26
|
|
||||||
#define CPI_Y_1000 0x2A
|
|
||||||
#define CPI_X_1200 0x2E
|
|
||||||
#define CPI_Y_1200 0x32
|
|
||||||
#define CPI_X_1600 0x3C
|
|
||||||
#define CPI_Y_1600 0x43
|
|
||||||
#define CPI_X_2000 0x4C
|
|
||||||
#define CPI_Y_2000 0x54
|
|
||||||
#define CPI_X_2400 0x5B
|
|
||||||
#define CPI_Y_2400 0x64
|
|
||||||
#define CPI_X_3000 0x70
|
|
||||||
#define CPI_Y_3000 0x7B
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t reg;
|
uint8_t reg;
|
||||||
|
|||||||
Reference in New Issue
Block a user