summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/frontend/applets/software_keyboard.h2
-rw-r--r--src/core/hle/service/am/applets/applet_software_keyboard.cpp6
-rw-r--r--src/yuzu/applets/qt_software_keyboard.cpp23
-rw-r--r--src/yuzu/applets/qt_software_keyboard.h2
-rw-r--r--src/yuzu/applets/qt_software_keyboard.ui38
5 files changed, 67 insertions, 4 deletions
diff --git a/src/core/frontend/applets/software_keyboard.h b/src/core/frontend/applets/software_keyboard.h
index a405e3c94..094d1e713 100644
--- a/src/core/frontend/applets/software_keyboard.h
+++ b/src/core/frontend/applets/software_keyboard.h
@@ -17,6 +17,8 @@ struct KeyboardInitializeParameters {
17 std::u16string sub_text; 17 std::u16string sub_text;
18 std::u16string guide_text; 18 std::u16string guide_text;
19 std::u16string initial_text; 19 std::u16string initial_text;
20 char16_t left_optional_symbol_key;
21 char16_t right_optional_symbol_key;
20 u32 max_text_length; 22 u32 max_text_length;
21 u32 min_text_length; 23 u32 min_text_length;
22 s32 initial_cursor_position; 24 s32 initial_cursor_position;
diff --git a/src/core/hle/service/am/applets/applet_software_keyboard.cpp b/src/core/hle/service/am/applets/applet_software_keyboard.cpp
index faa092957..c18236045 100644
--- a/src/core/hle/service/am/applets/applet_software_keyboard.cpp
+++ b/src/core/hle/service/am/applets/applet_software_keyboard.cpp
@@ -536,6 +536,8 @@ void SoftwareKeyboard::InitializeFrontendNormalKeyboard() {
536 .sub_text{std::move(sub_text)}, 536 .sub_text{std::move(sub_text)},
537 .guide_text{std::move(guide_text)}, 537 .guide_text{std::move(guide_text)},
538 .initial_text{initial_text}, 538 .initial_text{initial_text},
539 .left_optional_symbol_key{swkbd_config_common.left_optional_symbol_key},
540 .right_optional_symbol_key{swkbd_config_common.right_optional_symbol_key},
539 .max_text_length{max_text_length}, 541 .max_text_length{max_text_length},
540 .min_text_length{min_text_length}, 542 .min_text_length{min_text_length},
541 .initial_cursor_position{initial_cursor_position}, 543 .initial_cursor_position{initial_cursor_position},
@@ -591,6 +593,8 @@ void SoftwareKeyboard::InitializeFrontendInlineKeyboardOld() {
591 .sub_text{}, 593 .sub_text{},
592 .guide_text{}, 594 .guide_text{},
593 .initial_text{current_text}, 595 .initial_text{current_text},
596 .left_optional_symbol_key{appear_arg.left_optional_symbol_key},
597 .right_optional_symbol_key{appear_arg.right_optional_symbol_key},
594 .max_text_length{max_text_length}, 598 .max_text_length{max_text_length},
595 .min_text_length{min_text_length}, 599 .min_text_length{min_text_length},
596 .initial_cursor_position{initial_cursor_position}, 600 .initial_cursor_position{initial_cursor_position},
@@ -632,6 +636,8 @@ void SoftwareKeyboard::InitializeFrontendInlineKeyboardNew() {
632 .sub_text{}, 636 .sub_text{},
633 .guide_text{}, 637 .guide_text{},
634 .initial_text{current_text}, 638 .initial_text{current_text},
639 .left_optional_symbol_key{appear_arg.left_optional_symbol_key},
640 .right_optional_symbol_key{appear_arg.right_optional_symbol_key},
635 .max_text_length{max_text_length}, 641 .max_text_length{max_text_length},
636 .min_text_length{min_text_length}, 642 .min_text_length{min_text_length},
637 .initial_cursor_position{initial_cursor_position}, 643 .initial_cursor_position{initial_cursor_position},
diff --git a/src/yuzu/applets/qt_software_keyboard.cpp b/src/yuzu/applets/qt_software_keyboard.cpp
index e8b217d90..91dca2760 100644
--- a/src/yuzu/applets/qt_software_keyboard.cpp
+++ b/src/yuzu/applets/qt_software_keyboard.cpp
@@ -213,9 +213,9 @@ QtSoftwareKeyboardDialog::QtSoftwareKeyboardDialog(
213 ui->button_ok_num, 213 ui->button_ok_num,
214 }, 214 },
215 { 215 {
216 nullptr, 216 ui->button_left_optional_num,
217 ui->button_0_num, 217 ui->button_0_num,
218 nullptr, 218 ui->button_right_optional_num,
219 ui->button_ok_num, 219 ui->button_ok_num,
220 }, 220 },
221 }}; 221 }};
@@ -330,7 +330,9 @@ QtSoftwareKeyboardDialog::QtSoftwareKeyboardDialog(
330 ui->button_7_num, 330 ui->button_7_num,
331 ui->button_8_num, 331 ui->button_8_num,
332 ui->button_9_num, 332 ui->button_9_num,
333 ui->button_left_optional_num,
333 ui->button_0_num, 334 ui->button_0_num,
335 ui->button_right_optional_num,
334 }; 336 };
335 337
336 SetupMouseHover(); 338 SetupMouseHover();
@@ -342,6 +344,9 @@ QtSoftwareKeyboardDialog::QtSoftwareKeyboardDialog(
342 ui->label_header->setText(QString::fromStdU16String(initialize_parameters.header_text)); 344 ui->label_header->setText(QString::fromStdU16String(initialize_parameters.header_text));
343 ui->label_sub->setText(QString::fromStdU16String(initialize_parameters.sub_text)); 345 ui->label_sub->setText(QString::fromStdU16String(initialize_parameters.sub_text));
344 346
347 ui->button_left_optional_num->setText(QChar{initialize_parameters.left_optional_symbol_key});
348 ui->button_right_optional_num->setText(QChar{initialize_parameters.right_optional_symbol_key});
349
345 current_text = initialize_parameters.initial_text; 350 current_text = initialize_parameters.initial_text;
346 cursor_position = initialize_parameters.initial_cursor_position; 351 cursor_position = initialize_parameters.initial_cursor_position;
347 352
@@ -932,6 +937,15 @@ void QtSoftwareKeyboardDialog::DisableKeyboardButtons() {
932 button->setEnabled(true); 937 button->setEnabled(true);
933 } 938 }
934 } 939 }
940
941 const auto enable_left_optional = initialize_parameters.left_optional_symbol_key != '\0';
942 const auto enable_right_optional = initialize_parameters.right_optional_symbol_key != '\0';
943
944 ui->button_left_optional_num->setEnabled(enable_left_optional);
945 ui->button_left_optional_num->setVisible(enable_left_optional);
946
947 ui->button_right_optional_num->setEnabled(enable_right_optional);
948 ui->button_right_optional_num->setVisible(enable_right_optional);
935 break; 949 break;
936 } 950 }
937 } 951 }
@@ -1019,7 +1033,10 @@ bool QtSoftwareKeyboardDialog::ValidateInputText(const QString& input_text) {
1019 } 1033 }
1020 1034
1021 if (bottom_osk_index == BottomOSKIndex::NumberPad && 1035 if (bottom_osk_index == BottomOSKIndex::NumberPad &&
1022 std::any_of(input_text.begin(), input_text.end(), [](QChar c) { return !c.isDigit(); })) { 1036 std::any_of(input_text.begin(), input_text.end(), [this](QChar c) {
1037 return !c.isDigit() && c != QChar{initialize_parameters.left_optional_symbol_key} &&
1038 c != QChar{initialize_parameters.right_optional_symbol_key};
1039 })) {
1023 return false; 1040 return false;
1024 } 1041 }
1025 1042
diff --git a/src/yuzu/applets/qt_software_keyboard.h b/src/yuzu/applets/qt_software_keyboard.h
index 1c489fbb6..35d4ee2ef 100644
--- a/src/yuzu/applets/qt_software_keyboard.h
+++ b/src/yuzu/applets/qt_software_keyboard.h
@@ -211,7 +211,7 @@ private:
211 std::array<std::array<QPushButton*, NUM_COLUMNS_NUMPAD>, NUM_ROWS_NUMPAD> numberpad_buttons; 211 std::array<std::array<QPushButton*, NUM_COLUMNS_NUMPAD>, NUM_ROWS_NUMPAD> numberpad_buttons;
212 212
213 // Contains a set of all buttons used in keyboard_buttons and numberpad_buttons. 213 // Contains a set of all buttons used in keyboard_buttons and numberpad_buttons.
214 std::array<QPushButton*, 110> all_buttons; 214 std::array<QPushButton*, 112> all_buttons;
215 215
216 std::size_t row{0}; 216 std::size_t row{0};
217 std::size_t column{0}; 217 std::size_t column{0};
diff --git a/src/yuzu/applets/qt_software_keyboard.ui b/src/yuzu/applets/qt_software_keyboard.ui
index b0a1fcde9..9661cb260 100644
--- a/src/yuzu/applets/qt_software_keyboard.ui
+++ b/src/yuzu/applets/qt_software_keyboard.ui
@@ -3298,6 +3298,24 @@ p, li { white-space: pre-wrap; }
3298 </property> 3298 </property>
3299 </widget> 3299 </widget>
3300 </item> 3300 </item>
3301 <item row="4" column="2">
3302 <widget class="QPushButton" name="button_left_optional_num">
3303 <property name="sizePolicy">
3304 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
3305 <horstretch>1</horstretch>
3306 <verstretch>1</verstretch>
3307 </sizepolicy>
3308 </property>
3309 <property name="font">
3310 <font>
3311 <pointsize>28</pointsize>
3312 </font>
3313 </property>
3314 <property name="text">
3315 <string notr="true"></string>
3316 </property>
3317 </widget>
3318 </item>
3301 <item row="4" column="3"> 3319 <item row="4" column="3">
3302 <widget class="QPushButton" name="button_0_num"> 3320 <widget class="QPushButton" name="button_0_num">
3303 <property name="sizePolicy"> 3321 <property name="sizePolicy">
@@ -3316,6 +3334,24 @@ p, li { white-space: pre-wrap; }
3316 </property> 3334 </property>
3317 </widget> 3335 </widget>
3318 </item> 3336 </item>
3337 <item row="4" column="4">
3338 <widget class="QPushButton" name="button_right_optional_num">
3339 <property name="sizePolicy">
3340 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
3341 <horstretch>1</horstretch>
3342 <verstretch>1</verstretch>
3343 </sizepolicy>
3344 </property>
3345 <property name="font">
3346 <font>
3347 <pointsize>28</pointsize>
3348 </font>
3349 </property>
3350 <property name="text">
3351 <string notr="true"></string>
3352 </property>
3353 </widget>
3354 </item>
3319 <item row="1" column="4"> 3355 <item row="1" column="4">
3320 <widget class="QPushButton" name="button_3_num"> 3356 <widget class="QPushButton" name="button_3_num">
3321 <property name="sizePolicy"> 3357 <property name="sizePolicy">
@@ -3494,7 +3530,9 @@ p, li { white-space: pre-wrap; }
3494 <tabstop>button_7_num</tabstop> 3530 <tabstop>button_7_num</tabstop>
3495 <tabstop>button_8_num</tabstop> 3531 <tabstop>button_8_num</tabstop>
3496 <tabstop>button_9_num</tabstop> 3532 <tabstop>button_9_num</tabstop>
3533 <tabstop>button_left_optional_num</tabstop>
3497 <tabstop>button_0_num</tabstop> 3534 <tabstop>button_0_num</tabstop>
3535 <tabstop>button_right_optional_num</tabstop>
3498 </tabstops> 3536 </tabstops>
3499 <resources> 3537 <resources>
3500 <include location="../../../dist/icons/overlay/overlay.qrc"/> 3538 <include location="../../../dist/icons/overlay/overlay.qrc"/>