diff --git a/config.cpp b/config.cpp index 45996f21..31f2b93a 100644 --- a/config.cpp +++ b/config.cpp @@ -1095,7 +1095,6 @@ EX void initConfig() { if(deck) { centered_menus = true; lands_per_page = 18; - defaultjoy = false; dialog::onscreen_keyboard = true; dialog::dialog_font_scale = 3; dialog::display_keys = 3; diff --git a/control.cpp b/control.cpp index ce18b7f5..c978ae76 100644 --- a/control.cpp +++ b/control.cpp @@ -610,9 +610,9 @@ EX void handleKeyNormal(int sym, int uni) { if(DEFAULTCONTROL && !game_keys_scroll) { if(sym == '.' || sym == 's') movepcto(-1, 1); - if((sym == SDLK_DELETE || sym == SDLK_KP_PERIOD || sym == 'g') && uni != 'G' && uni != 'G'-64) + if((sym == SDLK_DELETE || sym == SDLK_KP_PERIOD || sym == 'g' || is_joy_index(sym, deck::key_g)) && uni != 'G' && uni != 'G'-64) movepcto(MD_DROP, 1); - if(sym == 't' && uni != 'T' && uni != 'T'-64 && canmove) { + if((sym == 't' || is_joy_index(sym, deck::key_t)) && uni != 'T' && uni != 'T'-64 && canmove) { cell *target = GDIM == 3 ? mouseover : centerover; if(playermoved && items[itStrongWind]) { cell *c = whirlwind::jumpDestination(cwt.at); @@ -622,8 +622,8 @@ EX void handleKeyNormal(int sym, int uni) { else targetRangedOrb(target, roKeyboard); sym = 0; uni = 0; } - if(sym == 'f') bow::switch_fire_mode(); - if(sym == '`') { + if(sym == 'f' || is_joy_index(sym, deck::key_f)) bow::switch_fire_mode(); + if(sym == '`' || is_joy_index(sym, deck::enter)) { flashMessages(); movepcto(joydir); joy_ignore_next = true; @@ -649,7 +649,7 @@ EX void handleKeyNormal(int sym, int uni) { keybd_subdir *= -1; } - if(sym == SDLK_ESCAPE) { + if(sym == SDLK_ESCAPE || is_joy_index(sym, deck::escape)) { if(bow::fire_mode) bow::switch_fire_mode(); else if(viewdists) @@ -964,6 +964,12 @@ EX void mainloopiter() { hiliteclick = keystate[SDLK_LALT] | keystate[SDLK_RALT]; #endif + if(defaultjoy) for(int i=0; i 255) x = 255; part(color, uni - 'A') = x; } - else if(uni == ' ' || uni == '\n' || uni == '\r') { + else if(uni == ' ' || uni == '\n' || uni == '\r' || is_joy_index(sym, deck::enter) || is_joy_index(sym, deck::alt_enter)) { bool inHistory = false; for(int i=0; i<10; i++) if(colorhistory[i] == (color << shift)) inHistory = true; @@ -1867,14 +1867,14 @@ EX namespace dialog { string& s(*cfileptr); int i = isize(s) - (editext?0:4); - if(sym == SDLK_ESCAPE) { + if(sym == SDLK_ESCAPE || is_joy_index(sym, deck::escape)) { popScreen(); } - else if(sym == SDLK_RETURN || sym == SDLK_KP_ENTER) { + else if(sym == SDLK_RETURN || sym == SDLK_KP_ENTER || is_joy_index(sym, deck::enter)) { bool ac = file_action(); if(ac) closed = true; } - else if(sym == SDLK_BACKSPACE && i) { + else if((sym == SDLK_BACKSPACE || is_joy_index(sym, deck::space) || is_joy_index(sym, deck::key_pageup)) && i) { int len = utfsize_before(s, i); s.erase(i-len, len); highlight_text = "//missing"; @@ -1999,10 +1999,10 @@ EX namespace dialog { string u2; if(DKEY == SDLK_LEFT) editpos -= utfsize_before(es, editpos); else if(DKEY == SDLK_RIGHT) editpos += utfsize(es[editpos]); - else if(uni == '\t') { + else if(uni == '\t' || is_joy_index(sym, deck::key_t) || is_joy_index(sym, deck::key_pagedown)) { es = ""; editpos = 0; } - else if(uni == 8) { + else if(uni == 8 || is_joy_index(sym, deck::key_f) || is_joy_index(sym, deck::key_pageup)) { if(editpos == 0) return true; int len = utfsize_before(es, editpos); es.replace(editpos-len, len, ""); diff --git a/tour.cpp b/tour.cpp index ef7ebf77..114d3c6f 100644 --- a/tour.cpp +++ b/tour.cpp @@ -290,10 +290,10 @@ EX bool handleKeyTour(int sym, int uni) { dialog::key_actions[sym](); return true; } - if(sym == SDLK_PAGEDOWN) return next_slide(); - if((sym == SDLK_RETURN || sym == SDLK_KP_ENTER) && (!inhelp || (flags & QUICKSKIP))) + if(sym == SDLK_PAGEDOWN || is_joy_index(sym, deck::key_pagedown)) return next_slide(); + if((sym == SDLK_RETURN || sym == SDLK_KP_ENTER || is_joy_index(sym, deck::alt_enter)) && (!inhelp || (flags & QUICKSKIP))) return next_slide(); - if(sym == SDLK_BACKSPACE || sym == SDLK_PAGEUP) { + if(sym == SDLK_BACKSPACE || sym == SDLK_PAGEUP || is_joy_index(sym, deck::key_pageup)) { if(gamestack::pushed()) { gamestack::pop(); if(!(flags & QUICKGEO)) return true;