diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index cccba9d3ab..fd14af9c3b 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -524,7 +524,6 @@ static void *android_input_init(const char *joypad_driver) android->pads_connected = 0; android->quick_tap_time = 0; - android->joypad = input_joypad_init_driver(joypad_driver, android); input_keymaps_init_keyboard_lut(rarch_key_map_android); @@ -547,6 +546,8 @@ static void *android_input_init(const char *joypad_driver) android_app->input_alive = true; + android->joypad = input_joypad_init_driver(joypad_driver, android); + return android; } diff --git a/input/drivers/dinput.c b/input/drivers/dinput.c index 84b198199f..fb7facd3b0 100644 --- a/input/drivers/dinput.c +++ b/input/drivers/dinput.c @@ -182,12 +182,13 @@ static void *dinput_init(const char *joypad_driver) } input_keymaps_init_keyboard_lut(rarch_key_map_dinput); - di->joypad = input_joypad_init_driver(joypad_driver, di); #ifndef _XBOX win32_set_input_userdata(di); #endif + di->joypad = input_joypad_init_driver(joypad_driver, di); + return di; } diff --git a/input/drivers/dos_input.c b/input/drivers/dos_input.c index a6d2ab27bc..5fd2dc4558 100644 --- a/input/drivers/dos_input.c +++ b/input/drivers/dos_input.c @@ -145,12 +145,10 @@ static void* dos_input_init(const char *joypad_driver) if (!dos) return NULL; - dos_keyboard_free(); + input_keymaps_init_keyboard_lut(rarch_key_map_dos); dos->joypad = input_joypad_init_driver(joypad_driver, dos); - input_keymaps_init_keyboard_lut(rarch_key_map_dos); - return dos; } diff --git a/input/drivers/gx_input.c b/input/drivers/gx_input.c index a66959ab77..96c68c05ef 100644 --- a/input/drivers/gx_input.c +++ b/input/drivers/gx_input.c @@ -216,13 +216,14 @@ static void *gx_input_init(const char *joypad_driver) if (!gx) return NULL; - gx->joypad = input_joypad_init_driver(joypad_driver, gx); #ifdef HW_RVL /* Allocate at least 1 mouse at startup */ gx->mouse_max = 1; gx->mouse = (gx_input_mouse_t*)calloc( gx->mouse_max, sizeof(gx_input_mouse_t)); #endif + + gx->joypad = input_joypad_init_driver(joypad_driver, gx); return gx; } diff --git a/input/drivers/linuxraw_input.c b/input/drivers/linuxraw_input.c index 3f7c51446f..f155621320 100644 --- a/input/drivers/linuxraw_input.c +++ b/input/drivers/linuxraw_input.c @@ -66,11 +66,12 @@ static void *linuxraw_input_init(const char *joypad_driver) return NULL; } - linuxraw->joypad = input_joypad_init_driver(joypad_driver, linuxraw); input_keymaps_init_keyboard_lut(rarch_key_map_linux); linux_terminal_claim_stdin(); + linuxraw->joypad = input_joypad_init_driver(joypad_driver, linuxraw); + return linuxraw; } diff --git a/input/drivers/ps3_input.c b/input/drivers/ps3_input.c index 6677ae0e96..5ae07558b4 100644 --- a/input/drivers/ps3_input.c +++ b/input/drivers/ps3_input.c @@ -169,14 +169,15 @@ static void* ps3_input_init(const char *joypad_driver) if (!ps3) return NULL; +#ifdef HAVE_MOUSE + cellMouseInit(MAX_MICE); +#endif + ps3->joypad = input_joypad_init_driver(joypad_driver, ps3); if (ps3->joypad) ps3->joypad->init(ps3); -#ifdef HAVE_MOUSE - cellMouseInit(MAX_MICE); -#endif return ps3; } diff --git a/input/drivers/psl1ght_input.c b/input/drivers/psl1ght_input.c index a926ec7ec0..f6e497d818 100644 --- a/input/drivers/psl1ght_input.c +++ b/input/drivers/psl1ght_input.c @@ -270,11 +270,6 @@ static void* ps3_input_init(const char *joypad_driver) if (!ps3) return NULL; - ps3->joypad = input_joypad_init_driver(joypad_driver, ps3); - - if (ps3->joypad) - ps3->joypad->init(ps3); - /* Keyboard */ input_keymaps_init_keyboard_lut(rarch_key_map_psl1ght); @@ -288,6 +283,11 @@ static void* ps3_input_init(const char *joypad_driver) ps3_connect_keyboard(ps3, i); } + ps3->joypad = input_joypad_init_driver(joypad_driver, ps3); + + if (ps3->joypad) + ps3->joypad->init(ps3); + return ps3; } diff --git a/input/drivers/switch_input.c b/input/drivers/switch_input.c index 0422d92467..76fbde80ca 100644 --- a/input/drivers/switch_input.c +++ b/input/drivers/switch_input.c @@ -819,24 +819,22 @@ static void switch_input_free_input(void *data) static void* switch_input_init(const char *joypad_driver) { +#ifdef HAVE_LIBNX + unsigned int i; +#endif switch_input_t *sw = (switch_input_t*) calloc(1, sizeof(*sw)); if (!sw) return NULL; #ifdef HAVE_LIBNX hidInitialize(); -#endif - sw->joypad = input_joypad_init_driver(joypad_driver, sw); - -#ifdef HAVE_LIBNX /* Here we assume that the touch screen is always 1280x720 Call me back when a Nintendo Switch XL is out */ input_keymaps_init_keyboard_lut(rarch_key_map_switch); - unsigned int i; for (i = 0; i <= SWITCH_MAX_SCANCODE; i++) sw->keyboard_state[i] = false; @@ -860,6 +858,8 @@ static void* switch_input_init(const char *joypad_driver) sw->sixaxis_handles_count[i] = 0; #endif + sw->joypad = input_joypad_init_driver(joypad_driver, sw); + return sw; } diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index a8e615218e..3671f38694 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -1310,7 +1310,6 @@ static void *udev_input_init(const char *joypad_driver) if (!udev->num_devices) RARCH_WARN("[udev]: Couldn't open any keyboard, mouse or touchpad. Are permissions set correctly for /dev/input/event*?\n"); - udev->joypad = input_joypad_init_driver(joypad_driver, udev); input_keymaps_init_keyboard_lut(rarch_key_map_linux); #ifdef __linux__ @@ -1322,6 +1321,8 @@ static void *udev_input_init(const char *joypad_driver) RARCH_WARN("[udev]: Full-screen pointer won't be available.\n"); #endif + udev->joypad = input_joypad_init_driver(joypad_driver, udev); + return udev; error: diff --git a/input/drivers/wayland_input.c b/input/drivers/wayland_input.c index dba61d8158..22f96eff00 100644 --- a/input/drivers/wayland_input.c +++ b/input/drivers/wayland_input.c @@ -383,12 +383,13 @@ bool input_wl_init(void *data, const char *joypad_name) if (!wl) return false; + input_keymaps_init_keyboard_lut(rarch_key_map_linux); + wl->joypad = input_joypad_init_driver(joypad_name, wl); if (!wl->joypad) return false; - input_keymaps_init_keyboard_lut(rarch_key_map_linux); return true; } diff --git a/input/drivers/wiiu_input.c b/input/drivers/wiiu_input.c index c4c1bb17f0..ffc196f46f 100644 --- a/input/drivers/wiiu_input.c +++ b/input/drivers/wiiu_input.c @@ -177,14 +177,14 @@ static void* wiiu_input_init(const char *joypad_driver) if (!wiiu) return NULL; - DEBUG_STR(joypad_driver); - wiiu->joypad = input_joypad_init_driver(joypad_driver, wiiu); - KBDSetup(&kb_connection_callback, &kb_disconnection_callback,&kb_key_callback); input_keymaps_init_keyboard_lut(rarch_key_map_wiiu); + DEBUG_STR(joypad_driver); + wiiu->joypad = input_joypad_init_driver(joypad_driver, wiiu); + return wiiu; } diff --git a/input/drivers/x11_input.c b/input/drivers/x11_input.c index 19c7aa6fed..b96b933475 100644 --- a/input/drivers/x11_input.c +++ b/input/drivers/x11_input.c @@ -64,9 +64,10 @@ static void *x_input_init(const char *joypad_driver) x11->display = (Display*)video_driver_display_get(); x11->win = (Window)video_driver_window_get(); - x11->joypad = input_joypad_init_driver(joypad_driver, x11); input_keymaps_init_keyboard_lut(rarch_key_map_x11); + x11->joypad = input_joypad_init_driver(joypad_driver, x11); + return x11; }