diff --git a/config.cpp b/config.cpp index 83755670..de83b85d 100644 --- a/config.cpp +++ b/config.cpp @@ -1027,6 +1027,8 @@ EX int lang() { EX bool autojoy = false; +EX bool defaultjoy = true; + EX void paramset(charstyle& cs, string s) { param_i(cs.charid, s + ".charid"); param_color(cs.skincolor, s + ".skincolor", true, cs.skincolor); @@ -1462,6 +1464,9 @@ EX void initConfig() { param_f(vid.joypanspeed, "vid.joypanspeed", ISPANDORA ? 0.0001 : 0); param_b(autojoy, "autojoy") -> editable("joystick moves automatically", 'J'); + param_b(defaultjoy, "defaultjoy") + -> editable("apply joystick movements", 'H') + -> help("Disable this on Steam controllers, which also send key events, to avoid duplicated input."); #endif vid.killreduction = 0; @@ -2646,6 +2651,7 @@ EX void showJoyConfig() { dialog::addSelItem(XLAT("second joystick: pan threshold"), its(vid.joypanthreshold), 'c'); dialog::addSelItem(XLAT("second joystick: panning speed"), fts(vid.joypanspeed * 1000), 'd'); dialog::addSelItem(XLAT("smoothen"), its(vid.joysmooth) + " ms", 'e'); + add_edit(defaultjoy); dialog::addBreak(50); dialog::addBack(); diff --git a/control.cpp b/control.cpp index 65e25a71..17dc3b4a 100644 --- a/control.cpp +++ b/control.cpp @@ -1178,21 +1178,22 @@ EX void handle_event(SDL_Event& ev) { if(joyhandler && joyhandler(ev)) ; - else if(ev.type == SDL_EVENT_JOYSTICK_HAT_MOTION && !normal) { + else if(ev.type == SDL_EVENT_JOYSTICK_HAT_MOTION && !normal && defaultjoy) { if(ev.jhat.value == SDL_HAT_UP) sym = SDLK_UP; if(ev.jhat.value == SDL_HAT_DOWN) sym = SDLK_DOWN; if(ev.jhat.value == SDL_HAT_LEFT) sym = SDLK_LEFT; if(ev.jhat.value == SDL_HAT_RIGHT) sym = SDLK_RIGHT; } - else if(ev.type == SDL_EVENT_JOYSTICK_BUTTON_DOWN && normal && DEFAULTCONTROL) { + else if(ev.type == SDL_EVENT_JOYSTICK_BUTTON_DOWN && normal && DEFAULTCONTROL && defaultjoy) { flashMessages(); movepcto(joydir); joy_ignore_next = true; + joytime = -1; checkjoy(); } - else if(ev.type == SDL_EVENT_JOYSTICK_BUTTON_DOWN && !normal) { + else if(ev.type == SDL_EVENT_JOYSTICK_BUTTON_DOWN && !normal && defaultjoy) { sym = uni = SDLK_RETURN; } #endif