Index: /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp	(revision 79668)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp	(revision 79669)
@@ -325,6 +325,6 @@
     LONG scanCode() const;
 
-    void setScanCodePrefix(LONG scanCode);
-    LONG scanCodePrefix() const;
+    void addScanCodePrefix(LONG scanCode);
+    const QVector<LONG> &scanCodePrefix() const;
 
     void setSpaceWidthAfter(int iSpace);
@@ -378,5 +378,5 @@
     int        m_iSpaceWidthAfter;
     LONG       m_scanCode;
-    LONG       m_scanCodePrefix;
+    QVector<LONG> m_scanCodePrefix;
 
     /** @name Cutouts are used to create non-rectangle keys polygons.
@@ -1396,5 +1396,4 @@
     , m_iSpaceWidthAfter(0)
     , m_scanCode(0)
-    , m_scanCodePrefix(0)
     , m_iCutoutWidth(0)
     , m_iCutoutHeight(0)
@@ -1449,10 +1448,10 @@
 }
 
-void UISoftKeyboardKey::setScanCodePrefix(LONG scanCodePrefix)
-{
-    m_scanCodePrefix = scanCodePrefix;
-}
-
-LONG UISoftKeyboardKey::scanCodePrefix() const
+void UISoftKeyboardKey::addScanCodePrefix(LONG scanCodePrefix)
+{
+    m_scanCodePrefix << scanCodePrefix;
+}
+
+const QVector<LONG> &UISoftKeyboardKey::scanCodePrefix() const
 {
     return m_scanCodePrefix;
@@ -2428,5 +2427,5 @@
 
     QVector<LONG> sequence;
-    if (pKey->scanCodePrefix() != 0)
+    if (!pKey->scanCodePrefix().isEmpty())
         sequence <<  pKey->scanCodePrefix();
     sequence << (pKey->scanCode() | 0x80);
@@ -2436,5 +2435,5 @@
     {
         UISoftKeyboardKey *pModifier = m_pressedModifiers[i];
-        if (pModifier->scanCodePrefix() != 0)
+        if (!pModifier->scanCodePrefix().isEmpty())
             sequence << pModifier->scanCodePrefix();
         sequence << (pModifier->scanCode() | 0x80);
@@ -2459,10 +2458,10 @@
     {
         UISoftKeyboardKey *pModifier = m_pressedModifiers[i];
-        if (pModifier->scanCodePrefix() != 0)
+        if (!pModifier->scanCodePrefix().isEmpty())
             sequence << pModifier->scanCodePrefix();
         sequence << pModifier->scanCode();
     }
 
-    if (pKey->scanCodePrefix() != 0)
+    if (!pKey->scanCodePrefix().isEmpty())
         sequence << pKey->scanCodePrefix();
     sequence << pKey->scanCode();
@@ -2915,6 +2914,13 @@
         {
             QString strCode = m_xmlReader.readElementText();
-            bool fOk = false;
-            key.setScanCodePrefix(strCode.toInt(&fOk, 16));
+            QStringList strList;
+            strList << strCode.split('-', QString::SkipEmptyParts);
+            foreach (const QString &strPrefix, strList)
+            {
+                bool fOk = false;
+                LONG iCode = strPrefix.toInt(&fOk, 16);
+                if (fOk)
+                    key.addScanCodePrefix(iCode);
+            }
         }
         else if (m_xmlReader.name() == "cutout")
Index: /trunk/src/VBox/Frontends/VirtualBox/xml/103_iso.xml
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/xml/103_iso.xml	(revision 79668)
+++ /trunk/src/VBox/Frontends/VirtualBox/xml/103_iso.xml	(revision 79669)
@@ -82,4 +82,5 @@
             <scancodeprefix>0xe1-0x1d</scancodeprefix>
             <scancode>0x45</scancode>
+            0xe1-0x1d-0x45-0xe1-0x9d-0xc5
         </key>
     </row>
