+ docstring sequence;
+ docstring seq_untranslated;
+ if (params_.type == InsetInfoParams::SHORTCUT_INFO) {
+ sequence = bindings.begin()->print(KeySequence::ForGui);
+ seq_untranslated = bindings.begin()->print(KeySequence::ForGui, true);
+ } else {
+ sequence = theTopLevelKeymap().printBindings(func, KeySequence::ForGui);
+ seq_untranslated = theTopLevelKeymap().printBindings(func, KeySequence::ForGui, true);
+ }
+ // QKeySequence returns special characters for keys on the mac
+ // Since these are not included in many fonts, we
+ // re-translate them to textual names (see #10641)
+ odocstringstream ods;
+ string const lcode = params_.lang->code();
+ docstring trans;
+ bool is_translated = sequence != seq_untranslated;
+ for (char_type const c : sequence) {
+ switch(c) {
+ case 0x21b5://Return
+ gui = _("Return[[Key]]");
+ is_translated = translateString(from_ascii("Return[[Key]]"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x21b9://Tab both directions (Win)
+ gui = _("Tab[[Key]]");
+ is_translated = translateString(from_ascii("Tab[[Key]]"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x21de://Qt::Key_PageUp
+ gui = _("PgUp");
+ is_translated = translateString(from_ascii("PgUp"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x21df://Qt::Key_PageDown
+ gui = _("PgDown");
+ is_translated = translateString(from_ascii("PgDown"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x21e4://Qt::Key_Backtab
+ gui = _("Backtab");
+ is_translated = translateString(from_ascii("Backtab"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x21e5://Qt::Key_Tab
+ gui = _("Tab");
+ is_translated = translateString(from_ascii("Tab"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x21e7://Shift
+ gui = _("Shift");
+ is_translated = translateString(from_ascii("Shift"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x21ea://Qt::Key_CapsLock
+ gui = _("CapsLock");
+ is_translated = translateString(from_ascii("CapsLock"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x2303://Control
+ gui = _("Control[[Key]]");
+ is_translated = translateString(from_ascii("Control[[Key]]"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x2318://CMD
+ gui = _("Command[[Key]]");
+ is_translated = translateString(from_ascii("Command[[Key]]"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x2324://Qt::Key_Enter
+ gui = _("Return[[Key]]");
+ is_translated = translateString(from_ascii("Return[[Key]]"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x2325://Option key
+ gui = _("Option[[Key]]");
+ is_translated = translateString(from_ascii("Option[[Key]]"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x2326://Qt::Key_Delete
+ gui = _("Delete[[Key]]");
+ is_translated = translateString(from_ascii("Delete[[Key]]"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x232b://Qt::Key_Backspace
+ gui = _("Fn+Del");
+ is_translated = translateString(from_ascii("Fn+Del"), trans, lcode);
+ ods << trans;
+ break;
+ case 0x238b://Qt::Key_Escape
+ gui = _("Esc");
+ is_translated = translateString(from_ascii("Esc"), trans, lcode);
+ ods << trans;
+ break;
+ default:
+ ods.put(c);
+ }
+ }
+ setText(ods.str(), is_translated ? guilang : nullptr);
+ params_.force_ltr = !is_translated || (!guilang->rightToLeft() && !params_.lang->rightToLeft());