mirror of
https://github.com/CTCaer/hekate
synced 2024-12-22 11:21:23 +00:00
nyx: relax joycon calibration init
Wait a bit before actually doing stick calibration in order to avoid bad values.
This commit is contained in:
parent
d1ee0e35fd
commit
2e1a773a08
1 changed files with 12 additions and 12 deletions
|
@ -65,7 +65,9 @@ char *text_color;
|
||||||
typedef struct _jc_lv_driver_t
|
typedef struct _jc_lv_driver_t
|
||||||
{
|
{
|
||||||
lv_indev_t *indev;
|
lv_indev_t *indev;
|
||||||
bool centering_done;
|
// LV_INDEV_READ_PERIOD * JC_CAL_MAX_STEPS = 264 ms.
|
||||||
|
#define JC_CAL_MAX_STEPS 8
|
||||||
|
u32 calibration_step;
|
||||||
u16 cx_max;
|
u16 cx_max;
|
||||||
u16 cx_min;
|
u16 cx_min;
|
||||||
u16 cy_max;
|
u16 cy_max;
|
||||||
|
@ -412,7 +414,7 @@ static bool _jc_virt_mouse_read(lv_indev_data_t *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calibrate left stick.
|
// Calibrate left stick.
|
||||||
if (!jc_drv_ctx.centering_done)
|
if (jc_drv_ctx.calibration_step != JC_CAL_MAX_STEPS)
|
||||||
{
|
{
|
||||||
if (n_cfg.jc_force_right)
|
if (n_cfg.jc_force_right)
|
||||||
{
|
{
|
||||||
|
@ -420,11 +422,11 @@ static bool _jc_virt_mouse_read(lv_indev_data_t *data)
|
||||||
&& jc_pad->rstick_x > 0x400 && jc_pad->rstick_y > 0x400
|
&& jc_pad->rstick_x > 0x400 && jc_pad->rstick_y > 0x400
|
||||||
&& jc_pad->rstick_x < 0xC00 && jc_pad->rstick_y < 0xC00)
|
&& jc_pad->rstick_x < 0xC00 && jc_pad->rstick_y < 0xC00)
|
||||||
{
|
{
|
||||||
|
jc_drv_ctx.calibration_step++;
|
||||||
jc_drv_ctx.cx_max = jc_pad->rstick_x + 0x96;
|
jc_drv_ctx.cx_max = jc_pad->rstick_x + 0x96;
|
||||||
jc_drv_ctx.cx_min = jc_pad->rstick_x - 0x96;
|
jc_drv_ctx.cx_min = jc_pad->rstick_x - 0x96;
|
||||||
jc_drv_ctx.cy_max = jc_pad->rstick_y + 0x96;
|
jc_drv_ctx.cy_max = jc_pad->rstick_y + 0x96;
|
||||||
jc_drv_ctx.cy_min = jc_pad->rstick_y - 0x96;
|
jc_drv_ctx.cy_min = jc_pad->rstick_y - 0x96;
|
||||||
jc_drv_ctx.centering_done = true;
|
|
||||||
jc_drv_ctx.cursor_timeout = 0;
|
jc_drv_ctx.cursor_timeout = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -432,14 +434,15 @@ static bool _jc_virt_mouse_read(lv_indev_data_t *data)
|
||||||
&& jc_pad->lstick_x > 0x400 && jc_pad->lstick_y > 0x400
|
&& jc_pad->lstick_x > 0x400 && jc_pad->lstick_y > 0x400
|
||||||
&& jc_pad->lstick_x < 0xC00 && jc_pad->lstick_y < 0xC00)
|
&& jc_pad->lstick_x < 0xC00 && jc_pad->lstick_y < 0xC00)
|
||||||
{
|
{
|
||||||
|
jc_drv_ctx.calibration_step++;
|
||||||
jc_drv_ctx.cx_max = jc_pad->lstick_x + 0x96;
|
jc_drv_ctx.cx_max = jc_pad->lstick_x + 0x96;
|
||||||
jc_drv_ctx.cx_min = jc_pad->lstick_x - 0x96;
|
jc_drv_ctx.cx_min = jc_pad->lstick_x - 0x96;
|
||||||
jc_drv_ctx.cy_max = jc_pad->lstick_y + 0x96;
|
jc_drv_ctx.cy_max = jc_pad->lstick_y + 0x96;
|
||||||
jc_drv_ctx.cy_min = jc_pad->lstick_y - 0x96;
|
jc_drv_ctx.cy_min = jc_pad->lstick_y - 0x96;
|
||||||
jc_drv_ctx.centering_done = true;
|
|
||||||
jc_drv_ctx.cursor_timeout = 0;
|
jc_drv_ctx.cursor_timeout = 0;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if (jc_drv_ctx.calibration_step != JC_CAL_MAX_STEPS)
|
||||||
{
|
{
|
||||||
data->state = LV_INDEV_STATE_REL;
|
data->state = LV_INDEV_STATE_REL;
|
||||||
return false;
|
return false;
|
||||||
|
@ -447,13 +450,10 @@ static bool _jc_virt_mouse_read(lv_indev_data_t *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-calibrate on disconnection.
|
// Re-calibrate on disconnection.
|
||||||
if (n_cfg.jc_force_right)
|
if (n_cfg.jc_force_right && !jc_pad->conn_r)
|
||||||
{
|
jc_drv_ctx.calibration_step = 0;
|
||||||
if (!jc_pad->conn_r)
|
else if (!n_cfg.jc_force_right && !jc_pad->conn_l)
|
||||||
jc_drv_ctx.centering_done = 0;
|
jc_drv_ctx.calibration_step = 0;
|
||||||
}
|
|
||||||
else if (!jc_pad->conn_l)
|
|
||||||
jc_drv_ctx.centering_done = 0;
|
|
||||||
|
|
||||||
// Set button presses.
|
// Set button presses.
|
||||||
if (jc_pad->a || jc_pad->zl || jc_pad->zr)
|
if (jc_pad->a || jc_pad->zl || jc_pad->zr)
|
||||||
|
|
Loading…
Reference in a new issue