diff --git a/config.cpp b/config.cpp index 31f2b93a..930b16f1 100644 --- a/config.cpp +++ b/config.cpp @@ -4227,7 +4227,7 @@ EX void find_parameter() { keyhandler = [] (int sym, int uni) { dialog::handleNavigation(sym, uni); - if(dialog::editInfix(uni)) dialog::list_skip = 0; + if(dialog::editInfix(sym, uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/dialogs.cpp b/dialogs.cpp index 6682822e..0222f131 100644 --- a/dialogs.cpp +++ b/dialogs.cpp @@ -1950,11 +1950,17 @@ EX namespace dialog { } } - EX bool editInfix(int uni) { + EX bool editInfix(int sym, int uni) { if(uni >= 'A' && uni <= 'Z') infix += uni; else if(uni >= 'a' && uni <= 'z') infix += uni-32; - else if(infix != "" && uni == 8) infix = infix.substr(0, isize(infix)-1); + else if(infix != "" && (uni == 8 || is_joy_index(sym, deck::space) || is_joy_index(sym, deck::key_pageup))) infix = infix.substr(0, isize(infix)-1); else if(infix != "" && uni != 0) infix = ""; + else if(is_joy_index(sym, deck::show_keyboard)) { + onscreen_keyboard = !onscreen_keyboard; + } + else if(uni == PSEUDOKEY_ONSCREEN_KEYBOARD) { + infix += keyboard_what; + } else return false; return true; } diff --git a/geom-exp.cpp b/geom-exp.cpp index 58b65e28..29cb2e60 100644 --- a/geom-exp.cpp +++ b/geom-exp.cpp @@ -235,7 +235,7 @@ EX void ge_land_selection() { keyhandler = [] (int sym, int uni) { dialog::handleNavigation(sym, uni); - if(dialog::editInfix(uni)) dialog::list_skip = 0; + if(dialog::editInfix(sym, uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/landlock.cpp b/landlock.cpp index 0d4ace2e..7d156e8c 100644 --- a/landlock.cpp +++ b/landlock.cpp @@ -1075,7 +1075,7 @@ EX void customize_land_list() { keyhandler = [] (int sym, int uni) { dialog::handleNavigation(sym, uni); - if(dialog::editInfix(uni)) dialog::list_skip = 0; + if(dialog::editInfix(sym, uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/mapeditor.cpp b/mapeditor.cpp index 1b210d8d..10f7640a 100644 --- a/mapeditor.cpp +++ b/mapeditor.cpp @@ -2037,7 +2037,7 @@ EX namespace mapeditor { keyhandler = [] (int sym, int uni) { dialog::handleNavigation(sym, uni); - if(dialog::editInfix(uni)) dialog::list_skip = 0; + if(dialog::editInfix(sym, uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/menus.cpp b/menus.cpp index a43ec7cd..6510da3e 100644 --- a/menus.cpp +++ b/menus.cpp @@ -219,7 +219,7 @@ EX void showOverview() { "mousewheel to gain or lose treasures and orbs quickly (Ctrl = precise, Shift = reverse)." ); else if(dialog::handlePageButtons(sym, uni, true, numpages)) ; - else if(dialog::editInfix(uni)) dialog::list_skip = 0; + else if(dialog::editInfix(sym, uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/scores.cpp b/scores.cpp index 98a58508..5a4a1efe 100644 --- a/scores.cpp +++ b/scores.cpp @@ -171,7 +171,7 @@ void showPickScores() { mouseovers = dialog::infix; keyhandler = [] (int sym, int uni) { dialog::handleNavigation(sym, uni); - if(dialog::editInfix(uni)) dialog::list_skip = 0; + if(dialog::editInfix(sym, uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/yendor.cpp b/yendor.cpp index 9122cac7..4454f6d8 100644 --- a/yendor.cpp +++ b/yendor.cpp @@ -976,7 +976,7 @@ EX namespace tactic { "Good luck, and have fun!" ); else if(dialog::infix == "" && dialog::handlePageButtons(sym, uni, true, numpages)) ; - else if(dialog::editInfix(uni)) dialog::list_skip = 0; + else if(dialog::editInfix(sym, uni)) dialog::list_skip = 0; else if(doexiton(sym, uni)) popScreen(); }; }