Index: trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 78938)
+++ trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 78953)
@@ -759,5 +759,4 @@
 	src/runtime/seamless/UIMachineWindowSeamless.h \
 	src/softkeyboard/UISoftKeyboard.h \
-	src/softkeyboard/UISoftKeyboardDialog.h \
 	src/widgets/UIMiniToolBar.h \
 	src/wizards/firstrun/UIWizardFirstRun.h \
@@ -1213,5 +1212,4 @@
 	src/runtime/seamless/UIMachineWindowSeamless.cpp \
 	src/softkeyboard/UISoftKeyboard.cpp \
-	src/softkeyboard/UISoftKeyboardDialog.cpp \
 	src/widgets/UIMiniToolBar.cpp \
 	src/wizards/firstrun/UIWizardFirstRun.cpp \
Index: trunk/src/VBox/Frontends/VirtualBox/VirtualBox_xml.qrc
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/VirtualBox_xml.qrc	(revision 78938)
+++ trunk/src/VBox/Frontends/VirtualBox/VirtualBox_xml.qrc	(revision 78953)
@@ -1,5 +1,5 @@
 <RCC>
     <qresource suffix="/">
-        <file alias="us_layout.xml">xml/us_layout.xml</file>
+        <file alias="101_ansi.xml">xml/101_ansi.xml</file>
         <file alias="102_iso.xml">xml/102_iso.xml</file>
     </qresource>
Index: trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp	(revision 78938)
+++ trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp	(revision 78953)
@@ -19,4 +19,5 @@
 #include <QApplication>
 #include <QFile>
+#include <QMenu>
 #include <QPainter>
 #include <QStyle>
@@ -27,4 +28,5 @@
 /* GUI includes: */
 #include "QIDialogButtonBox.h"
+#include "QIFileDialog.h"
 #include "UIExtraDataManager.h"
 #include "UISession.h"
@@ -61,5 +63,5 @@
 *   UISoftKeyboardRow definition.                                                                                  *
 *********************************************************************************************************************************/
-
+/** UISoftKeyboardRow represents a row in the physical keyboard. */
 class UISoftKeyboardRow
 {
@@ -92,5 +94,5 @@
 *   UISoftKeyboardKey definition.                                                                                  *
 *********************************************************************************************************************************/
-
+/** UISoftKeyboardKey is a place holder for a keyboard key. Graphical key represantations are drawn according to this class. */
 class UISoftKeyboardKey
 {
@@ -173,5 +175,7 @@
 *   UISoftKeyboardWidget definition.                                                                                  *
 *********************************************************************************************************************************/
-class UISoftKeyboardWidget : public QWidget
+
+/** The container widget for keyboard keys. It also handles all the keyboard related events. */
+class UISoftKeyboardWidget : public QIWithRetranslateUI<QWidget>
 {
     Q_OBJECT;
@@ -187,10 +191,4 @@
     virtual QSize minimumSizeHint() const;
     virtual QSize sizeHint() const;
-    void setNewMinimumSize(const QSize &size);
-
-    QVector<UISoftKeyboardRow> &rows();
-    const QVector<UISoftKeyboardRow> &rows() const;
-
-    void setInitialSize(int iWidth, int iHeight);
     void keyStateChange(UISoftKeyboardKey* pKey);
 
@@ -200,16 +198,24 @@
     void mousePressEvent(QMouseEvent *pEvent) /* override */;
     void mouseReleaseEvent(QMouseEvent *pEvent) /* override */;
-    void mouseMoveEvent(QMouseEvent *pEvent);
+    void mouseMoveEvent(QMouseEvent *pEvent) /* override */;
+    virtual void retranslateUi() /* override */;
+
+private slots:
+
+    void sltHandleMenuBarContextMenuRequest(const QPoint &point);
+    void sltHandleLoadLayoutFile();
+    void sltHandleLoadDefaultLayout();
 
 private:
 
+    void               setNewMinimumSize(const QSize &size);
+    void               setInitialSize(int iWidth, int iHeight);
+    /** Searches for the key which contains the position of the @p pEvent and returns it if found. */
     UISoftKeyboardKey *keyUnderMouse(QMouseEvent *pEvent);
     void               handleKeyPress(UISoftKeyboardKey *pKey);
     void               handleKeyRelease(UISoftKeyboardKey *pKey);
-    QSize m_minimumSize;
-    int m_iInitialHeight;
-    int m_iInitialWidth;
-    float m_fMultiplierX;
-    float m_fMultiplierY;
+    void               createKeyboard(const QString &strLayoutFileName = QString());
+    void               reset();
+
     UISoftKeyboardKey *m_pKeyUnderMouse;
     UISoftKeyboardKey *m_pKeyPressed;
@@ -219,5 +225,18 @@
     QColor m_textPressedColor;
     QVector<UISoftKeyboardKey*> m_pressedModifiers;
-    QVector<UISoftKeyboardRow> m_rows;
+    QVector<UISoftKeyboardRow>  m_rows;
+    QStringList defaultLayouts;
+
+    QSize m_minimumSize;
+    float m_fScaleFactorX;
+    float m_fScaleFactorY;
+    int   m_iInitialHeight;
+    int   m_iInitialWidth;
+    int   m_iXSpacing;
+    int   m_iYSpacing;
+    int   m_iLeftMargin;
+    int   m_iTopMargin;
+    int   m_iRightMargin;
+    int   m_iBottomMargin;
 };
 
@@ -515,5 +534,5 @@
 
 UISoftKeyboardWidget::UISoftKeyboardWidget(QWidget *pParent /* = 0 */)
-    :QWidget(pParent)
+    :QIWithRetranslateUI<QWidget>(pParent)
     , m_pKeyUnderMouse(0)
     , m_pKeyPressed(0)
@@ -522,6 +541,19 @@
     , m_textDefaultColor(QColor(46, 49, 49))
     , m_textPressedColor(QColor(149, 165, 166))
-{
+    , m_iInitialHeight(0)
+    , m_iInitialWidth(0)
+    , m_iXSpacing(5)
+    , m_iYSpacing(5)
+    , m_iLeftMargin(10)
+    , m_iTopMargin(10)
+    , m_iRightMargin(10)
+    , m_iBottomMargin(10)
+{
+    defaultLayouts << ":/101_ansi.xml" << ":/102_iso.xml";
     setMouseTracking(true);
+    setContextMenuPolicy(Qt::CustomContextMenu);
+    createKeyboard();
+    connect(this, &UISoftKeyboardWidget::customContextMenuRequested,
+            this, &UISoftKeyboardWidget::sltHandleMenuBarContextMenuRequest);
 }
 
@@ -534,26 +566,4 @@
 {
     return m_minimumSize;
-}
-
-void UISoftKeyboardWidget::setNewMinimumSize(const QSize &size)
-{
-    m_minimumSize = size;
-    updateGeometry();
-}
-
-void UISoftKeyboardWidget::setInitialSize(int iWidth, int iHeight)
-{
-    m_iInitialWidth = iWidth;
-    m_iInitialHeight = iHeight;
-}
-
-QVector<UISoftKeyboardRow> &UISoftKeyboardWidget::rows()
-{
-    return m_rows;
-}
-
-const QVector<UISoftKeyboardRow> &UISoftKeyboardWidget::rows() const
-{
-    return m_rows;
 }
 
@@ -564,6 +574,6 @@
         return;
 
-    m_fMultiplierX = width() / (float) m_iInitialWidth;
-    m_fMultiplierY = height() / (float) m_iInitialHeight;
+    m_fScaleFactorX = width() / (float) m_iInitialWidth;
+    m_fScaleFactorY = height() / (float) m_iInitialHeight;
 
     QPainter painter(this);
@@ -573,5 +583,5 @@
     painter.setFont(painterFont);
     painter.setRenderHint(QPainter::Antialiasing);
-    painter.scale(m_fMultiplierX, m_fMultiplierY);
+    painter.scale(m_fScaleFactorX, m_fScaleFactorY);
     int unitSize = qApp->style()->pixelMetric(QStyle::PM_LayoutLeftMargin);
     float fLedRadius =  0.8 * unitSize;
@@ -597,7 +607,8 @@
             painter.drawPolygon(key.polygon());
 
-            QRect textRect(0.8 * unitSize, 1 * unitSize
+            QRect textRect(0.55 * unitSize, 1 * unitSize
                            , key.keyGeometry().width(), key.keyGeometry().height());
-            painter.drawText(textRect, Qt::TextWordWrap, key.keyCap());
+            //painter.drawText(textRect, Qt::TextWordWrap, key.keyCap());
+            painter.drawText(textRect, Qt::TextWordWrap, QString::number(key.position()));
 
             if (key.type() != UIKeyType_Ordinary)
@@ -623,4 +634,6 @@
 void UISoftKeyboardWidget::mousePressEvent(QMouseEvent *pEvent)
 {
+    if (pEvent->button() != Qt::LeftButton)
+        return;
     m_pKeyPressed = keyUnderMouse(pEvent);
     handleKeyPress(m_pKeyPressed);
@@ -628,6 +641,8 @@
 }
 
-void UISoftKeyboardWidget::mouseReleaseEvent(QMouseEvent *)
-{
+void UISoftKeyboardWidget::mouseReleaseEvent(QMouseEvent *pEvent)
+{
+    if (pEvent->button() != Qt::LeftButton)
+        return;
     if (!m_pKeyPressed)
         return;
@@ -642,7 +657,59 @@
 }
 
+void UISoftKeyboardWidget::retranslateUi()
+{
+}
+
+void UISoftKeyboardWidget::sltHandleMenuBarContextMenuRequest(const QPoint &point)
+{
+    QMenu menu;
+    foreach (const QString &strLayout, defaultLayouts)
+    {
+        QString strName = strLayout.left(strLayout.indexOf('.'));
+        QAction *pAction = menu.addAction(QString("%1 %2").arg(UISoftKeyboard::tr("Load Layout ")).arg(strName.remove(":/")));
+        pAction->setData(strLayout);
+        connect(pAction, &QAction::triggered, this, &UISoftKeyboardWidget::sltHandleLoadDefaultLayout);
+    }
+    QAction *pAction = menu.addAction(UISoftKeyboard::tr("Load Layout File"));
+    connect(pAction, &QAction::triggered, this, &UISoftKeyboardWidget::sltHandleLoadLayoutFile);
+    menu.exec(mapToGlobal(point));
+}
+
+void UISoftKeyboardWidget::sltHandleLoadLayoutFile()
+{
+    const QString strFileName = QIFileDialog::getOpenFileName(QString(), "XML files (*.xml)", this,
+                                                              UISoftKeyboard::tr("Choose file to load physical keyboard layout.."));
+    if (strFileName.isEmpty())
+        return;
+    createKeyboard(strFileName);
+}
+
+void UISoftKeyboardWidget::sltHandleLoadDefaultLayout()
+{
+    QAction *pSender = qobject_cast<QAction*>(sender());
+    if (!pSender)
+        return;
+    QString strLayout = pSender->data().toString();
+    if (strLayout.isEmpty())
+        return;
+    createKeyboard(strLayout);
+}
+
+
+void UISoftKeyboardWidget::setNewMinimumSize(const QSize &size)
+{
+    m_minimumSize = size;
+    updateGeometry();
+}
+
+void UISoftKeyboardWidget::setInitialSize(int iWidth, int iHeight)
+{
+    m_iInitialWidth = iWidth;
+    m_iInitialHeight = iHeight;
+}
+
 UISoftKeyboardKey *UISoftKeyboardWidget::keyUnderMouse(QMouseEvent *pEvent)
 {
-    QPoint eventPosition(pEvent->pos().x() / m_fMultiplierX, pEvent->pos().y() / m_fMultiplierY);
+    QPoint eventPosition(pEvent->pos().x() / m_fScaleFactorX, pEvent->pos().y() / m_fScaleFactorY);
     QWidget::mousePressEvent(pEvent);
     for (int i = 0; i < m_rows.size(); ++i)
@@ -733,4 +800,59 @@
     }
     emit sigPutKeyboardSequence(sequence);
+}
+
+void UISoftKeyboardWidget::createKeyboard(const QString &strLayoutFileName /* = QString() */)
+{
+    UIKeyboardLayoutReader reader;
+    QVector<UISoftKeyboardRow> &rows = m_rows;
+    reset();
+    bool fParseSuccess = false;
+    if (strLayoutFileName.isEmpty())
+        fParseSuccess = reader.parseXMLFile(":/101_ansi.xml", rows);
+    else
+        fParseSuccess = reader.parseXMLFile(strLayoutFileName, rows);
+
+    if (!fParseSuccess)
+        return;
+
+    int iY = m_iTopMargin;
+    int iMaxWidth = 0;
+
+    for (int i = 0; i < rows.size(); ++i)
+    {
+        UISoftKeyboardRow &row = rows[i];
+        int iX = m_iLeftMargin;
+        int iRowHeight = row.defaultHeight();
+        for (int j = 0; j < row.keys().size(); ++j)
+        {
+            UISoftKeyboardKey &key = (row.keys())[j];
+            key.setKeyGeometry(QRect(iX, iY, key.width(), key.height()));
+            key.setPolygon(QPolygon(UIKeyboardLayoutReader::computeKeyVertices(key)));
+            key.setParentWidget(this);
+            iX += key.width();
+            if (j < row.keys().size() - 1)
+                iX += m_iXSpacing;
+            if (key.spaceWidthAfter() != 0)
+                iX += (m_iXSpacing + key.spaceWidthAfter());
+        }
+        if (row.spaceHeightAfter() != 0)
+            iY += row.spaceHeightAfter() + m_iYSpacing;
+        iMaxWidth = qMax(iMaxWidth, iX);
+        iY += iRowHeight;
+        if (i < rows.size() - 1)
+            iY += m_iYSpacing;
+    }
+    int iInitialWidth = iMaxWidth + m_iRightMargin;
+    int iInitialHeight = iY + m_iBottomMargin;
+    float fScale = 1.0f;
+    setNewMinimumSize(QSize(fScale * iInitialWidth, fScale * iInitialHeight));
+    setInitialSize(fScale * iInitialWidth, fScale * iInitialHeight);
+    update();
+}
+
+void UISoftKeyboardWidget::reset()
+{
+    m_pressedModifiers.clear();
+    m_rows.clear();
 }
 
@@ -960,14 +1082,8 @@
     , m_pContainerWidget(0)
     , m_strMachineName(strMachineName)
-    , m_iXSpacing(5)
-    , m_iYSpacing(5)
-    , m_iLeftMargin(10)
-    , m_iTopMargin(10)
-    , m_iRightMargin(10)
-    , m_iBottomMargin(10)
-{
+{
+    setWindowTitle(QString("%1 - %2").arg(m_strMachineName).arg(tr("Soft Keyboard")));
     setAttribute(Qt::WA_DeleteOnClose);
     prepareObjects();
-    createKeyboard();
     prepareConnections();
     prepareToolBar();
@@ -1025,45 +1141,4 @@
 }
 
-void UISoftKeyboard::createKeyboard()
-{
-    if (!m_pContainerWidget)
-        return;
-    UIKeyboardLayoutReader reader;
-    QVector<UISoftKeyboardRow> &rows = m_pContainerWidget->rows();
-    if (!reader.parseXMLFile(":/102_iso.xml", rows))
-        return;
-    int iY = m_iTopMargin;
-    int iMaxWidth = 0;
-
-    for (int i = 0; i < rows.size(); ++i)
-    {
-        UISoftKeyboardRow &row = rows[i];
-        int iX = m_iLeftMargin;
-        int iRowHeight = row.defaultHeight();
-        for (int j = 0; j < row.keys().size(); ++j)
-        {
-            UISoftKeyboardKey &key = (row.keys())[j];
-            key.setKeyGeometry(QRect(iX, iY, key.width(), key.height()));
-            key.setPolygon(QPolygon(UIKeyboardLayoutReader::computeKeyVertices(key)));
-            key.setParentWidget(m_pContainerWidget);
-            iX += key.width();
-            if (j < row.keys().size() - 1)
-                iX += m_iXSpacing;
-            if (key.spaceWidthAfter() != 0)
-                iX += (m_iXSpacing + key.spaceWidthAfter());
-        }
-        if (row.spaceHeightAfter() != 0)
-            iY += row.spaceHeightAfter() + m_iYSpacing;
-        iMaxWidth = qMax(iMaxWidth, iX);
-        iY += iRowHeight;
-        if (i < rows.size() - 1)
-            iY += m_iYSpacing;
-    }
-    int iInitialWidth = iMaxWidth + m_iRightMargin;
-    int iInitialHeight = iY + m_iBottomMargin;
-    m_pContainerWidget->setNewMinimumSize(QSize(iInitialWidth, iInitialHeight));
-    m_pContainerWidget->setInitialSize(iInitialWidth, iInitialHeight);
-}
-
 CKeyboard& UISoftKeyboard::keyboard() const
 {
Index: trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.h	(revision 78938)
+++ trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.h	(revision 78953)
@@ -55,5 +55,5 @@
 protected:
 
-    virtual void retranslateUi();
+    virtual void retranslateUi() /* override */;
 
 private slots:
@@ -76,11 +76,4 @@
     UISoftKeyboardWidget       *m_pContainerWidget;
     QString       m_strMachineName;
-
-    int m_iXSpacing;
-    int m_iYSpacing;
-    int m_iLeftMargin;
-    int m_iTopMargin;
-    int m_iRightMargin;
-    int m_iBottomMargin;
 };
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboardDialog.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboardDialog.cpp	(revision 78938)
+++ 	(revision )
@@ -1,130 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - UISoftKeyboardDialog class implementation.
- */
-
-/*
- * Copyright (C) 2010-2019 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Qt includes: */
-#include <QPushButton>
-#include <QVBoxLayout>
-
-/* GUI includes: */
-#include "UIDesktopWidgetWatchdog.h"
-#include "UIExtraDataManager.h"
-#include "UIIconPool.h"
-#include "UIGuestControlConsole.h"
-#include "UISession.h"
-#include "UISoftKeyboardDialog.h"
-#include "UISoftKeyboard.h"
-#include "VBoxGlobal.h"
-#ifdef VBOX_WS_MAC
-# include "VBoxUtils-darwin.h"
-#endif
-
-
-/*********************************************************************************************************************************
-*   Class UISoftKeyboardDialog implementation.                                                                            *
-*********************************************************************************************************************************/
-
-UISoftKeyboardDialog::UISoftKeyboardDialog(QWidget *pParent,
-                                           UISession *pSession,
-                                           const QString &strMachineName /* = QString() */)
-    : QMainWindow(pParent)
-    , m_pSession(pSession)
-    , m_strMachineName(strMachineName)
-{
-}
-
-void UISoftKeyboardDialog::retranslateUi()
-{
-    /* Translate window title: */
-    setWindowTitle(tr("%1 - Guest Control").arg(m_strMachineName));
-    /* Translate buttons: */
-    //button(ButtonType_Close)->setText(tr("Close"));
-}
-
-void UISoftKeyboardDialog::configure()
-{
-    /* Apply window icons: */
-    setWindowIcon(UIIconPool::iconSetFull(":/vm_show_logs_32px.png", ":/vm_show_logs_16px.png"));
-}
-
-void UISoftKeyboardDialog::configureCentralWidget()
-{
-    /* Create widget: */
-    //UISoftKeyboard  *pSoftKeyboard = new UISoftKeyboard(EmbedTo_Dialog, 0, m_pSession, "");
-
-    //if (pSoftKeyboard)
-    {
-        /* Configure widget: */
-        //setWidget(pSoftKeyboard);
-        //setWidgetMenu(pWidget->menu());
-#ifdef VBOX_WS_MAC
-        //setWidgetToolbar(pWidget->toolbar());
-#endif
-        /* Add into layout: */
-        //centralWidget()->layout()->addWidget(pSoftKeyboard);
-    }
-}
-
-void UISoftKeyboardDialog::finalize()
-{
-    /* Apply language settings: */
-    retranslateUi();
-}
-
-void UISoftKeyboardDialog::loadSettings()
-{
-    // const QRect desktopRect = gpDesktop->availableGeometry(this);
-    // int iDefaultWidth = desktopRect.width() / 2;
-    // int iDefaultHeight = 0.5 * iDefaultWidth;
-
-    // QRect defaultGeometry(0, 0, iDefaultWidth, iDefaultHeight);
-    // if (centerWidget())
-    //     defaultGeometry.moveCenter(centerWidget()->geometry().center());
-
-    // /* Load geometry from extradata: */
-    // QRect geometry = gEDataManager->softKeyboardDialogGeometry(this, defaultGeometry);
-
-    // /* Restore geometry: */
-    // LogRel2(("GUI: UISoftKeyboardDialog: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
-    //          geometry.x(), geometry.y(), geometry.width(), geometry.height()));
-    // setDialogGeometry(geometry);
-}
-
-void UISoftKeyboardDialog::saveSettings() const
-{
-//     /* Save window geometry to extradata: */
-//     const QRect saveGeometry = geometry();
-// #ifdef VBOX_WS_MAC
-//     /* darwinIsWindowMaximized expects a non-const QWidget*. thus const_cast: */
-//     QWidget *pw = const_cast<QWidget*>(qobject_cast<const QWidget*>(this));
-//     gEDataManager->setSoftKeyboardDialogGeometry(saveGeometry, ::darwinIsWindowMaximized(pw));
-// #else /* !VBOX_WS_MAC */
-//     gEDataManager->setSoftKeyboardDialogGeometry(saveGeometry, isMaximized());
-// #endif /* !VBOX_WS_MAC */
-//     LogRel2(("GUI: Soft Keyboard Dialog: Geometry saved as: Origin=%dx%d, Size=%dx%d\n",
-//              saveGeometry.x(), saveGeometry.y(), saveGeometry.width(), saveGeometry.height()));
-}
-
-bool UISoftKeyboardDialog::shouldBeMaximized() const
-{
-    return gEDataManager->softKeyboardDialogShouldBeMaximized();
-}
-
-void UISoftKeyboardDialog::sltSetCloseButtonShortCut(QKeySequence )
-{
-    // if (button(ButtonType_Close))
-    //     button(ButtonType_Close)->setShortcut(shortcut);
-}
Index: trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboardDialog.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboardDialog.h	(revision 78938)
+++ 	(revision )
@@ -1,91 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - UISoftKeyboardDialog class declaration.
- */
-
-/*
- * Copyright (C) 2010-2019 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef FEQT_INCLUDED_SRC_softkeyboard_UISoftKeyboardDialog_h
-#define FEQT_INCLUDED_SRC_softkeyboard_UISoftKeyboardDialog_h
-#ifndef RT_WITHOUT_PRAGMA_ONCE
-# pragma once
-#endif
-
-/* Qt includes: */
-#include <QMainWindow>
-#include <QString>
-
-/* COM includes: */
-#include "COMEnums.h"
-#include "CGuest.h"
-
-/* Forward declarations: */
-class UIActionPool;
-class UISession;
-class UISoftKeyboardDialog;
-class CGuest;
-
-
-class UISoftKeyboardDialog : public QMainWindow
-{
-    Q_OBJECT;
-
-public:
-
-    /** Constructs Guest Control dialog.
-      * @param  pCenterWidget  Passes the widget reference to center according to.
-      * @param  pActionPool    Passes the action-pool reference. */
-    UISoftKeyboardDialog(QWidget *pParent, UISession *pSession, const QString &strMachineName = QString());
-
-protected:
-
-    /** @name Event-handling stuff.
-      * @{ */
-        /** Handles translation event. */
-        virtual void retranslateUi() /* override */;
-    /** @} */
-
-    /** @name Prepare/cleanup cascade.
-     * @{ */
-        /** Configures all. */
-        virtual void configure() /* override */;
-        /** Configures central-widget. */
-        virtual void configureCentralWidget() /* override */;
-        /** Perform final preparations. */
-        virtual void finalize() /* override */;
-        /** Loads dialog setting such as geometry from extradata. */
-        virtual void loadSettings() /* override */;
-
-        /** Saves dialog setting into extradata. */
-        virtual void saveSettings() const /* override */;
-    /** @} */
-
-    /** @name Functions related to geometry restoration.
-     * @{ */
-        /** Returns whether the window should be maximized when geometry being restored. */
-        virtual bool shouldBeMaximized() const /* override */;
-    /** @} */
-
-private slots:
-
-    void sltSetCloseButtonShortCut(QKeySequence shortcut);
-
-private:
-
-    UISession    *m_pSession;
-    UIActionPool *m_pActionPool;
-    QString      m_strMachineName;
-};
-
-
-#endif /* !FEQT_INCLUDED_SRC_softkeyboard_UISoftKeyboardDialog_h */
Index: trunk/src/VBox/Frontends/VirtualBox/xml/101_ansi.xml
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/xml/101_ansi.xml	(revision 78953)
+++ trunk/src/VBox/Frontends/VirtualBox/xml/101_ansi.xml	(revision 78953)
@@ -0,0 +1,473 @@
+<?xml version="1.0"?>
+
+<layout defaultHeight="50" defaultWidth="50">
+    <row>
+        <key>
+            <keycap>Esc</keycap>
+            <position>110</position>
+            <scancode>0x01</scancode>
+        </key>
+        <space>
+            <width>50</width>
+        </space>
+        <key>
+            <keycap>F1</keycap>
+            <position>112</position>
+            <scancode>0x3b</scancode>
+        </key>
+        <key>
+            <keycap>F2</keycap>
+            <position>113</position>
+            <scancode>0x3c</scancode>
+        </key>
+        <key>
+            <keycap>F3</keycap>
+            <position>114</position>
+            <scancode>0x3d</scancode>
+        </key>
+        <key>
+            <keycap>F4</keycap>
+            <position>115</position>
+            <scancode>0x3e</scancode>
+        </key>
+        <space>
+            <width>25</width>
+        </space>
+        <key>
+            <keycap>F5</keycap>
+            <position>116</position>
+            <scancode>0x3f</scancode>
+        </key>
+        <key>
+            <keycap>F6</keycap>
+            <position>117</position>
+            <scancode>0x40</scancode>
+        </key>
+        <key>
+            <keycap>F7</keycap>
+            <position>188</position>
+            <scancode>0x41</scancode>
+        </key>
+        <key>
+            <keycap>F8</keycap>
+            <position>119</position>
+            <scancode>0x42</scancode>
+        </key>
+        <space>
+            <width>25</width>
+        </space>
+        <key>
+            <keycap>F9</keycap>
+            <position>120</position>
+            <scancode>0x43</scancode>
+        </key>
+        <key>
+            <keycap>F10</keycap>
+            <position>121</position>
+            <scancode>0x44</scancode>
+        </key>
+        <key>
+            <keycap>F11</keycap>
+            <position>122</position>
+            <scancode>0x57</scancode>
+        </key>
+        <key>
+            <keycap>F12</keycap>
+            <position>123</position>
+            <scancode>0x58</scancode>
+        </key>
+        <space>
+            <width>25</width>
+        </space>
+        <key>
+            <keycap>Prt</keycap>
+            <keycap>Scn</keycap>
+            <position>124</position>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>37</scancode>
+        </key>
+        <key>
+            <keycap>Scroll</keycap>
+            <keycap>Lock</keycap>
+            <position>125</position>
+            <scancode>0x46</scancode>
+        </key>
+        <key>
+            <keycap>Pause</keycap>
+            <position>126</position>
+            <scancodeprefix>0xe0-0x1d</scancodeprefix>
+            <scancode>0x45</scancode>
+        </key>
+    </row>
+    <space>
+        <height>20</height>
+    </space>
+    <row>
+        <key>
+            <position>1</position>
+            <scancode>0x29</scancode>
+        </key>
+        <key>
+            <position>2</position>
+            <scancode>0x02</scancode>
+        </key>
+        <key>
+            <position>3</position>
+            <scancode>0x03</scancode>
+        </key>
+        <key>
+            <position>4</position>
+            <scancode>0x04</scancode>
+        </key>
+        <key>
+            <position>5</position>
+            <scancode>0x05</scancode>
+        </key>
+        <key>
+            <position>6</position>
+            <scancode>0x06</scancode>
+        </key>
+        <key>
+            <position>7</position>
+            <scancode>0x07</scancode>
+        </key>
+        <key>
+            <position>8</position>
+            <scancode>0x08</scancode>
+        </key>
+        <key>
+            <position>9</position>
+            <scancode>0x09</scancode>
+        </key>
+        <key>
+            <position>10</position>
+            <scancode>0x0a</scancode>
+        </key>
+        <key>
+            <position>11</position>
+            <scancode>0x0b</scancode>
+        </key>
+        <key>
+            <position>12</position>
+            <scancode>0x0c</scancode>
+        </key>
+        <key>
+            <position>13</position>
+            <scancode>0x0d</scancode>
+        </key>
+        <key>
+            <width>110</width>
+            <keycap>Backspace</keycap>
+            <position>15</position>
+            <scancode>0x0e</scancode>
+        </key>
+        <space>
+            <width>25</width>
+        </space>
+        <key>
+            <keycap>Insert</keycap>
+            <position>75</position>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>52</scancode>
+        </key>
+        <key>
+            <keycap>Home</keycap>
+            <position>80</position>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x47</scancode>
+        </key>
+        <key>
+            <keycap>PgUp</keycap>
+            <position>85</position>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x49</scancode>
+        </key>
+    </row>
+    <row>
+        <key>
+            <width>75</width>
+            <keycap>Tab</keycap>
+            <position>16</position>
+            <scancode>0x0f</scancode>
+        </key>
+        <key>
+            <position>17</position>
+            <scancode>0x10</scancode>
+        </key>
+        <key>
+            <position>18</position>
+            <scancode>0x11</scancode>
+        </key>
+        <key>
+            <position>19</position>
+            <scancode>0x12</scancode>
+        </key>
+        <key>
+            <position>20</position>
+            <scancode>0x13</scancode>
+        </key>
+        <key>
+            <position>21</position>
+            <scancode>0x14</scancode>
+        </key>
+        <key>
+            <position>22</position>
+            <scancode>0x15</scancode>
+        </key>
+        <key>
+            <position>23</position>
+            <scancode>0x16</scancode>
+        </key>
+        <key>
+            <position>24</position>
+            <scancode>0x17</scancode>
+        </key>
+        <key>
+            <position>25</position>
+            <scancode>0x18</scancode>
+        </key>
+        <key>
+            <position>26</position>
+            <scancode>0x19</scancode>
+        </key>
+        <key>
+            <position>27</position>
+            <scancode>0x1a</scancode>
+        </key>
+        <key>
+            <position>28</position>
+            <scancode>0x1b</scancode>
+        </key>
+        <key>
+            <position>29</position>
+            <scancode>0x2b</scancode>
+            <width>85</width>
+        </key>
+        <space>
+            <width>25</width>
+        </space>
+        <key>
+            <keycap>Del</keycap>
+            <position>76</position>
+            <scancode>0x53</scancode>
+            <scancodeprefix>0xe0</scancodeprefix>
+        </key>
+        <key>
+            <keycap>End</keycap>
+            <position>81</position>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x4f</scancode>
+        </key>
+        <key>
+            <keycap>PgDn</keycap>
+            <position>86</position>
+            <scancode>0x51</scancode>
+            <scancodeprefix>0xe0</scancodeprefix>
+        </key>
+    </row>
+    <row>
+        <key>
+            <width>100</width>
+            <keycap>CapsLock</keycap>
+            <type>toggleable</type>
+            <position>30</position>
+            <scancode>0x3a</scancode>
+        </key>
+        <key>
+            <position>31</position>
+            <scancode>0x1e</scancode>
+        </key>
+        <key>
+            <position>32</position>
+            <scancode>0x1f</scancode>
+        </key>
+        <key>
+            <position>33</position>
+            <scancode>0x20</scancode>
+        </key>
+        <key>
+            <position>34</position>
+            <scancode>0x21</scancode>
+        </key>
+        <key>
+            <position>35</position>
+            <scancode>0x22</scancode>
+        </key>
+        <key>
+            <position>36</position>
+            <scancode>0x23</scancode>
+        </key>
+        <key>
+            <position>37</position>
+            <scancode>0x24</scancode>
+        </key>
+        <key>
+            <position>38</position>
+            <scancode>0x25</scancode>
+        </key>
+        <key>
+            <position>39</position>
+            <scancode>0x26</scancode>
+        </key>
+        <key>
+            <position>40</position>
+            <scancode>0x27</scancode>
+        </key>
+        <key>
+            <position>41</position>
+            <scancode>0x28</scancode>
+        </key>
+        <key>
+            <width>115</width>
+            <keycap>Enter</keycap>
+            <position>43</position>
+            <scancode>0x1c</scancode>
+        </key>
+    </row>
+    <row>
+        <key>
+            <width>125</width>
+            <keycap>Shift</keycap>
+            <type>modifier</type>
+            <position>44</position>
+            <scancode>0x2a</scancode>
+        </key>
+        <key>
+            <position>46</position>
+            <scancode>0x2c</scancode>
+        </key>
+        <key>
+            <position>47</position>
+            <scancode>0x2d</scancode>
+        </key>
+        <key>
+            <position>48</position>
+            <scancode>0x2e</scancode>
+        </key>
+        <key>
+            <position>49</position>
+            <scancode>0x2f</scancode>
+        </key>
+        <key>
+            <position>50</position>
+            <scancode>0x30</scancode>
+        </key>
+        <key>
+            <position>51</position>
+            <scancode>0x31</scancode>
+        </key>
+        <key>
+            <position>52</position>
+            <scancode>0x32</scancode>
+        </key>
+        <key>
+            <position>53</position>
+            <scancode>0x33</scancode>
+        </key>
+        <key>
+            <position>54</position>
+            <scancode>0x34</scancode>
+        </key>
+        <key>
+            <position>55</position>
+            <scancode>0x35</scancode>
+        </key>
+        <key>
+            <width>145</width>
+            <keycap>Shift</keycap>
+            <type>modifier</type>
+            <position>57</position>
+            <scancode>0x36</scancode>
+        </key>
+        <space>
+            <width>80</width>
+        </space>
+        <key>
+            <keycap>Up</keycap>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <position>83</position>
+            <scancode>0x48</scancode>
+        </key>
+    </row>
+    <row>
+        <key>
+            <width>90</width>
+            <keycap>Ctrl</keycap>
+            <type>modifier</type>
+            <position>58</position>
+            <scancode>0x1d</scancode>
+        </key>
+        <key>
+            <keycap>Win</keycap>
+            <width>75</width>
+            <type>modifier</type>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x5b</scancode>
+        </key>
+        <key>
+            <position>60</position>
+            <keycap>Alt</keycap>
+            <width>75</width>
+            <type>modifier</type>
+            <scancode>0x38</scancode>
+        </key>
+        <key>
+            <width>235</width>
+            <position>61</position>
+            <scancode>0x39</scancode>
+        </key>
+        <key>
+            <keycap>AltGr</keycap>
+            <width>75</width>
+            <type>modifier</type>
+            <position>62</position>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x38</scancode>
+        </key>
+        <key>
+            <keycap>Win</keycap>
+            <width>75</width>
+            <type>modifier</type>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x5c</scancode>
+        </key>
+        <key>
+            <keycap>Menu</keycap>
+            <width>75</width>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x5d</scancode>
+        </key>
+        <key>
+            <keycap>Ctrl</keycap>
+            <width>90</width>
+            <position>64</position>
+            <type>modifier</type>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x1d</scancode>
+        </key>
+        <space>
+            <width>25</width>
+        </space>
+        <key>
+            <keycap>Left</keycap>
+            <position>79</position>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x4b</scancode>
+        </key>
+        <key>
+            <keycap>Down</keycap>
+            <position>84</position>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x50</scancode>
+        </key>
+        <key>
+            <keycap>Right</keycap>
+            <position>89</position>
+            <scancodeprefix>0xe0</scancodeprefix>
+            <scancode>0x4d</scancode>
+        </key>
+
+
+    </row>
+
+</layout>
Index: trunk/src/VBox/Frontends/VirtualBox/xml/102_iso.xml
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/xml/102_iso.xml	(revision 78938)
+++ trunk/src/VBox/Frontends/VirtualBox/xml/102_iso.xml	(revision 78953)
@@ -401,5 +401,5 @@
     <row>
         <key>
-            <width>105</width>
+            <width>90</width>
             <keycap>Ctrl</keycap>
             <type>modifier</type>
@@ -409,4 +409,5 @@
         <key>
             <keycap>Win</keycap>
+            <width>75</width>
             <type>modifier</type>
             <scancodeprefix>0xe0</scancodeprefix>
@@ -416,9 +417,10 @@
             <position>60</position>
             <keycap>Alt</keycap>
+            <width>75</width>
             <type>modifier</type>
             <scancode>0x38</scancode>
         </key>
         <key>
-            <width>330</width>
+            <width>235</width>
             <position>61</position>
             <scancode>0x39</scancode>
@@ -426,4 +428,5 @@
         <key>
             <keycap>AltGr</keycap>
+            <width>75</width>
             <type>modifier</type>
             <position>62</position>
@@ -433,4 +436,5 @@
         <key>
             <keycap>Win</keycap>
+            <width>75</width>
             <type>modifier</type>
             <scancodeprefix>0xe0</scancodeprefix>
@@ -439,4 +443,5 @@
         <key>
             <keycap>Menu</keycap>
+            <width>75</width>
             <scancodeprefix>0xe0</scancodeprefix>
             <scancode>0x5d</scancode>
@@ -444,5 +449,5 @@
         <key>
             <keycap>Ctrl</keycap>
-            <width>105</width>
+            <width>90</width>
             <position>64</position>
             <type>modifier</type>
Index: trunk/src/VBox/Frontends/VirtualBox/xml/us_layout.xml
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/xml/us_layout.xml	(revision 78938)
+++ 	(revision )
@@ -1,509 +1,0 @@
-<?xml version="1.0"?>
-<layout>
-    <row>
-        <height>40</height>
-        <key>
-            <width>50</width>
-            <label>Esc</label>
-            <position>110</position>
-            <scancode>0x01</scancode>
-        </key>
-        <space>
-            <width>20</width>
-        </space>
-        <key>
-            <width>50</width>
-            <label>F1</label>
-            <position>112</position>
-            <scancode>0x3b</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>F2</label>
-            <position>113</position>
-            <scancode>0x3c</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>F3</label>
-            <position>114</position>
-            <scancode>0x3d</scancode>
-        </key>
-        <space>
-            <width>20</width>
-        </space>
-        <key>
-            <width>50</width>
-            <label>F4</label>
-            <position>115</position>
-            <scancode>0x3e</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>F5</label>
-            <position>116</position>
-            <scancode>0x3f</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>F6</label>
-            <position>117</position>
-            <scancode>0x40</scancode>
-        </key>
-        <space>
-            <width>20</width>
-        </space>
-        <key>
-            <width>50</width>
-            <label>F7</label>
-            <position>188</position>
-            <scancode>0x41</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>F8</label>
-            <position>119</position>
-            <scancode>0x42</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>F9</label>
-            <position>120</position>
-            <scancode>0x43</scancode>
-        </key>
-        <space>
-            <width>20</width>
-        </space>
-        <key>
-            <width>50</width>
-            <label>F10</label>
-            <position>121</position>
-            <scancode>0x44</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>F11</label>
-            <position>122</position>
-            <scancode>0x57</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>F12</label>
-            <position>123</position>
-            <scancode>0x58</scancode>
-        </key>
-    </row>
-    <row>
-        <height>40</height>
-        <key>
-            <width>50</width>
-            <label>~</label>
-            <label>`</label>
-            <position>1</position>
-            <scancode>0x29</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>!</label>
-            <label>1</label>
-            <position>2</position>
-            <scancode>0x02</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>@</label>
-            <label>2</label>
-            <position>3</position>
-            <scancode>0x03</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>#</label>
-            <label>3</label>
-            <position>4</position>
-            <scancode>0x04</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>$</label>
-            <label>4</label>
-            <position>5</position>
-            <scancode>0x05</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>%</label>
-            <label>5</label>
-            <position>6</position>
-            <scancode>0x06</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>^</label>
-            <label>6</label>
-            <position>7</position>
-            <scancode>0x07</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>&amp;</label>
-            <label>7</label>
-            <position>8</position>
-            <scancode>0x08</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>*</label>
-            <label>8</label>
-            <position>9</position>
-            <scancode>0x09</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>(</label>
-            <label>9</label>
-            <position>10</position>
-            <scancode>0x0a</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>)</label>
-            <label>0</label>
-            <position>11</position>
-            <scancode>0x0b</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>_</label>
-            <label>-</label>
-            <position>12</position>
-            <scancode>0x0c</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>+</label>
-            <label>=</label>
-            <position>13</position>
-            <scancode>0x0d</scancode>
-        </key>
-        <key>
-            <width>80</width>
-            <label>Backspace</label>
-            <position>14</position>
-            <scancode>0x0e</scancode>
-        </key>
-    </row>
-    <row>
-        <height>40</height>
-        <key>
-            <width>70</width>
-            <label>Tab</label>
-            <position>16</position>
-            <scancode>0x0f</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>Q</label>
-            <position>17</position>
-            <scancode>0x10</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>W</label>
-            <position>18</position>
-            <scancode>0x11</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>E</label>
-            <position>19</position>
-            <scancode>0x12</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>R</label>
-            <position>20</position>
-            <scancode>0x13</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>T</label>
-            <position>21</position>
-            <scancode>0x14</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>Y</label>
-            <position>22</position>
-            <scancode>0x15</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>U</label>
-            <position>23</position>
-            <scancode>0x16</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>I</label>
-            <position>24</position>
-            <scancode>0x17</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>O</label>
-            <position>25</position>
-            <scancode>0x18</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>P</label>
-            <position>26</position>
-            <scancode>0x19</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>{</label>
-            <label>[</label>
-            <position>27</position>
-            <scancode>0x1a</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>}</label>
-            <label>]</label>
-            <position>28</position>
-            <scancode>0x1b</scancode>
-        </key>
-        <key>
-            <width>60</width>
-            <label>|</label>
-            <label>\</label>
-            <position>29</position>
-            <scancode>0x2b</scancode>
-        </key>
-    </row>
-    <row>
-        <height>40</height>
-        <key>
-            <width>70</width>
-            <label>CapsLock</label>
-            <type>toggleable</type>
-            <position>30</position>
-            <scancode>0x3a</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>A</label>
-            <position>31</position>
-            <scancode>0x1e</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>S</label>
-            <position>32</position>
-            <scancode>0x1f</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>D</label>
-            <position>33</position>
-            <scancode>0x20</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>F</label>
-            <position>34</position>
-            <scancode>0x21</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>G</label>
-            <position>35</position>
-            <scancode>0x22</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>H</label>
-            <position>36</position>
-            <scancode>0x23</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>J</label>
-            <position>37</position>
-            <scancode>0x24</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>K</label>
-            <position>38</position>
-            <scancode>0x25</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>L</label>
-            <position>39</position>
-            <scancode>0x26</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>:</label>
-            <label>;</label>
-            <position>40</position>
-            <scancode>0x27</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>&quot;</label>
-            <label>'</label>
-            <position>41</position>
-            <scancode>0x28</scancode>
-        </key>
-        <key>
-            <width>110</width>
-            <label>Enter</label>
-            <position>43</position>
-            <scancode>0x1c</scancode>
-        </key>
-    </row>
-    <row>
-        <height>40</height>
-        <key>
-            <width>115</width>
-            <label>Shift</label>
-            <type>modifier</type>
-            <position>44</position>
-            <scancode>0x2a</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>Z</label>
-            <position>46</position>
-            <scancode>0x2c</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>X</label>
-            <position>47</position>
-            <scancode>0x2d</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>C</label>
-            <position>48</position>
-            <scancode>0x2e</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>V</label>
-            <position>49</position>
-            <scancode>0x2f</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>B</label>
-            <position>50</position>
-            <scancode>0x30</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>N</label>
-            <position>51</position>
-            <scancode>0x31</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>M</label>
-            <position>52</position>
-            <scancode>0x32</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>&lt;</label>
-            <label>,</label>
-            <position>53</position>
-            <scancode>0x33</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>&gt;</label>
-            <label>.</label>
-            <position>54</position>
-            <scancode>0x34</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>?</label>
-            <label>/</label>
-            <position>55</position>
-            <scancode>0x35</scancode>
-        </key>
-        <key>
-            <width>115</width>
-            <label>Shift</label>
-            <type>modifier</type>
-            <position>57</position>
-            <scancode>0x36</scancode>
-        </key>
-    </row>
-
-    <row>
-        <height>40</height>
-        <key>
-            <width>90</width>
-            <label>Ctrl</label>
-            <type>modifier</type>
-            <position>58</position>
-            <scancode>0x1d</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>Win</label>
-            <type>modifier</type>
-            <scancodeprefix>0xe0</scancodeprefix>
-            <scancode>0x5b</scancode>
-        </key>
-        <key>
-            <width>70</width>
-            <position>60</position>
-            <label>Alt</label>
-            <type>modifier</type>
-            <scancode>0x38</scancode>
-        </key>
-        <key>
-            <width>240</width>
-            <position>61</position>
-            <scancode>0x39</scancode>
-        </key>
-        <key>
-            <width>70</width>
-            <label>AltGr</label>
-            <type>modifier</type>
-            <scancodeprefix>0xe0</scancodeprefix>
-            <scancode>0x38</scancode>
-        </key>
-        <key>
-            <width>50</width>
-            <label>Win</label>
-            <type>modifier</type>
-            <scancodeprefix>0xe0</scancodeprefix>
-            <scancode>0x5c</scancode>
-        </key>
-        <key>
-            <width>70</width>
-            <label>Menu</label>
-            <scancodeprefix>0xe0</scancodeprefix>
-            <scancode>0x5d</scancode>
-        </key>
-        <key>
-            <width>90</width>
-            <label>Ctrl</label>
-            <type>modifier</type>
-            <scancodeprefix>0xe0</scancodeprefix>
-            <scancode>0x1d</scancode>
-        </key>
-
-    </row>
-
-</layout>
