  
  namespace ui {
  
-@@ -210,7 +209,16 @@ base::string16 Accelerator::GetShortcutText() const {
-   }
+@@ -145,7 +144,17 @@ base::string16 Accelerator::GetShortcutText() const {
+   shortcut = KeyCodeToName(key_code_);
+ #endif
  
-   base::string16 shortcut;
 +  unsigned int flags = 0;
-   if (!string_id) {
+   if (shortcut.empty()) {
 +    if (IsShiftDown())
-+        flags = ui::EF_SHIFT_DOWN;
++      flags = ui::EF_SHIFT_DOWN;
 +    const uint16_t c = DomCodeToUsLayoutCharacter(
 +        UsLayoutKeyboardCodeToDomCode(key_code_), flags);
-+    if (c != 0)
-+      shortcut +=
++    if (c != 0) {
++      shortcut =
 +          static_cast<base::string16::value_type>(
 +              base::ToUpperASCII(static_cast<base::char16>(c)));
++    }
  #if defined(OS_WIN)
      // Our fallback is to try translate the key code to a regular character
      // unless it is one of digits (VK_0 to VK_9). Some keyboard
-@@ -219,20 +227,18 @@ base::string16 Accelerator::GetShortcutText() const {
+@@ -154,17 +163,20 @@ base::string16 Accelerator::GetShortcutText() const {
      // accent' for '0'). For display in the menu (e.g. Ctrl-0 for the
      // default zoom level), we leave VK_[0-9] alone without translation.
      wchar_t key;

-          static_cast<base::string16::value_type>(base::ToUpperASCII(c));
+      shortcut = key;
+    }
 #endif
+    if (key_code_ > VKEY_F1 && key_code_ <= VKEY_F24)
+      shortcut += base::UTF8ToUTF16(
+          base::StringPrintf("F%d", key_code_ - VKEY_F1 + 1));
   } else {
     shortcut = l10n_util::GetStringUTF16(string_id);
+    if (IsShiftDown())
+      shortcut = l10n_util::GetStringFUTF16(IDS_APP_SHIFT_MODIFIER, shortcut);
   }
 
   // Checking whether the character used for the accelerator is alphanumeric.
@@ -247,15 +253,13 @@ base::string16 Accelerator::GetShortcutText() const {
     shortcut_rtl.assign(shortcut);
   }
 
-  if (IsShiftDown())
-    shortcut = l10n_util::GetStringFUTF16(IDS_APP_SHIFT_MODIFIER, shortcut);
-

   if (IsCtrlDown())
     shortcut = l10n_util::GetStringFUTF16(IDS_APP_CONTROL_MODIFIER, shortcut);
-  else if (IsAltDown())
+  if (IsAltDown())
     shortcut = l10n_util::GetStringFUTF16(IDS_APP_ALT_MODIFIER, shortcut);
 
   if (IsCmdDown()) {
@@ -249,14 +258,12 @@ base::string16 Accelerator::ApplyShortFormModifiers(
     base::string16 shortcut) const {
   const base::char16 kCommandSymbol[] = {0x2318, 0};
   const base::char16 kCtrlSymbol[] = {0x2303, 0};
-  const base::char16 kShiftSymbol[] = {0x21e7, 0};
   const base::char16 kOptionSymbol[] = {0x2325, 0};
   const base::char16 kNoSymbol[] = {0};
 
   std::vector<base::string16> parts;
   parts.push_back(base::string16(IsCtrlDown() ? kCtrlSymbol : kNoSymbol));
   parts.push_back(base::string16(IsAltDown() ? kOptionSymbol : kNoSymbol));
-  parts.push_back(base::string16(IsShiftDown() ? kShiftSymbol : kNoSymbol));
   parts.push_back(base::string16(IsCmdDown() ? kCommandSymbol : kNoSymbol));
   parts.push_back(shortcut);
   return base::StrCat(parts);
