From f56cf19fd56b98d560766d1dc7a703c2a27d7b29 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Mon, 6 Mar 2023 08:49:53 +0100 Subject: [PATCH] virtual keyboard: Make layouts settable --- playground/inputpanel/main.cpp | 201 ++-- skins/material3/QskMaterial3Skin.cpp | 18 +- src/inputpanel/QskInputPanelBox.cpp | 14 + src/inputpanel/QskInputPanelBox.h | 3 + src/inputpanel/QskVirtualKeyboard.cpp | 598 ++++++------ src/inputpanel/QskVirtualKeyboard.h | 66 +- src/inputpanel/QskVirtualKeyboardLayouts.cpp | 908 ++++++++----------- 7 files changed, 944 insertions(+), 864 deletions(-) diff --git a/playground/inputpanel/main.cpp b/playground/inputpanel/main.cpp index af6994cd..c97f73a6 100644 --- a/playground/inputpanel/main.cpp +++ b/playground/inputpanel/main.cpp @@ -14,98 +14,172 @@ #include #include -#include #include - +#include #include +#include +#include #include #include -static inline QString nativeLocaleString( const QLocale& locale ) +namespace { - switch ( locale.language() ) + class Keyboard final : public QskVirtualKeyboard { - case QLocale::Bulgarian: - return QStringLiteral( "български език" ); + using Inherited = QskVirtualKeyboard; - case QLocale::Czech: - return QStringLiteral( "Čeština" ); - - case QLocale::German: - return QStringLiteral( "Deutsch" ); - - case QLocale::Danish: - return QStringLiteral( "Dansk" ); - - case QLocale::Greek: - return QStringLiteral( "Eλληνικά" ); - - case QLocale::English: - { - switch ( locale.country() ) + public: + Keyboard( QQuickItem* parentItem = nullptr ): + QskVirtualKeyboard( parentItem ) { - case QLocale::Canada: - case QLocale::UnitedStates: - case QLocale::UnitedStatesMinorOutlyingIslands: - case QLocale::UnitedStatesVirginIslands: - return QStringLiteral( "English (US)" ); - - default: - return QStringLiteral( "English (UK)" ); + // here rearrange keyboard layouts if necessary } + }; + + class Panel : public QskInputPanel + { + public: + Panel( QQuickItem* parentItem = nullptr ) + : QskInputPanel( parentItem ) + { + setAutoLayoutChildren( true ); + setLayoutAlignmentHint( Qt::AlignHCenter | Qt::AlignBottom ); + + m_box = new QskInputPanelBox( this ); + m_box->setKeyboard( new Keyboard() ); + + connect( m_box, &QskInputPanelBox::keySelected, + this, &QskInputPanel::keySelected ); + + connect( m_box, &QskInputPanelBox::predictiveTextSelected, + this, &QskInputPanel::predictiveTextSelected ); } - case QLocale::Spanish: - return QStringLiteral( "Español" ); + void attachItem( QQuickItem* item ) override + { + m_box->attachInputItem( item ); + } - case QLocale::Finnish: - return QStringLiteral( "Suomi" ); + QQuickItem* inputProxy() const override + { + return m_box->inputProxy(); + } - case QLocale::French: - return QStringLiteral( "Français" ); + void setPrompt( const QString& prompt ) override + { + m_box->setInputPrompt( prompt ); + } - case QLocale::Hungarian: - return QStringLiteral( "Magyar" ); + void setPredictionEnabled( bool on ) override + { + m_box->setPanelHint( QskInputPanelBox::Prediction, on ); + } - case QLocale::Italian: - return QStringLiteral( "Italiano" ); + void setPrediction( const QStringList& prediction ) override + { + QskInputPanel::setPrediction( prediction ); + m_box->setPrediction( prediction ); + } - case QLocale::Japanese: - return QStringLiteral( "日本語" ); - case QLocale::Latvian: - return QStringLiteral( "Latviešu" ); + private: + QskInputPanelBox* m_box; + }; - case QLocale::Lithuanian: - return QStringLiteral( "Lietuvių" ); + class InputContextFactory : public QskInputContextFactory + { + QskInputPanel* createPanel() const override + { + return new Panel; + } + }; - case QLocale::Dutch: - return QStringLiteral( "Nederlands" ); + QString nativeLocaleString( const QLocale& locale ) + { + switch ( locale.language() ) + { + case QLocale::Bulgarian: + return QStringLiteral( "български език" ); - case QLocale::Portuguese: - return QStringLiteral( "Português" ); + case QLocale::Czech: + return QStringLiteral( "Čeština" ); - case QLocale::Romanian: - return QStringLiteral( "Română" ); + case QLocale::German: + return QStringLiteral( "Deutsch" ); - case QLocale::Russian: - return QStringLiteral( "Русский" ); + case QLocale::Danish: + return QStringLiteral( "Dansk" ); - case QLocale::Slovenian: - return QStringLiteral( "Slovenščina" ); + case QLocale::Greek: + return QStringLiteral( "Eλληνικά" ); - case QLocale::Slovak: - return QStringLiteral( "Slovenčina" ); + case QLocale::English: + { + switch ( locale.country() ) + { + case QLocale::Canada: + case QLocale::UnitedStates: + case QLocale::UnitedStatesMinorOutlyingIslands: + case QLocale::UnitedStatesVirginIslands: + return QStringLiteral( "English (US)" ); - case QLocale::Turkish: - return QStringLiteral( "Türkçe" ); + default: + return QStringLiteral( "English (UK)" ); + } + } - case QLocale::Chinese: - return QStringLiteral( "中文" ); + case QLocale::Spanish: + return QStringLiteral( "Español" ); - default: - return QLocale::languageToString( locale.language() ); + case QLocale::Finnish: + return QStringLiteral( "Suomi" ); + + case QLocale::French: + return QStringLiteral( "Français" ); + + case QLocale::Hungarian: + return QStringLiteral( "Magyar" ); + + case QLocale::Italian: + return QStringLiteral( "Italiano" ); + + case QLocale::Japanese: + return QStringLiteral( "日本語" ); + + case QLocale::Latvian: + return QStringLiteral( "Latviešu" ); + + case QLocale::Lithuanian: + return QStringLiteral( "Lietuvių" ); + + case QLocale::Dutch: + return QStringLiteral( "Nederlands" ); + + case QLocale::Portuguese: + return QStringLiteral( "Português" ); + + case QLocale::Romanian: + return QStringLiteral( "Română" ); + + case QLocale::Russian: + return QStringLiteral( "Русский" ); + + case QLocale::Slovenian: + return QStringLiteral( "Slovenščina" ); + + case QLocale::Slovak: + return QStringLiteral( "Slovenčina" ); + + case QLocale::Turkish: + return QStringLiteral( "Türkçe" ); + + case QLocale::Chinese: + return QStringLiteral( "中文" ); + + default: + return QLocale::languageToString( locale.language() ); + } } } @@ -306,6 +380,7 @@ int main( int argc, char* argv[] ) window2.show(); #endif + QskInputContext::instance()->setFactory( new InputContextFactory() ); return app.exec(); } diff --git a/skins/material3/QskMaterial3Skin.cpp b/skins/material3/QskMaterial3Skin.cpp index 5a2f086b..ddf89869 100644 --- a/skins/material3/QskMaterial3Skin.cpp +++ b/skins/material3/QskMaterial3Skin.cpp @@ -1103,9 +1103,23 @@ void Editor::setupVirtualKeyboard() // key panel setMargin( Q::ButtonPanel, 5_dp ); - setGradient( Q::ButtonPanel, m_pal.background ); + setGradient( Q::ButtonPanel, m_pal.surface2 ); + setGradient( Q::ButtonPanel | QskPushButton::Pressed, m_pal.surface ); + setColor( Q::ButtonText | QskPushButton::Pressed, m_pal.outlineVariant ); setBoxShape( Q::ButtonPanel, 6_dp ); + setBoxShape( Q::ButtonPanel | A::Huge, 100, Qt::RelativeSize ); + setGradient( Q::ButtonPanel | A::Huge, m_pal.primary ); + setColor( Q::ButtonText | A::Huge, m_pal.onPrimary ); + + setGradient( Q::ButtonPanel | A::Large, m_pal.outlineVariant ); + + setBoxShape( Q::ButtonPanel | A::Small, 100, Qt::RelativeSize ); + setGradient( Q::ButtonPanel | A::Small, m_pal.secondary ); + setColor( Q::ButtonText | A::Small, m_pal.onSecondary ); + + setGradient( Q::ButtonPanel | A::Tiny, m_pal.outlineVariant ); + for ( auto state : { A::NoState, Q::Focused } ) setBoxBorderColors( Q::ButtonPanel | QskPushButton::Pressed | state, m_pal.secondary ); @@ -1117,7 +1131,7 @@ void Editor::setupVirtualKeyboard() setFontRole( Q::ButtonText, QskMaterial3Skin::M3HeadlineSmall ); // panel - setGradient( Q::Panel, m_pal.surfaceVariant ); + setGradient( Q::Panel, m_pal.background ); setPadding( Q::Panel, { 3_dp, 25_dp, 3_dp, 5_dp } ); } diff --git a/src/inputpanel/QskInputPanelBox.cpp b/src/inputpanel/QskInputPanelBox.cpp index f77587dc..6c76bed2 100644 --- a/src/inputpanel/QskInputPanelBox.cpp +++ b/src/inputpanel/QskInputPanelBox.cpp @@ -218,6 +218,20 @@ void QskInputPanelBox::setPrediction( const QStringList& prediction ) m_data->predictionBar->setPrediction( prediction ); } +void QskInputPanelBox::setKeyboard( QskVirtualKeyboard* keyboard ) +{ + if( m_data->keyboard ) + { + m_data->keyboard->deleteLater(); + } + + m_data->keyboard = keyboard; + m_data->layout->addItem( m_data->keyboard ); + + connect( m_data->keyboard, &QskVirtualKeyboard::keySelected, + this, &QskInputPanelBox::keySelected ); +} + void QskInputPanelBox::keyPressEvent( QKeyEvent* event ) { int keyCode = -1; diff --git a/src/inputpanel/QskInputPanelBox.h b/src/inputpanel/QskInputPanelBox.h index b3efd422..84dcfbd9 100644 --- a/src/inputpanel/QskInputPanelBox.h +++ b/src/inputpanel/QskInputPanelBox.h @@ -9,6 +9,7 @@ #include "QskBox.h" class QskInputEngine; +class QskVirtualKeyboard; class QString; class QLocale; @@ -52,6 +53,8 @@ class QSK_EXPORT QskInputPanelBox : public QskBox QString inputPrompt() const; + void setKeyboard( QskVirtualKeyboard* ); + Q_SIGNALS: void panelHintsChanged(); void inputPromptChanged( const QString& ); diff --git a/src/inputpanel/QskVirtualKeyboard.cpp b/src/inputpanel/QskVirtualKeyboard.cpp index 15b7ea04..b85097d8 100644 --- a/src/inputpanel/QskVirtualKeyboard.cpp +++ b/src/inputpanel/QskVirtualKeyboard.cpp @@ -5,7 +5,6 @@ #include "QskVirtualKeyboard.h" #include "QskPushButton.h" -#include "QskTextOptions.h" #include #include @@ -13,97 +12,138 @@ namespace { - enum - { - RowCount = 5, - ColumnCount = 12 - }; - - using KeyRow = int[ ColumnCount ]; - - class Button final : public QskPushButton + class Button : public QskPushButton { public: - Button( int row, int column, QskVirtualKeyboard* parent ) + Button( QskVirtualKeyboard* parent ) : QskPushButton( parent ) - , m_row( row ) - , m_column( column ) { -#if 0 - QskTextOptions options; - options.setFontSizeMode( QskTextOptions::VerticalFit ); - setTextOptions( options ); -#endif - setFocusPolicy( Qt::TabFocus ); + + setSubcontrolProxy( QskPushButton::Panel, QskVirtualKeyboard::ButtonPanel ); + setSubcontrolProxy( QskPushButton::Text, QskVirtualKeyboard::ButtonText ); } - QskAspect::Subcontrol substitutedSubcontrol( - QskAspect::Subcontrol subControl ) const override + int key() const { - auto keyBoard = static_cast< const QskVirtualKeyboard* >( parent() ); - - if ( subControl == QskPushButton::Panel ) - return keyBoard->effectiveSubcontrol( QskVirtualKeyboard::ButtonPanel ); - - if ( subControl == QskPushButton::Text ) - return keyBoard->effectiveSubcontrol( QskVirtualKeyboard::ButtonText ); - - return QskPushButton::substitutedSubcontrol( subControl ); + return m_key; } - int row() const { return m_row; } - int column() const { return m_column; } + void setKey( int key ) + { + m_key = key; + } private: - const int m_row; - const int m_column; + int m_key = 0; }; + + static bool qskIsAutorepeat( int key ) + { + return ( + ( key != Qt::Key_Return ) && + ( key != Qt::Key_Enter ) && + ( key != Qt::Key_Shift ) && + ( key != Qt::Key_CapsLock ) && + ( key != Qt::Key_Mode_switch ) ); + } } -struct QskVirtualKeyboardLayouts + +QSK_SUBCONTROL( QskVirtualKeyboard, Panel ) +QSK_SUBCONTROL( QskVirtualKeyboard, ButtonPanel ) +QSK_SUBCONTROL( QskVirtualKeyboard, ButtonText ) + +class QskVirtualKeyboard::PrivateData { - struct KeyCodes - { - using Row = int[ ColumnCount ]; - Row data[ RowCount ]; - }; + public: + int rowCount = 5; + int columnCount = 12; - using Layout = KeyCodes[ QskVirtualKeyboard::ModeCount ]; + QskVirtualKeyboardLayouts layouts; + const QskVirtualKeyboardLayouts::Layout* currentLayout = nullptr; + QskVirtualKeyboard::Mode mode = QskVirtualKeyboard::LowercaseMode; - Layout bg; // Bulgarian - Layout cs; // Czech - Layout de; // German - Layout da; // Danish - Layout el; // Greek - Layout en_GB; // English (GB) - Layout en_US; // English (US) - Layout es; // Spanish - Layout fi; // Finnish - Layout fr; // French - Layout hu; // Hungarian - Layout it; // Italian - Layout ja; // Japanese - Layout lv; // Latvian - Layout lt; // Lithuanian - Layout nl; // Dutch - Layout pt; // Portuguese - Layout ro; // Romanian - Layout ru; // Russian - Layout sl; // Slovene - Layout sk; // Slovak - Layout tr; // Turkish - Layout zh; // Chinese + QVector< Button* > keyButtons; + QSet< int > keyCodes; }; +QskVirtualKeyboard::QskVirtualKeyboard( QQuickItem* parent ) + : Inherited( parent ) + , m_data( new PrivateData ) +{ + setPolishOnResize( true ); + initSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Fixed ); + #define LOWER( x ) int( x + 32 ) // Convert an uppercase key to lowercase -static constexpr const QskVirtualKeyboardLayouts qskKeyboardLayouts = -{ + m_data->layouts = + { #include "QskVirtualKeyboardLayouts.cpp" -}; + }; #undef LOWER -static qreal qskKeyStretch( int key ) + ensureButtons(); + + connect( this, &QskControl::localeChanged, + this, &QskVirtualKeyboard::updateLocale ); + + updateLocale( locale() ); + + setSubcontrolProxy( QskBox::Panel, Panel ); +} + +QskVirtualKeyboard::~QskVirtualKeyboard() +{ +} + +void QskVirtualKeyboard::setMode( QskVirtualKeyboard::Mode mode ) +{ + m_data->mode = mode; + polish(); + + Q_EMIT modeChanged( m_data->mode ); +} + +QskVirtualKeyboard::Mode QskVirtualKeyboard::mode() const +{ + return m_data->mode; +} + +QSizeF QskVirtualKeyboard::layoutSizeHint( + Qt::SizeHint which, const QSizeF& constraint ) const +{ + if ( which != Qt::PreferredSize ) + return QSizeF(); + + const qreal ratio = qreal( rowCount() ) / columnCount(); + + qreal w = constraint.width(); + qreal h = constraint.height(); + + if ( h >= 0 ) + { + const auto padding = innerPadding( Panel, QSizeF( h, h ) ); + const auto dw = padding.left() + padding.right(); + const auto dh = padding.top() + padding.bottom(); + + w = ( h - dh ) / ratio + dw; + } + else + { + if ( w < 0 ) + w = 600; + + const auto padding = innerPadding( Panel, QSizeF( w, w ) ); + const auto dw = padding.left() + padding.right(); + const auto dh = padding.top() + padding.bottom(); + + h = ( w - dw ) * ratio + dh; + } + + return QSizeF( w, h ); +} + +qreal QskVirtualKeyboard::keyStretch( int key ) const { switch ( key ) { @@ -126,29 +166,12 @@ static qreal qskKeyStretch( int key ) return 1.0; } -static qreal qskRowStretch( const KeyRow& keyRow ) +bool QskVirtualKeyboard::isKeyVisible( int key ) const { - qreal stretch = 0; - - for ( const auto& key : keyRow ) - { - if ( !key ) - { - continue; - } - - stretch += qskKeyStretch( key ); - } - - if ( stretch == 0.0 ) - { - stretch = ColumnCount; - } - - return stretch; + return key != 0; } -static QString qskTextForKey( int key ) +QString QskVirtualKeyboard::textForKey( int key ) const { // Special cases switch ( key ) @@ -189,191 +212,96 @@ static QString qskTextForKey( int key ) } } -static bool qskIsAutorepeat( int key ) +QskVirtualKeyboard::KeyType QskVirtualKeyboard::typeForKey( int key ) const { - return ( - ( key != Qt::Key_Return ) && - ( key != Qt::Key_Enter ) && - ( key != Qt::Key_Shift ) && - ( key != Qt::Key_CapsLock ) && - ( key != Qt::Key_Mode_switch ) ); -} - -static QSet< int > qskKeyCodes( const QskVirtualKeyboardLayouts::Layout& layout ) -{ - QSet< int > codes; - codes.reserve( RowCount * ColumnCount ); - - for ( int mode = 0; mode <= QskVirtualKeyboard::ModeCount; mode++ ) + switch( key ) { - const auto& keyCodes = layout[ mode ]; + case Qt::Key_Return: + case Qt::Key_Enter: + return EnterType; - for ( int row = 0; row < RowCount; row++ ) - { - const auto& keys = keyCodes.data[ row ]; + case Qt::Key_Backspace: + return BackspaceType; - for ( int col = 0; col < ColumnCount; col++ ) - codes += keys[ col ]; - } + case Qt::Key_Shift: + case Qt::Key_CapsLock: + return CapsSwitchType; + + case Qt::Key_Mode_switch: + return ModeSwitchType; + + case Qt::Key_Comma: + case Qt::Key_Period: + return SpecialCharacterType; + + default: + return NormalType; } - - return codes; } -QSK_SUBCONTROL( QskVirtualKeyboard, Panel ) -QSK_SUBCONTROL( QskVirtualKeyboard, ButtonPanel ) -QSK_SUBCONTROL( QskVirtualKeyboard, ButtonText ) - -class QskVirtualKeyboard::PrivateData -{ - public: - const QskVirtualKeyboardLayouts::Layout* currentLayout = nullptr; - QskVirtualKeyboard::Mode mode = QskVirtualKeyboard::LowercaseMode; - - QVector< Button* > keyButtons; - QSet< int > keyCodes; -}; - -QskVirtualKeyboard::QskVirtualKeyboard( QQuickItem* parent ) - : Inherited( parent ) - , m_data( new PrivateData ) -{ - setPolishOnResize( true ); - initSizePolicy( QskSizePolicy::Expanding, QskSizePolicy::Fixed ); - - m_data->keyButtons.reserve( RowCount * ColumnCount ); - - const auto autoRepeatInterval = - 1000 / QGuiApplication::styleHints()->keyboardAutoRepeatRate(); - - for ( int row = 0; row < RowCount; row++ ) - { - for ( int col = 0; col < ColumnCount; col++ ) - { - auto button = new Button( row, col, this ); - button->installEventFilter( this ); - - button->setAutoRepeat( false ); - button->setAutoRepeatDelay( 500 ); - button->setAutoRepeatInterval( autoRepeatInterval ); - - connect( button, &QskPushButton::pressed, - this, &QskVirtualKeyboard::buttonPressed ); - - m_data->keyButtons += button; - } - } - - connect( this, &QskControl::localeChanged, - this, &QskVirtualKeyboard::updateLocale ); - - updateLocale( locale() ); -} - -QskVirtualKeyboard::~QskVirtualKeyboard() -{ -} - -QskAspect::Subcontrol QskVirtualKeyboard::substitutedSubcontrol( - QskAspect::Subcontrol subControl ) const -{ - if ( subControl == QskBox::Panel ) - return QskVirtualKeyboard::Panel; - - return Inherited::substitutedSubcontrol( subControl ); -} - -QskVirtualKeyboard::Mode QskVirtualKeyboard::mode() const -{ - return m_data->mode; -} - -QSizeF QskVirtualKeyboard::layoutSizeHint( - Qt::SizeHint which, const QSizeF& constraint ) const -{ - if ( which != Qt::PreferredSize ) - return QSizeF(); - - constexpr qreal ratio = qreal( RowCount ) / ColumnCount; - - qreal w = constraint.width(); - qreal h = constraint.height(); - - if ( h >= 0 ) - { - const auto padding = innerPadding( Panel, QSizeF( h, h ) ); - const auto dw = padding.left() + padding.right(); - const auto dh = padding.top() + padding.bottom(); - - w = ( h - dh ) / ratio + dw; - } - else - { - if ( w < 0 ) - w = 600; - - const auto padding = innerPadding( Panel, QSizeF( w, w ) ); - const auto dw = padding.left() + padding.right(); - const auto dh = padding.top() + padding.bottom(); - - h = ( w - dw ) * ratio + dh; - } - - return QSizeF( w, h ); -} - -void QskVirtualKeyboard::updateLayout() +void QskVirtualKeyboard::updateLayout() // ### fill keyCodes here { const auto r = layoutRect(); if ( r.isEmpty() ) return; const auto spacing = spacingHint( Panel ); - const auto totalVSpacing = ( RowCount - 1 ) * spacing; + const auto totalVSpacing = ( rowCount() - 1 ) * spacing; - const auto keyHeight = ( r.height() - totalVSpacing ) / RowCount; - - const auto& keyCodes = ( *m_data->currentLayout )[ m_data->mode ]; + const auto keyHeight = ( r.height() - totalVSpacing ) / rowCount(); qreal yPos = r.top(); - for ( int row = 0; row < RowCount; row++ ) - { - const auto& keys = keyCodes.data[ row ]; + const auto& page = ( *m_data->currentLayout )[ mode() ]; + for ( int i = 0; i < page.size(); i++ ) + { + const QVector< int > row = page[ i ]; #if 1 // there should be a better way auto totalHSpacing = -spacing; if ( spacing ) { - for ( int col = 0; col < ColumnCount; col++ ) + for ( int j = 0; j < row.size(); j++ ) { - if ( keys[ col ] != 0 ) + if ( row[ j ] != 0 ) totalHSpacing += spacing; } } #endif - const auto baseKeyWidth = ( r.width() - totalHSpacing ) / qskRowStretch( keys ); + const auto baseKeyWidth = ( r.width() - totalHSpacing ) / rowStretch( row ); qreal xPos = r.left(); - for ( int col = 0; col < ColumnCount; col++ ) + for ( int j = 0; j < columnCount(); j++ ) { - const int key = keys[ col ]; - auto button = m_data->keyButtons[ row * ColumnCount + col ]; + auto button = m_data->keyButtons[ i * columnCount() + j ]; - button->setVisible( key != 0 ); - - if ( button->isVisible() ) + if( j < row.size() ) { - const qreal keyWidth = baseKeyWidth * qskKeyStretch( key ); + const int key = row[ j ]; + button->setVisible( isKeyVisible( key ) ); - const QRectF rect( xPos, yPos, keyWidth, keyHeight ); + if ( button->isVisible() ) + { + const qreal keyWidth = baseKeyWidth * keyStretch( key ); - button->setGeometry( rect ); - button->setAutoRepeat( qskIsAutorepeat( key ) ); - button->setText( qskTextForKey( key ) ); + const QRectF rect( xPos, yPos, keyWidth, keyHeight ); - xPos += keyWidth + spacing; + button->setGeometry( rect ); + button->setAutoRepeat( qskIsAutorepeat( key ) ); + button->setKey( key ); + button->setText( textForKey( key ) ); + + const auto type = typeForKey( key ); + const auto emphasis = emphasisForType( type ); + button->setEmphasis( emphasis ); + + xPos += keyWidth + spacing; + } + } + else + { + button->setVisible( false ); } } @@ -386,14 +314,88 @@ bool QskVirtualKeyboard::hasKey( int keyCode ) const return m_data->keyCodes.contains( keyCode ); } +int QskVirtualKeyboard::rowCount() const +{ + return m_data->rowCount; +} + +void QskVirtualKeyboard::setRowCount( int rowCount ) +{ + m_data->rowCount = rowCount; + ensureButtons(); +} + +int QskVirtualKeyboard::columnCount() const +{ + return m_data->columnCount; +} + +void QskVirtualKeyboard::setColumnCount( int columnCount ) +{ + m_data->columnCount = columnCount; + ensureButtons(); +} + +QskVirtualKeyboardLayouts QskVirtualKeyboard::layouts() const +{ + return m_data->layouts; +} + +void QskVirtualKeyboard::setLayouts( const QskVirtualKeyboardLayouts& layouts ) +{ + m_data->layouts = layouts; +} + +void QskVirtualKeyboard::ensureButtons() +{ + const int newButtonSize = rowCount() * columnCount(); + const int oldButtonSize = m_data->keyButtons.size(); + + if( newButtonSize == oldButtonSize ) + return; + + const auto autoRepeatInterval = + 1000 / QGuiApplication::styleHints()->keyboardAutoRepeatRate(); + + m_data->keyButtons.reserve( rowCount() * columnCount() ); + + for( int i = 0; i < rowCount(); i++ ) + { + for( int j = 0; j < columnCount(); j++ ) + { + const int index = i * columnCount() + j; + + if( index >= m_data->keyButtons.size() ) + { + auto button = new Button( this ); + button->installEventFilter( this ); + + button->setAutoRepeat( false ); + button->setAutoRepeatDelay( 500 ); + button->setAutoRepeatInterval( autoRepeatInterval ); + + connect( button, &QskPushButton::pressed, + this, &QskVirtualKeyboard::buttonPressed ); + + m_data->keyButtons += button; + } + } + } + + while( m_data->keyButtons.size() > newButtonSize ) + { + auto* button = m_data->keyButtons.takeLast(); + button->deleteLater(); + } +} + void QskVirtualKeyboard::buttonPressed() { const auto button = static_cast< const Button* >( sender() ); if ( button == nullptr ) return; - const auto& keyCodes = ( *m_data->currentLayout )[ m_data->mode ]; - const int key = keyCodes.data[ button->row() ][ button->column() ]; + const int key = button->key(); // Mode-switching keys switch ( key ) @@ -427,6 +429,49 @@ void QskVirtualKeyboard::buttonPressed() } } +void QskVirtualKeyboard::updateKeyCodes() +{ + m_data->keyCodes = {}; + m_data->keyCodes.reserve( rowCount() * columnCount() ); + + for ( int mode = 0; mode < ModeCount; mode++ ) + { + const auto& page = ( *m_data->currentLayout )[ mode ]; + + for ( int i = 0; i < page.size(); i++ ) + { + const auto& row = page[ i ]; + + for ( int j = 0; j < row.size(); j++ ) + { + m_data->keyCodes += row[ j ]; + } + } + } +} + +qreal QskVirtualKeyboard::rowStretch( const QVector< int >& row ) +{ + qreal stretch = 0; + + for ( const int& key : row ) + { + if ( !key ) + { + continue; + } + + stretch += keyStretch( key ); + } + + if ( stretch == 0.0 ) + { + stretch = columnCount(); + } + + return stretch; +} + void QskVirtualKeyboard::updateLocale( const QLocale& locale ) { const QskVirtualKeyboardLayouts::Layout* newLayout = nullptr; @@ -434,23 +479,23 @@ void QskVirtualKeyboard::updateLocale( const QLocale& locale ) switch ( locale.language() ) { case QLocale::Bulgarian: - newLayout = &qskKeyboardLayouts.bg; + newLayout = &m_data->layouts.bg; break; case QLocale::Czech: - newLayout = &qskKeyboardLayouts.cs; + newLayout = &m_data->layouts.cs; break; case QLocale::German: - newLayout = &qskKeyboardLayouts.de; + newLayout = &m_data->layouts.de; break; case QLocale::Danish: - newLayout = &qskKeyboardLayouts.da; + newLayout = &m_data->layouts.da; break; case QLocale::Greek: - newLayout = &qskKeyboardLayouts.el; + newLayout = &m_data->layouts.el; break; case QLocale::English: @@ -461,11 +506,11 @@ void QskVirtualKeyboard::updateLocale( const QLocale& locale ) case QLocale::UnitedStates: case QLocale::UnitedStatesMinorOutlyingIslands: case QLocale::UnitedStatesVirginIslands: - newLayout = &qskKeyboardLayouts.en_US; + newLayout = &m_data->layouts.en_US; break; default: - newLayout = &qskKeyboardLayouts.en_GB; + newLayout = &m_data->layouts.en_GB; break; } @@ -473,94 +518,109 @@ void QskVirtualKeyboard::updateLocale( const QLocale& locale ) } case QLocale::Spanish: - newLayout = &qskKeyboardLayouts.es; + newLayout = &m_data->layouts.es; break; case QLocale::Finnish: - newLayout = &qskKeyboardLayouts.fi; + newLayout = &m_data->layouts.fi; break; case QLocale::French: - newLayout = &qskKeyboardLayouts.fr; + newLayout = &m_data->layouts.fr; break; case QLocale::Hungarian: - newLayout = &qskKeyboardLayouts.hu; + newLayout = &m_data->layouts.hu; break; case QLocale::Italian: - newLayout = &qskKeyboardLayouts.it; + newLayout = &m_data->layouts.it; break; case QLocale::Japanese: - newLayout = &qskKeyboardLayouts.ja; + newLayout = &m_data->layouts.ja; break; case QLocale::Latvian: - newLayout = &qskKeyboardLayouts.lv; + newLayout = &m_data->layouts.lv; break; case QLocale::Lithuanian: - newLayout = &qskKeyboardLayouts.lt; + newLayout = &m_data->layouts.lt; break; case QLocale::Dutch: - newLayout = &qskKeyboardLayouts.nl; + newLayout = &m_data->layouts.nl; break; case QLocale::Portuguese: - newLayout = &qskKeyboardLayouts.pt; + newLayout = &m_data->layouts.pt; break; case QLocale::Romanian: - newLayout = &qskKeyboardLayouts.ro; + newLayout = &m_data->layouts.ro; break; case QLocale::Russian: - newLayout = &qskKeyboardLayouts.ru; + newLayout = &m_data->layouts.ru; break; case QLocale::Slovenian: - newLayout = &qskKeyboardLayouts.sl; + newLayout = &m_data->layouts.sl; break; case QLocale::Slovak: - newLayout = &qskKeyboardLayouts.sk; + newLayout = &m_data->layouts.sk; break; case QLocale::Turkish: - newLayout = &qskKeyboardLayouts.tr; + newLayout = &m_data->layouts.tr; break; case QLocale::Chinese: - newLayout = &qskKeyboardLayouts.zh; + newLayout = &m_data->layouts.zh; break; #if 1 case QLocale::C: - newLayout = &qskKeyboardLayouts.en_US; + newLayout = &m_data->layouts.en_US; break; #endif default: qWarning() << "QskVirtualKeyboard: unsupported locale:" << locale; - newLayout = &qskKeyboardLayouts.en_US; + newLayout = &m_data->layouts.en_US; } if ( newLayout != m_data->currentLayout ) { m_data->currentLayout = newLayout; - m_data->keyCodes = qskKeyCodes( *newLayout ); + updateKeyCodes(); setMode( LowercaseMode ); polish(); + Q_EMIT keyboardLayoutChanged(); } } -void QskVirtualKeyboard::setMode( QskVirtualKeyboard::Mode mode ) +QskPushButton::Emphasis QskVirtualKeyboard::emphasisForType( KeyType type ) { - m_data->mode = mode; - polish(); + switch( type ) + { + case EnterType: + return QskPushButton::VeryHighEmphasis; - Q_EMIT modeChanged( m_data->mode ); + case BackspaceType: + case CapsSwitchType: + return QskPushButton::HighEmphasis; + + case ModeSwitchType: + return QskPushButton::LowEmphasis; + + case SpecialCharacterType: + return QskPushButton::VeryLowEmphasis; + + default: + return QskPushButton::NoEmphasis; + } } #include "moc_QskVirtualKeyboard.cpp" diff --git a/src/inputpanel/QskVirtualKeyboard.h b/src/inputpanel/QskVirtualKeyboard.h index 4dc598c8..54fd0e1c 100644 --- a/src/inputpanel/QskVirtualKeyboard.h +++ b/src/inputpanel/QskVirtualKeyboard.h @@ -7,6 +7,37 @@ #define QSK_VIRTUAL_KEYBOARD_H #include "QskBox.h" +#include "QskPushButton.h" + +class QSK_EXPORT QskVirtualKeyboardLayouts +{ +public: + using Layout = QVector< QVector< QVector< int > > >; + + Layout bg; // Bulgarian + Layout cs; // Czech + Layout de; // German + Layout da; // Danish + Layout el; // Greek + Layout en_GB; // English (GB) + Layout en_US; // English (US) + Layout es; // Spanish + Layout fi; // Finnish + Layout fr; // French + Layout hu; // Hungarian + Layout it; // Italian + Layout ja; // Japanese + Layout lv; // Latvian + Layout lt; // Lithuanian + Layout nl; // Dutch + Layout pt; // Portuguese + Layout ro; // Romanian + Layout ru; // Russian + Layout sl; // Slovene + Layout sk; // Slovak + Layout tr; // Turkish + Layout zh; // Chinese +}; class QSK_EXPORT QskVirtualKeyboard : public QskBox { @@ -27,6 +58,16 @@ class QSK_EXPORT QskVirtualKeyboard : public QskBox }; Q_ENUM( Mode ) + enum KeyType + { + NormalType, + EnterType, + BackspaceType, + CapsSwitchType, + ModeSwitchType, + SpecialCharacterType + }; + QskVirtualKeyboard( QQuickItem* parent = nullptr ); ~QskVirtualKeyboard() override; @@ -37,19 +78,36 @@ class QSK_EXPORT QskVirtualKeyboard : public QskBox bool hasKey( int keyCode ) const; + int rowCount() const; + void setRowCount( int ); + + int columnCount() const; + void setColumnCount( int ); + + QskVirtualKeyboardLayouts layouts() const; + void setLayouts( const QskVirtualKeyboardLayouts& ); + Q_SIGNALS: - void modeChanged( Mode ); + void modeChanged( QskVirtualKeyboard::Mode ); + void keyboardLayoutChanged(); void keySelected( int keyCode ); protected: + virtual qreal keyStretch( int ) const; + virtual bool isKeyVisible( int ) const; + virtual QString textForKey( int ) const; + virtual KeyType typeForKey( int ) const; + void updateLayout() override; QSizeF layoutSizeHint( Qt::SizeHint, const QSizeF& ) const override; - QskAspect::Subcontrol substitutedSubcontrol( - QskAspect::Subcontrol ) const override; - private: + void ensureButtons(); void buttonPressed(); + void updateKeyCodes(); + QskPushButton::Emphasis emphasisForType( KeyType ); + + qreal rowStretch( const QVector< int >& ); class PrivateData; std::unique_ptr< PrivateData > m_data; diff --git a/src/inputpanel/QskVirtualKeyboardLayouts.cpp b/src/inputpanel/QskVirtualKeyboardLayouts.cpp index 93780416..cd790dc4 100644 --- a/src/inputpanel/QskVirtualKeyboardLayouts.cpp +++ b/src/inputpanel/QskVirtualKeyboardLayouts.cpp @@ -8,376 +8,305 @@ // Bulgarian { { - { - // cyrillic lowercase - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, Qt::Key_Period }, - { Qt::Key_Comma, 0x0443 /*u*/, 0x0435 /*ie*/, 0x0438 /*i*/, 0x0448 /*sha*/, 0x0449 /*shcha*/, 0x043A /*ka*/, 0x0441 /*es*/, 0x0434 /*de*/, 0x0437 /*ze*/, 0x0446 /*tse*/ }, - { 0x044C /*soft sign*/, 0x044F /*ya*/, 0x0430 /*a*/, 0x043E /*o*/, 0x0436 /*zhe*/, 0x0433 /*ghe*/, 0x0442 /*te*/, 0x043D /*en*/, 0x0432 /*ve*/, 0x043C /*em*/, 0x0447 /*che*/ }, - { Qt::Key_CapsLock, 0x044E /*yu*/, 0x0439 /*short i*/, 0x044A /*hard sign*/, 0x044D /*e*/, 0x0444 /*ef*/, 0x0445 /*ha*/, 0x043F /*pe*/, 0x0440 /*er*/, 0x043B /*el*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_QuoteLeft, Qt::Key_ParenLeft, Qt::Key_Backslash, Qt::Key_Space, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + // cyrillic lowercase + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, Qt::Key_Period }, + { Qt::Key_Comma, 0x0443 /*u*/, 0x0435 /*ie*/, 0x0438 /*i*/, 0x0448 /*sha*/, 0x0449 /*shcha*/, 0x043A /*ka*/, 0x0441 /*es*/, 0x0434 /*de*/, 0x0437 /*ze*/, 0x0446 /*tse*/ }, + { 0x044C /*soft sign*/, 0x044F /*ya*/, 0x0430 /*a*/, 0x043E /*o*/, 0x0436 /*zhe*/, 0x0433 /*ghe*/, 0x0442 /*te*/, 0x043D /*en*/, 0x0432 /*ve*/, 0x043C /*em*/, 0x0447 /*che*/ }, + { Qt::Key_CapsLock, 0x044E /*yu*/, 0x0439 /*short i*/, 0x044A /*hard sign*/, 0x044D /*e*/, 0x0444 /*ef*/, 0x0445 /*ha*/, 0x043F /*pe*/, 0x0440 /*er*/, 0x043B /*el*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_QuoteLeft, Qt::Key_ParenLeft, Qt::Key_Backslash, Qt::Key_Space, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - // cyrillic uppercase - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_Plus, Qt::Key_Question, Qt::Key_Percent, Qt::Key_Equal, Qt::Key_Colon, Qt::Key_Slash, Qt::Key_Underscore, 0x2116 /*no sign*/, 0x0406 /*byelorussian-ukrainian i*/, Qt::Key_V }, - { 0x044B /*small yeru*/, 0x0423 /*u*/, 0x0415 /*ie*/, 0x0418 /*i*/, 0x0428 /*sha*/, 0x0429 /*shcha*/, 0x041A /* ka*/, 0x0421 /*es*/, 0x0414 /*de*/, 0x0417 /*ze*/, 0x0426 /*tse*/ }, - { 0x042C /*soft sign*/, 0x042F /*ya*/, 0x0410 /*a*/, 0x041E /*o*/, 0x0416 /*zhe*/, 0x0413 /*ghe*/, 0x0422 /*te*/, 0x041D /*en*/, 0x0412 /*ve*/, 0x041C /*em*/, 0x0427 /*che*/ }, - { Qt::Key_Shift, 0x042E /* yu*/, 0x0419 /* short i*/, 0x042A /*hard sign*/, 0x042D /*e*/, 0x0424 /*ef*/, 0x0425 /*ha*/, 0x041F /*pe*/, 0x0420 /*er*/, 0x041B /*el*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_AsciiTilde, Qt::Key_ParenRight, Qt::Key_Semicolon, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + // cyrillic uppercase + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_Plus, Qt::Key_Question, Qt::Key_Percent, Qt::Key_Equal, Qt::Key_Colon, Qt::Key_Slash, Qt::Key_Underscore, 0x2116 /*no sign*/, 0x0406 /*byelorussian-ukrainian i*/, Qt::Key_V }, + { 0x044B /*small yeru*/, 0x0423 /*u*/, 0x0415 /*ie*/, 0x0418 /*i*/, 0x0428 /*sha*/, 0x0429 /*shcha*/, 0x041A /* ka*/, 0x0421 /*es*/, 0x0414 /*de*/, 0x0417 /*ze*/, 0x0426 /*tse*/ }, + { 0x042C /*soft sign*/, 0x042F /*ya*/, 0x0410 /*a*/, 0x041E /*o*/, 0x0416 /*zhe*/, 0x0413 /*ghe*/, 0x0422 /*te*/, 0x041D /*en*/, 0x0412 /*ve*/, 0x041C /*em*/, 0x0427 /*che*/ }, + { Qt::Key_Shift, 0x042E /* yu*/, 0x0419 /* short i*/, 0x042A /*hard sign*/, 0x042D /*e*/, 0x0424 /*ef*/, 0x0425 /*ha*/, 0x041F /*pe*/, 0x0420 /*er*/, 0x041B /*el*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_AsciiTilde, Qt::Key_ParenRight, Qt::Key_Semicolon, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_Slash }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde, Qt::Key_NumberSign }, - { }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_Slash }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde, Qt::Key_NumberSign }, + { }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Czech { { - { - { Qt::Key_Plus, 0x011B /*e caron*/, 0x0161 /*s caron*/, 0x010D /*c caron*/, 0x0159 /*r caron*/, 0x017E /*z caron*/, LOWER( Qt::Key_Yacute ), LOWER( Qt::Key_Aacute ), LOWER( Qt::Key_Iacute ), LOWER( Qt::Key_Eacute ), Qt::Key_Equal, Qt::Key_Asterisk }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Uacute ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x016F /*u ring*/, Qt::Key_section }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Semicolon, Qt::Key_ParenRight, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Plus, 0x011B /*e caron*/, 0x0161 /*s caron*/, 0x010D /*c caron*/, 0x0159 /*r caron*/, 0x017E /*z caron*/, LOWER( Qt::Key_Yacute ), LOWER( Qt::Key_Aacute ), LOWER( Qt::Key_Iacute ), LOWER( Qt::Key_Eacute ), Qt::Key_Equal, Qt::Key_Asterisk }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Uacute ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x016F /*u ring*/, Qt::Key_section }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Semicolon, Qt::Key_ParenRight, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Percent, Qt::Key_Apostrophe }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Slash }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_QuoteDbl, Qt::Key_Exclam }, - { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_degree, Qt::Key_ParenLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Question, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Percent, Qt::Key_Apostrophe }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Slash }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_QuoteDbl, Qt::Key_Exclam }, + { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_degree, Qt::Key_ParenLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Question, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_AsciiTilde, 0x011A /*E caron*/, 0x0160 /*S caron*/, 0x010C /*C caron*/, 0x0158 /*R caron*/, 0x017D /*Z caron*/, Qt::Key_Yacute, Qt::Key_Aacute, Qt::Key_Iacute, Qt::Key_Eacute, Qt::Key_currency }, - { Qt::Key_Backslash, Qt::Key_Bar, 0x20AC /*Euro*/, Qt::Key_unknown, Qt::Key_division, Qt::Key_multiply }, - { 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, Qt::Key_BracketLeft, Qt::Key_BracketRight, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp }, - { Qt::Key_NumberSign, Qt::Key_Ampersand, Qt::Key_At, Qt::Key_BraceLeft, Qt::Key_BraceRight, Qt::Key_Less, Qt::Key_Greater, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Asterisk, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + + { Qt::Key_AsciiTilde, 0x011A /*E caron*/, 0x0160 /*S caron*/, 0x010C /*C caron*/, 0x0158 /*R caron*/, 0x017D /*Z caron*/, Qt::Key_Yacute, Qt::Key_Aacute, Qt::Key_Iacute, Qt::Key_Eacute, Qt::Key_currency }, + { Qt::Key_Backslash, Qt::Key_Bar, 0x20AC /*Euro*/, Qt::Key_unknown, Qt::Key_division, Qt::Key_multiply }, + { 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, Qt::Key_BracketLeft, Qt::Key_BracketRight, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp }, + { Qt::Key_NumberSign, Qt::Key_Ampersand, Qt::Key_At, Qt::Key_BraceLeft, Qt::Key_BraceRight, Qt::Key_Less, Qt::Key_Greater, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Asterisk, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // German { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_ssharp, Qt::Key_acute }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Udiaeresis ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Odiaeresis ), LOWER( Qt::Key_Adiaeresis ) }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_AsciiCircum, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_ssharp, Qt::Key_acute }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Udiaeresis ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Odiaeresis ), LOWER( Qt::Key_Adiaeresis ) }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_AsciiCircum, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_QuoteLeft }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Udiaeresis }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Odiaeresis, Qt::Key_Adiaeresis }, - { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Apostrophe, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_QuoteLeft }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Udiaeresis }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Odiaeresis, Qt::Key_Adiaeresis }, + { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Apostrophe, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, - { Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_NumberSign, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, + { Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_NumberSign, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Danish { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Aring ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_AE ), LOWER( Qt::Key_Ooblique ) }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_onehalf, Qt::Key_acute, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Aring ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_AE ), LOWER( Qt::Key_Ooblique ) }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_onehalf, Qt::Key_acute, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_currency, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Aring }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_AE, Qt::Key_Ooblique }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_QuoteLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_currency, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Aring }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_AE, Qt::Key_Ooblique }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_QuoteLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_paragraph, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, - { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright }, - { }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_cent, Qt::Key_unknown, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_paragraph, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, + { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright }, + { }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_cent, Qt::Key_unknown, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Greek { { - { - // lowercase - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Apostrophe, Qt::Key_Plus }, - { 0x00B7 /*middle dot*/, 0x03C2 /*sigma*/, 0x03B5 /*epsilon*/, 0x03C1 /*rho*/, 0x03C4 /*tau*/, 0x03C5 /*upsilon*/, 0x03B8 /*theta*/, 0x03B9 /*iota*/, 0x03BF /*omicron*/, 0x03C0 /*pi*/, 0x2019 /*right single quote*/ }, - { 0x03B1 /*alpha*/, 0x03C3 /*sigma*/, 0x03B4 /*delta*/, 0x03C6 /*phi*/, 0x03B3 /*gamma*/, 0x03B7 /*eta*/, 0x03BE /*xi*/, 0x03BA /*kappa*/, 0x03BB /*lamda*/, Qt::Key_BracketLeft, Qt::Key_BracketRight }, - { Qt::Key_CapsLock, 0x03B6 /*zeta*/, 0x03C7 /*chi*/, 0x03C8 /*psi*/, 0x03C9 /*omega*/, 0x03B2 /*beta*/, 0x03BD /*nu*/, 0x03BC /*mu*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_onehalf, Qt::Key_twosuperior, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + // lowercase + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Apostrophe, Qt::Key_Plus }, + { 0x00B7 /*middle dot*/, 0x03C2 /*sigma*/, 0x03B5 /*epsilon*/, 0x03C1 /*rho*/, 0x03C4 /*tau*/, 0x03C5 /*upsilon*/, 0x03B8 /*theta*/, 0x03B9 /*iota*/, 0x03BF /*omicron*/, 0x03C0 /*pi*/, 0x2019 /*right single quote*/ }, + { 0x03B1 /*alpha*/, 0x03C3 /*sigma*/, 0x03B4 /*delta*/, 0x03C6 /*phi*/, 0x03B3 /*gamma*/, 0x03B7 /*eta*/, 0x03BE /*xi*/, 0x03BA /*kappa*/, 0x03BB /*lamda*/, Qt::Key_BracketLeft, Qt::Key_BracketRight }, + { Qt::Key_CapsLock, 0x03B6 /*zeta*/, 0x03C7 /*chi*/, 0x03C8 /*psi*/, 0x03C9 /*omega*/, 0x03B2 /*beta*/, 0x03BD /*nu*/, 0x03BC /*mu*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_onehalf, Qt::Key_twosuperior, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - // uppercase - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_sterling, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_notsign, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_degree, Qt::Key_Asterisk }, - { 0x2015 /*horizontal bar*/, Qt::Key_brokenbar, 0x0395 /*epsilon*/, 0x03A1 /*rho*/, 0x03A4 /*tau*/, 0x03A5 /*upsilon*/, 0x0398 /*theta*/, 0x0399 /*iota*/, 0x039F /*omicron*/, 0x03A0 /*pi*/, 0x2018 /*left single quote*/ }, - { 0x0391 /*alpha*/, 0x03A3 /*sigma*/, 0x0394 /*delta*/, 0x03A6 /*phi*/, 0x0393 /*gamma*/, 0x0397 /*eta*/, 0x039E /*xi*/, 0x039A /*kappa*/, 0x039B /*lamda*/, Qt::Key_guillemotleft, Qt::Key_guillemotright }, - { Qt::Key_Shift, 0x0396 /*zeta*/, 0x03A7 /*chi*/, 0x03A8 /*psi*/, 0x03A9 /*omega*/, 0x0392 /*beta*/, 0x039D /*nu*/, 0x039C /*mu*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_plusminus, Qt::Key_threesuperior, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + // uppercase + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_sterling, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_notsign, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_degree, Qt::Key_Asterisk }, + { 0x2015 /*horizontal bar*/, Qt::Key_brokenbar, 0x0395 /*epsilon*/, 0x03A1 /*rho*/, 0x03A4 /*tau*/, 0x03A5 /*upsilon*/, 0x0398 /*theta*/, 0x0399 /*iota*/, 0x039F /*omicron*/, 0x03A0 /*pi*/, 0x2018 /*left single quote*/ }, + { 0x0391 /*alpha*/, 0x03A3 /*sigma*/, 0x0394 /*delta*/, 0x03A6 /*phi*/, 0x0393 /*gamma*/, 0x0397 /*eta*/, 0x039E /*xi*/, 0x039A /*kappa*/, 0x039B /*lamda*/, Qt::Key_guillemotleft, Qt::Key_guillemotright }, + { Qt::Key_Shift, 0x0396 /*zeta*/, 0x03A7 /*chi*/, 0x03A8 /*psi*/, 0x03A9 /*omega*/, 0x0392 /*beta*/, 0x039D /*nu*/, 0x039C /*mu*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_plusminus, Qt::Key_threesuperior, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_paragraph, Qt::Key_sterling, 0x0384 /*tonos*/, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, - { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_threequarters, Qt::Key_Bar }, - { }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_cent, Qt::Key_unknown, Qt::Key_mu, }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_paragraph, Qt::Key_sterling, 0x0384 /*tonos*/, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, + { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_threequarters, Qt::Key_Bar }, + { }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_cent, Qt::Key_unknown, Qt::Key_mu, }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // English (GB) { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_acute }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ) }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_AsciiCircum, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_acute }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ) }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_AsciiCircum, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_QuoteLeft }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Apostrophe, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_QuoteLeft }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Apostrophe, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, - { Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_NumberSign, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, + { Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_NumberSign, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // English (US) { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, Qt::Key_Equal }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), Qt::Key_Semicolon, Qt::Key_Apostrophe }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Comma, Qt::Key_Period, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_QuoteLeft, Qt::Key_Bar, Qt::Key_Space, Qt::Key_Slash, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, Qt::Key_Equal }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), Qt::Key_Semicolon, Qt::Key_Apostrophe }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Comma, Qt::Key_Period, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_QuoteLeft, Qt::Key_Bar, Qt::Key_Space, Qt::Key_Slash, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_At, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_AsciiCircum, Qt::Key_Ampersand, Qt::Key_Asterisk, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Underscore, Qt::Key_Plus }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Colon, Qt::Key_QuoteDbl }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Less, Qt::Key_Greater, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_AsciiTilde, Qt::Key_Backslash, Qt::Key_Space, Qt::Key_Question, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_At, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_AsciiCircum, Qt::Key_Ampersand, Qt::Key_Asterisk, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Underscore, Qt::Key_Plus }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Colon, Qt::Key_QuoteDbl }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Less, Qt::Key_Greater, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_AsciiTilde, Qt::Key_Backslash, Qt::Key_Space, Qt::Key_Question, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight }, - { Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright }, - { }, - { Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight }, + { Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright }, + { }, + { Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Spanish { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Apostrophe, Qt::Key_exclamdown }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Ccedilla ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Ntilde ), Qt::Key_QuoteLeft }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_masculine, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Apostrophe, Qt::Key_exclamdown }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Ccedilla ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Ntilde ), Qt::Key_QuoteLeft }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_masculine, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_periodcentered, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_QuoteLeft }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Ccedilla }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Ntilde, Qt::Key_acute }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_ordfeminine, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_periodcentered, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_QuoteLeft }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Ccedilla }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Ntilde, Qt::Key_acute }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_ordfeminine, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, - { Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde, Qt::Key_NumberSign }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, + { Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde, Qt::Key_NumberSign }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Finnish { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Aring ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Odiaeresis ), LOWER( Qt::Key_Adiaeresis ) }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_acute, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Aring ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Odiaeresis ), LOWER( Qt::Key_Adiaeresis ) }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_acute, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_currency, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Aring }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Odiaeresis, Qt::Key_Adiaeresis }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_onehalf, Qt::Key_QuoteLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_currency, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Aring }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Odiaeresis, Qt::Key_Adiaeresis }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_onehalf, Qt::Key_QuoteLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_paragraph, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, - { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_Bar }, - { }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_cent, Qt::Key_unknown, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_paragraph, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, + { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_Bar }, + { }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_cent, Qt::Key_unknown, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // French { { - { - { Qt::Key_Ampersand, LOWER( Qt::Key_Eacute ), Qt::Key_QuoteDbl, Qt::Key_Apostrophe, Qt::Key_ParenLeft, Qt::Key_Minus, LOWER( Qt::Key_Egrave ), Qt::Key_Underscore, LOWER( Qt::Key_Ccedilla ), LOWER( Qt::Key_Agrave ), Qt::Key_ParenRight, Qt::Key_Equal }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), Qt::Key_Asterisk }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_M ), LOWER( Qt::Key_Ugrave ) }, - { Qt::Key_CapsLock, LOWER( Qt::Key_W ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), Qt::Key_Comma, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_twosuperior, Qt::Key_Space, Qt::Key_Plus, Qt::Key_Exclam, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Ampersand, LOWER( Qt::Key_Eacute ), Qt::Key_QuoteDbl, Qt::Key_Apostrophe, Qt::Key_ParenLeft, Qt::Key_Minus, LOWER( Qt::Key_Egrave ), Qt::Key_Underscore, LOWER( Qt::Key_Ccedilla ), LOWER( Qt::Key_Agrave ), Qt::Key_ParenRight, Qt::Key_Equal }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), Qt::Key_Asterisk }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_M ), LOWER( Qt::Key_Ugrave ) }, + { Qt::Key_CapsLock, LOWER( Qt::Key_W ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), Qt::Key_Comma, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_twosuperior, Qt::Key_Space, Qt::Key_Plus, Qt::Key_Exclam, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_degree, Qt::Key_mu }, - { Qt::Key_A, Qt::Key_Z, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_sterling }, - { Qt::Key_Q, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_M, Qt::Key_Ugrave }, - { Qt::Key_Shift, Qt::Key_W, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_Question, Qt::Key_Period, Qt::Key_Slash, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_threesuperior, Qt::Key_Space, Qt::Key_Percent, Qt::Key_section, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_degree, Qt::Key_mu }, + { Qt::Key_A, Qt::Key_Z, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_sterling }, + { Qt::Key_Q, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_M, Qt::Key_Ugrave }, + { Qt::Key_Shift, Qt::Key_W, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_Question, Qt::Key_Period, Qt::Key_Slash, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_threesuperior, Qt::Key_Space, Qt::Key_Percent, Qt::Key_section, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { 0x20AC /*Euro*/, Qt::Key_AsciiTilde, Qt::Key_NumberSign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_Bar, Qt::Key_QuoteLeft, Qt::Key_Backslash, Qt::Key_AsciiCircum, Qt::Key_At, Qt::Key_BracketRight, Qt::Key_BraceRight }, - { LOWER( Qt::Key_Agrave ), LOWER( Qt::Key_Egrave ), LOWER( Qt::Key_Igrave ), LOWER( Qt::Key_Ograve ), LOWER( Qt::Key_Ugrave ), Qt::Key_Agrave, Qt::Key_Egrave, Qt::Key_Igrave, Qt::Key_Ograve, Qt::Key_Ugrave, Qt::Key_unknown }, - { LOWER( Qt::Key_Acircumflex ), LOWER( Qt::Key_Ecircumflex ), LOWER( Qt::Key_Icircumflex ), LOWER( Qt::Key_Ocircumflex ), LOWER( Qt::Key_Ucircumflex ), Qt::Key_Acircumflex, Qt::Key_Ecircumflex, Qt::Key_Icircumflex, Qt::Key_Ocircumflex, Qt::Key_Ucircumflex }, - { LOWER( Qt::Key_Atilde ), LOWER( Qt::Key_Ntilde ), LOWER( Qt::Key_Otilde ), Qt::Key_Atilde, Qt::Key_Ntilde, Qt::Key_Otilde, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_unknown, Qt::Key_Space, Qt::Key_unknown, Qt::Key_unknown, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { 0x20AC /*Euro*/, Qt::Key_AsciiTilde, Qt::Key_NumberSign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_Bar, Qt::Key_QuoteLeft, Qt::Key_Backslash, Qt::Key_AsciiCircum, Qt::Key_At, Qt::Key_BracketRight, Qt::Key_BraceRight }, + { LOWER( Qt::Key_Agrave ), LOWER( Qt::Key_Egrave ), LOWER( Qt::Key_Igrave ), LOWER( Qt::Key_Ograve ), LOWER( Qt::Key_Ugrave ), Qt::Key_Agrave, Qt::Key_Egrave, Qt::Key_Igrave, Qt::Key_Ograve, Qt::Key_Ugrave, Qt::Key_unknown }, + { LOWER( Qt::Key_Acircumflex ), LOWER( Qt::Key_Ecircumflex ), LOWER( Qt::Key_Icircumflex ), LOWER( Qt::Key_Ocircumflex ), LOWER( Qt::Key_Ucircumflex ), Qt::Key_Acircumflex, Qt::Key_Ecircumflex, Qt::Key_Icircumflex, Qt::Key_Ocircumflex, Qt::Key_Ucircumflex }, + { LOWER( Qt::Key_Atilde ), LOWER( Qt::Key_Ntilde ), LOWER( Qt::Key_Otilde ), Qt::Key_Atilde, Qt::Key_Ntilde, Qt::Key_Otilde, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_unknown, Qt::Key_Space, Qt::Key_unknown, Qt::Key_unknown, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Hungarian { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, LOWER( Qt::Key_Odiaeresis ), LOWER( Qt::Key_Udiaeresis ), LOWER( Qt::Key_Oacute ) }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x0151 /*o double acute*/ }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Eacute ), LOWER( Qt::Key_Aacute ) }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_0, LOWER( Qt::Key_Icircumflex ), LOWER( Qt::Key_Acircumflex ), Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, LOWER( Qt::Key_Odiaeresis ), LOWER( Qt::Key_Udiaeresis ), LOWER( Qt::Key_Oacute ) }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x0151 /*o double acute*/ }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Eacute ), LOWER( Qt::Key_Aacute ) }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_0, LOWER( Qt::Key_Icircumflex ), LOWER( Qt::Key_Acircumflex ), Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Apostrophe, Qt::Key_QuoteDbl, Qt::Key_Plus, Qt::Key_Exclam, Qt::Key_Percent, Qt::Key_Slash, Qt::Key_Equal, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Odiaeresis, Qt::Key_Udiaeresis, Qt::Key_Oacute }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x0150 /*O double acute*/ }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Eacute, Qt::Key_Aacute }, - { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_Icircumflex, Qt::Key_Acircumflex, Qt::Key_Space, Qt::Key_Question, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Apostrophe, Qt::Key_QuoteDbl, Qt::Key_Plus, Qt::Key_Exclam, Qt::Key_Percent, Qt::Key_Slash, Qt::Key_Equal, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Odiaeresis, Qt::Key_Udiaeresis, Qt::Key_Oacute }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x0150 /*O double acute*/ }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Eacute, Qt::Key_Aacute }, + { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_Icircumflex, Qt::Key_Acircumflex, Qt::Key_Space, Qt::Key_Question, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_currency }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_division, Qt::Key_multiply }, - { 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, LOWER( Qt::Key_Adiaeresis ), Qt::Key_Adiaeresis, LOWER( Qt::Key_Iacute ), Qt::Key_Iacute, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_AsciiTilde, Qt::Key_Minus, Qt::Key_Underscore, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_currency }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_division, Qt::Key_multiply }, + { 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, LOWER( Qt::Key_Adiaeresis ), Qt::Key_Adiaeresis, LOWER( Qt::Key_Iacute ), Qt::Key_Iacute, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_AsciiTilde, Qt::Key_Minus, Qt::Key_Underscore, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Italian { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Igrave, Qt::Key_Ugrave }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), Qt::Key_Egrave }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), Qt::Key_Ograve, Qt::Key_Agrave }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_AsciiCircum, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Igrave, Qt::Key_Ugrave }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), Qt::Key_Egrave }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), Qt::Key_Ograve, Qt::Key_Agrave }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_AsciiCircum, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_QuoteLeft }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Eacute }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, LOWER( Qt::Key_Ccedilla ), Qt::Key_degree }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Apostrophe, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_QuoteLeft }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Eacute }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, LOWER( Qt::Key_Ccedilla ), Qt::Key_degree }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Apostrophe, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, - { Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, + { Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, @@ -385,126 +314,102 @@ { // Some special characters (backspace, enter) are replaced with Japanese equivalents for rendering purposes { - { - // katakana - { 0x30A2 /*a*/, 0x30AB /*ka*/, 0x30B5 /*sa*/, 0x30BF /*ta*/, 0x30CA /*na*/, 0x30CF /*ha*/, 0x30DE /*ma*/, 0x30E4 /*ya*/, 0x30E9 /*ra*/, Qt::Key_Muhenkan /*backspace*/ }, - { 0x30A4 /*i*/, 0x30AD /*ki*/, 0x30B7 /*shi*/, 0x30C1 /*chi*/, 0x30CB /*ni*/, 0x30D2 /*hi*/, 0x30DF /*mi*/, Qt::Key_unknown, 0x30EA /*ri*/, Qt::Key_Mode_switch }, - { 0x30A6 /*u*/, 0x30AF /*ku*/, 0x30B9 /*su*/, 0x30C4 /*tsu*/, 0x30CC /*nu*/, 0x30D5 /*fu*/, 0x30E0 /*mu*/, 0x30E6 /*yu*/, 0x30EB /*ru*/, 0x3001 /*comma*/ }, - { 0x30A8 /*e*/, 0x30B1 /*ke*/, 0x30BB /*se*/, 0x30C6 /*te*/, 0x30CD /*ne*/, 0x30D8 /*he*/, 0x30E1 /*me*/, Qt::Key_unknown, 0x30EC /*re*/, Qt::Key_Kana_Lock }, - { 0x30AA /*o*/, 0x30B3 /*ko*/, 0x30BD /*so*/, 0x30C8 /*to*/, 0x30CE /*no*/, 0x30DB /*ho*/, 0x30E2 /*mo*/, 0x30E8 /*yo*/, 0x30ED /*ro*/, Qt::Key_Kanji /*enter*/ } - } + // katakana + { 0x30A2 /*a*/, 0x30AB /*ka*/, 0x30B5 /*sa*/, 0x30BF /*ta*/, 0x30CA /*na*/, 0x30CF /*ha*/, 0x30DE /*ma*/, 0x30E4 /*ya*/, 0x30E9 /*ra*/, Qt::Key_Muhenkan /*backspace*/ }, + { 0x30A4 /*i*/, 0x30AD /*ki*/, 0x30B7 /*shi*/, 0x30C1 /*chi*/, 0x30CB /*ni*/, 0x30D2 /*hi*/, 0x30DF /*mi*/, Qt::Key_unknown, 0x30EA /*ri*/, Qt::Key_Mode_switch }, + { 0x30A6 /*u*/, 0x30AF /*ku*/, 0x30B9 /*su*/, 0x30C4 /*tsu*/, 0x30CC /*nu*/, 0x30D5 /*fu*/, 0x30E0 /*mu*/, 0x30E6 /*yu*/, 0x30EB /*ru*/, 0x3001 /*comma*/ }, + { 0x30A8 /*e*/, 0x30B1 /*ke*/, 0x30BB /*se*/, 0x30C6 /*te*/, 0x30CD /*ne*/, 0x30D8 /*he*/, 0x30E1 /*me*/, Qt::Key_unknown, 0x30EC /*re*/, Qt::Key_Kana_Lock }, + { 0x30AA /*o*/, 0x30B3 /*ko*/, 0x30BD /*so*/, 0x30C8 /*to*/, 0x30CE /*no*/, 0x30DB /*ho*/, 0x30E2 /*mo*/, 0x30E8 /*yo*/, 0x30ED /*ro*/, Qt::Key_Kanji /*enter*/ } }, // v, n ??? { - { - // katakana deck 2 - { 0x30A1 /*small a*/, 0x30AC /*ga*/, 0x30B6 /*za*/, 0x30C0 /*da*/, 0x30D0 /*ba*/, 0x30D1 /*pa*/, 0x30EF /*wa*/, 0x30E3 /*small ya*/, 0x30FB /*middle dot*/, Qt::Key_Muhenkan /*backspace*/ }, - { 0x30A3 /*small i*/, 0x30AE /*gi*/, 0x30B8 /*ji*/, 0x30C2 /*ji2*/, 0x30D3 /*bi*/, 0x30D4 /*pi*/, 0x30F0 /*wi*/, Qt::Key_unknown, 0x30FC /*prolonged sound mark*/, Qt::Key_Mode_switch }, - { 0x30A5 /*small u*/, 0x30B0 /*gu*/, 0x30BA /*zu*/, 0x30C5 /*zu2*/, 0x30D6 /*bu*/, 0x30D7 /*pu*/, 0x30F4 /*vu*/, 0x30E5 /*small yu*/, 0x30FD /*iteration mark*/, 0xFF61 /*period*/ }, - { 0x30A7 /*small e*/, 0x30B2 /*ge*/, 0x30BC /*ze*/, 0x30C7 /*de*/, 0x30D9 /*be*/, 0x30DA /*pe*/, 0x30F1 /*we*/, Qt::Key_unknown, 0x30FE /*voiced iteration mark*/, Qt::Key_Kana_Shift }, - { 0x30A9 /*small o*/, 0x30B4 /*go*/, 0x30BE /*zo*/, 0x30C9 /*do*/, 0x30DC /*bo*/, 0x30DD /*po*/, 0x30F2 /*wo*/, 0x30E7 /*small yo*/, 0x30F3 /*n*/, Qt::Key_Kanji /*enter*/ } - } + // katakana deck 2 + { 0x30A1 /*small a*/, 0x30AC /*ga*/, 0x30B6 /*za*/, 0x30C0 /*da*/, 0x30D0 /*ba*/, 0x30D1 /*pa*/, 0x30EF /*wa*/, 0x30E3 /*small ya*/, 0x30FB /*middle dot*/, Qt::Key_Muhenkan /*backspace*/ }, + { 0x30A3 /*small i*/, 0x30AE /*gi*/, 0x30B8 /*ji*/, 0x30C2 /*ji2*/, 0x30D3 /*bi*/, 0x30D4 /*pi*/, 0x30F0 /*wi*/, Qt::Key_unknown, 0x30FC /*prolonged sound mark*/, Qt::Key_Mode_switch }, + { 0x30A5 /*small u*/, 0x30B0 /*gu*/, 0x30BA /*zu*/, 0x30C5 /*zu2*/, 0x30D6 /*bu*/, 0x30D7 /*pu*/, 0x30F4 /*vu*/, 0x30E5 /*small yu*/, 0x30FD /*iteration mark*/, 0xFF61 /*period*/ }, + { 0x30A7 /*small e*/, 0x30B2 /*ge*/, 0x30BC /*ze*/, 0x30C7 /*de*/, 0x30D9 /*be*/, 0x30DA /*pe*/, 0x30F1 /*we*/, Qt::Key_unknown, 0x30FE /*voiced iteration mark*/, Qt::Key_Kana_Shift }, + { 0x30A9 /*small o*/, 0x30B4 /*go*/, 0x30BE /*zo*/, 0x30C9 /*do*/, 0x30DC /*bo*/, 0x30DD /*po*/, 0x30F2 /*wo*/, 0x30E7 /*small yo*/, 0x30F3 /*n*/, Qt::Key_Kanji /*enter*/ } }, { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Equal, Qt::Key_Muhenkan }, - { Qt::Key_At, Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_acute, Qt::Key_Mode_switch }, - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiTilde }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_registered, Qt::Key_copyright, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_Question }, - { Qt::Key_Plus, Qt::Key_Asterisk, Qt::Key_Minus, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Kanji } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Equal, Qt::Key_Muhenkan }, + { Qt::Key_At, Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_acute, Qt::Key_Mode_switch }, + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiTilde }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_registered, Qt::Key_copyright, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_Question }, + { Qt::Key_Plus, Qt::Key_Asterisk, Qt::Key_Minus, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Kanji } }, }, // Latvian { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, LOWER( Qt::Key_F ) }, - { 0x016B /*u macron*/, LOWER( Qt::Key_G ), LOWER( Qt::Key_J ), LOWER( Qt::Key_R ), LOWER( Qt::Key_M ), LOWER( Qt::Key_V ), LOWER( Qt::Key_N ), LOWER( Qt::Key_Z ), 0x0113 /*e macron*/, 0x010D /*c caron*/, 0x017E /*z caron*/ }, - { 0x0161 /*s caron*/, LOWER( Qt::Key_U ), LOWER( Qt::Key_S ), LOWER( Qt::Key_I ), LOWER( Qt::Key_L ), LOWER( Qt::Key_D ), LOWER( Qt::Key_A ), LOWER( Qt::Key_T ), LOWER( Qt::Key_E ), LOWER( Qt::Key_C ), LOWER( Qt::Key_H ) }, - { Qt::Key_CapsLock, 0x0146 /*n cedilla*/, LOWER( Qt::Key_B ), 0x012B /*i macron*/, LOWER( Qt::Key_K ), LOWER( Qt::Key_P ), LOWER( Qt::Key_O ), 0x0101 /*a macron*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, 0x0123 /*g cedilla*/, 0x0137 /*k cedilla*/, 0x013C /*l cedilla*/, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, LOWER( Qt::Key_F ) }, + { 0x016B /*u macron*/, LOWER( Qt::Key_G ), LOWER( Qt::Key_J ), LOWER( Qt::Key_R ), LOWER( Qt::Key_M ), LOWER( Qt::Key_V ), LOWER( Qt::Key_N ), LOWER( Qt::Key_Z ), 0x0113 /*e macron*/, 0x010D /*c caron*/, 0x017E /*z caron*/ }, + { 0x0161 /*s caron*/, LOWER( Qt::Key_U ), LOWER( Qt::Key_S ), LOWER( Qt::Key_I ), LOWER( Qt::Key_L ), LOWER( Qt::Key_D ), LOWER( Qt::Key_A ), LOWER( Qt::Key_T ), LOWER( Qt::Key_E ), LOWER( Qt::Key_C ), LOWER( Qt::Key_H ) }, + { Qt::Key_CapsLock, 0x0146 /*n cedilla*/, LOWER( Qt::Key_B ), 0x012B /*i macron*/, LOWER( Qt::Key_K ), LOWER( Qt::Key_P ), LOWER( Qt::Key_O ), 0x0101 /*a macron*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, 0x0123 /*g cedilla*/, 0x0137 /*k cedilla*/, 0x013C /*l cedilla*/, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Slash, Qt::Key_Ampersand, Qt::Key_multiply, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Underscore, Qt::Key_F }, - { 0x016A /*U macron*/, Qt::Key_G, Qt::Key_J, Qt::Key_R, Qt::Key_M, Qt::Key_V, Qt::Key_N, Qt::Key_Z, 0x0112 /*E macron*/, 0x010C /*C caron*/, 0x017D /*Z caron*/ }, - { 0x0160 /*S caron*/, Qt::Key_U, Qt::Key_S, Qt::Key_I, Qt::Key_L, Qt::Key_D, Qt::Key_A, Qt::Key_T, Qt::Key_E, Qt::Key_C, Qt::Key_H }, - { Qt::Key_Shift, 0x0145 /*N cedilla*/, Qt::Key_B, 0x012A /*I macron*/, Qt::Key_K, Qt::Key_P, Qt::Key_O, 0x0100 /*A macron*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, 0x0122 /*G cedilla*/, 0x0136 /*K cedilla*/, 0x013B /*L cedilla*/, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Slash, Qt::Key_Ampersand, Qt::Key_multiply, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Underscore, Qt::Key_F }, + { 0x016A /*U macron*/, Qt::Key_G, Qt::Key_J, Qt::Key_R, Qt::Key_M, Qt::Key_V, Qt::Key_N, Qt::Key_Z, 0x0112 /*E macron*/, 0x010C /*C caron*/, 0x017D /*Z caron*/ }, + { 0x0160 /*S caron*/, Qt::Key_U, Qt::Key_S, Qt::Key_I, Qt::Key_L, Qt::Key_D, Qt::Key_A, Qt::Key_T, Qt::Key_E, Qt::Key_C, Qt::Key_H }, + { Qt::Key_Shift, 0x0145 /*N cedilla*/, Qt::Key_B, 0x012A /*I macron*/, Qt::Key_K, Qt::Key_P, Qt::Key_O, 0x0100 /*A macron*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, 0x0122 /*G cedilla*/, 0x0136 /*K cedilla*/, 0x013B /*L cedilla*/, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_acute }, - { Qt::Key_At, Qt::Key_Q, 0x0122 /*R cedilla*/, Qt::Key_W, Qt::Key_Y, Qt::Key_X, Qt::Key_Otilde, Qt::Key_Equal, 0x2013 /*en dash*/, Qt::Key_Question, Qt::Key_AsciiTilde }, - { Qt::Key_registered, LOWER( Qt::Key_Q ), 0x0157 /*r cedilla*/, LOWER( Qt::Key_W ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_Otilde ), 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_QuoteDbl, Qt::Key_NumberSign }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_acute }, + { Qt::Key_At, Qt::Key_Q, 0x0122 /*R cedilla*/, Qt::Key_W, Qt::Key_Y, Qt::Key_X, Qt::Key_Otilde, Qt::Key_Equal, 0x2013 /*en dash*/, Qt::Key_Question, Qt::Key_AsciiTilde }, + { Qt::Key_registered, LOWER( Qt::Key_Q ), 0x0157 /*r cedilla*/, LOWER( Qt::Key_W ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_Otilde ), 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_QuoteDbl, Qt::Key_NumberSign }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Lithuanian { { - { - { 0x0105 /*a ogonek*/, 0x010D /*c caron*/, 0x0119 /*e ogonek*/, 0x0117 /*i ogonek*/, 0x0161 /*s caron*/, 0x0173 /*u ogonek*/, 0x016B /*u macron*/, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, 0x017E /*z caron*/ }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), Qt::Key_Semicolon, Qt::Key_Apostrophe }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_QuoteLeft, Qt::Key_Backslash, Qt::Key_Slash, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { 0x0105 /*a ogonek*/, 0x010D /*c caron*/, 0x0119 /*e ogonek*/, 0x0117 /*i ogonek*/, 0x0161 /*s caron*/, 0x0173 /*u ogonek*/, 0x016B /*u macron*/, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, 0x017E /*z caron*/ }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), Qt::Key_Semicolon, Qt::Key_Apostrophe }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_QuoteLeft, Qt::Key_Backslash, Qt::Key_Slash, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { 0x0104 /*A ogonek*/, 0x010C /*C caron*/, 0x0118 /*E ogonek*/, 0x0116 /*I ogonek*/, 0x0160 /*S caron*/, 0x0172 /*U ogonek*/, 0x016A /*U macron*/, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Underscore, 0x017D /*Z caron*/ }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Colon, Qt::Key_QuoteDbl }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_AsciiTilde, Qt::Key_Bar, Qt::Key_Question, Qt::Key_Space, Qt::Key_Less, Qt::Key_Greater, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { 0x0104 /*A ogonek*/, 0x010C /*C caron*/, 0x0118 /*E ogonek*/, 0x0116 /*I ogonek*/, 0x0160 /*S caron*/, 0x0172 /*U ogonek*/, 0x016A /*U macron*/, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Underscore, 0x017D /*Z caron*/ }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Colon, Qt::Key_QuoteDbl }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_AsciiTilde, Qt::Key_Bar, Qt::Key_Question, Qt::Key_Space, Qt::Key_Less, Qt::Key_Greater, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Equal }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_Percent, Qt::Key_Asterisk, Qt::Key_Plus, Qt::Key_Exclam }, - { Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceLeft, Qt::Key_BraceRight, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiCircum, Qt::Key_NumberSign }, - { Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Equal }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_Percent, Qt::Key_Asterisk, Qt::Key_Plus, Qt::Key_Exclam }, + { Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceLeft, Qt::Key_BraceRight, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiCircum, Qt::Key_NumberSign }, + { Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Dutch { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Slash, Qt::Key_degree }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), Qt::Key_Asterisk }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), Qt::Key_Plus, Qt::Key_acute }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_At, Qt::Key_Less, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Slash, Qt::Key_degree }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), Qt::Key_Asterisk }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), Qt::Key_Plus, Qt::Key_acute }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_At, Qt::Key_Less, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Underscore, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Apostrophe, Qt::Key_Question, Qt::Key_AsciiTilde }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Bar }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_plusminus, Qt::Key_QuoteLeft }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_Greater, Qt::Key_Equal, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Underscore, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Apostrophe, Qt::Key_Question, Qt::Key_AsciiTilde }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Bar }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_plusminus, Qt::Key_QuoteLeft }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_Greater, Qt::Key_Equal, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_paragraph, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, - { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, - { Qt::Key_ssharp, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright }, - { Qt::Key_cent, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_paragraph, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, + { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar }, + { Qt::Key_ssharp, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright }, + { Qt::Key_cent, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, @@ -512,31 +417,25 @@ // Norwegian { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Aring ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Ooblique ), LOWER( Qt::Key_AE ) }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Bar, Qt::Key_Backslash, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Aring ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Ooblique ), LOWER( Qt::Key_AE ) }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Bar, Qt::Key_Backslash, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_currency, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Aring }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Ooblique, Qt::Key_AE }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_QuoteLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_currency, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Aring }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Ooblique, Qt::Key_AE }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_section, Qt::Key_QuoteLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_paragraph, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, - { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright }, - { }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_cent, Qt::Key_unknown, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_paragraph, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, + { Qt::Key_copyright, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright }, + { }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_cent, Qt::Key_unknown, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_periodcentered, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, #endif @@ -545,31 +444,25 @@ // Polish { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x017C /*z dot*/ }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x0142 /*l stroke*/, 0x0105 /*a ogonek*/ }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, LOWER( Qt::Key_Oacute ), 0x015B /*s acute*/, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x017C /*z dot*/ }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x0142 /*l stroke*/, 0x0105 /*a ogonek*/ }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, LOWER( Qt::Key_Oacute ), 0x015B /*s acute*/, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_currency, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x0144 /*n acute*/ }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, 0x0141 /*L stroke*/, 0x0119 /*E ogonek*/ }, - { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, 0x017A /*z acute*/, 0x0107 /*c acute*/, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_currency, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x0144 /*n acute*/ }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, 0x0141 /*L stroke*/, 0x0119 /*E ogonek*/ }, + { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, 0x017A /*z acute*/, 0x0107 /*c acute*/, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_currency }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_division, Qt::Key_multiply }, - { Qt::Key_section, 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, Qt::Key_AsciiTilde, Qt::Key_Dollar, Qt::Key_ssharp }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_currency }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_division, Qt::Key_multiply }, + { Qt::Key_section, 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, Qt::Key_AsciiTilde, Qt::Key_Dollar, Qt::Key_ssharp }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, #endif @@ -577,213 +470,176 @@ // Portuguese { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Apostrophe, Qt::Key_guillemotleft }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Plus ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Ccedilla ), Qt::Key_masculine }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Backslash, Qt::Key_acute, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Apostrophe, Qt::Key_guillemotleft }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Plus ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Ccedilla ), Qt::Key_masculine }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Backslash, Qt::Key_acute, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_guillemotright }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Asterisk }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Ccedilla, Qt::Key_ordfeminine }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Bar, Qt::Key_QuoteLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_guillemotright }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Asterisk }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_Ccedilla, Qt::Key_ordfeminine }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Bar, Qt::Key_QuoteLeft, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_AsciiTilde }, - { Qt::Key_unknown, Qt::Key_unknown, Qt::Key_unknown, Qt::Key_unknown, Qt::Key_unknown, Qt::Key_section }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiCircum }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_AsciiTilde }, + { Qt::Key_unknown, Qt::Key_unknown, Qt::Key_unknown, Qt::Key_unknown, Qt::Key_unknown, Qt::Key_section }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Romanian { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x0103 /*a breve*/ }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x015F /*s cedilla*/, 0x0163 /*t cedilla*/ }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_BracketRight, LOWER( Qt::Key_Icircumflex ), LOWER( Qt::Key_Acircumflex ), Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Plus, Qt::Key_Apostrophe }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x0103 /*a breve*/ }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x015F /*s cedilla*/, 0x0163 /*t cedilla*/ }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_BracketRight, LOWER( Qt::Key_Icircumflex ), LOWER( Qt::Key_Acircumflex ), Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x0102 /*A breve*/ }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, 0x015E /*S cedilla*/, 0x0162 /*T cedilla*/ }, - { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_BracketLeft, Qt::Key_Icircumflex, Qt::Key_Acircumflex, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x0102 /*A breve*/ }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, 0x015E /*S cedilla*/, 0x0162 /*T cedilla*/ }, + { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_BracketLeft, Qt::Key_Icircumflex, Qt::Key_Acircumflex, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_currency }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_division, Qt::Key_multiply }, - { Qt::Key_section, 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_AsciiTilde, Qt::Key_Minus, Qt::Key_Underscore, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_currency }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_division, Qt::Key_multiply }, + { Qt::Key_section, 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_AsciiTilde, Qt::Key_Minus, Qt::Key_Underscore, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Russian { { - { - // cyrillic lowercase - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_Minus, Qt::Key_Equal }, - { 0x0439 /*short i*/, 0x0446 /*tse*/, 0x0443 /*u*/, 0x043A /*ka*/, 0x0435 /*ie*/, 0x043D /*en*/, 0x0433 /*ghe*/, 0x0448 /*sha*/, 0x0449 /*shcha*/, 0x0437 /*ze*/, 0x0445 /*ha*/ }, - { 0x0444 /*ef*/, 0x044B /*yeru*/, 0x0432 /*ve*/, 0x0430 /*a*/, 0x043F /*pe*/, 0x0440 /*er*/, 0x043E /*o*/, 0x043B /*el*/, 0x0434 /*de*/, 0x0436 /*zhe*/, 0x044D /*e*/ }, - { Qt::Key_CapsLock, 0x044F /*ya*/, 0x0447 /*che*/, 0x0441 /*es*/, 0x043C /*em*/, 0x0438 /*i*/, 0x0442 /*te*/, 0x044C /*soft sign*/, 0x0431 /*be*/, 0x044E /*yu*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, 0x0451 /*io*/, 0x044A /*hard sign*/, Qt::Key_Space, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + // cyrillic lowercase + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_Minus, Qt::Key_Equal }, + { 0x0439 /*short i*/, 0x0446 /*tse*/, 0x0443 /*u*/, 0x043A /*ka*/, 0x0435 /*ie*/, 0x043D /*en*/, 0x0433 /*ghe*/, 0x0448 /*sha*/, 0x0449 /*shcha*/, 0x0437 /*ze*/, 0x0445 /*ha*/ }, + { 0x0444 /*ef*/, 0x044B /*yeru*/, 0x0432 /*ve*/, 0x0430 /*a*/, 0x043F /*pe*/, 0x0440 /*er*/, 0x043E /*o*/, 0x043B /*el*/, 0x0434 /*de*/, 0x0436 /*zhe*/, 0x044D /*e*/ }, + { Qt::Key_CapsLock, 0x044F /*ya*/, 0x0447 /*che*/, 0x0441 /*es*/, 0x043C /*em*/, 0x0438 /*i*/, 0x0442 /*te*/, 0x044C /*soft sign*/, 0x0431 /*be*/, 0x044E /*yu*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, 0x0451 /*io*/, 0x044A /*hard sign*/, Qt::Key_Space, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - // cyrillic uppercase - { Qt::Key_Exclam, Qt::Key_QuoteDbl, 0x2116 /*no sign*/, Qt::Key_Semicolon, Qt::Key_Percent, Qt::Key_Colon, Qt::Key_Question, Qt::Key_Asterisk, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Underscore, Qt::Key_Plus }, - { 0x0419 /*short i*/, 0x0426 /*tse*/, 0x0423 /*u*/, 0x041A /*ka*/, 0x0415 /*ie*/, 0x041D /*en*/, 0x0413 /*ghe*/, 0x0428 /*sha*/, 0x0429 /*shcha*/, 0x0417 /*ze*/, 0x0425 /*ha*/ }, - { 0x0424 /*ef*/, 0x042B /*yeru*/, 0x0412 /*ve*/, 0x0410 /*a*/, 0x041F /*pe*/, 0x0420 /*er*/, 0x041E /*o*/, 0x041B /*el*/, 0x0414 /*de*/, 0x0416 /*zhe*/, 0x042D /*e*/ }, - { Qt::Key_Shift, 0x042F /*ya*/, 0x0427 /*che*/, 0x0421 /*es*/, 0x041C /*em*/, 0x0418 /*i*/, 0x0422 /*te*/, 0x042C /*soft sign*/, 0x0411 /*be*/, 0x042E /*yu*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, 0x0401 /*io*/, 0x042A /*hard sign*/, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + // cyrillic uppercase + { Qt::Key_Exclam, Qt::Key_QuoteDbl, 0x2116 /*no sign*/, Qt::Key_Semicolon, Qt::Key_Percent, Qt::Key_Colon, Qt::Key_Question, Qt::Key_Asterisk, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Underscore, Qt::Key_Plus }, + { 0x0419 /*short i*/, 0x0426 /*tse*/, 0x0423 /*u*/, 0x041A /*ka*/, 0x0415 /*ie*/, 0x041D /*en*/, 0x0413 /*ghe*/, 0x0428 /*sha*/, 0x0429 /*shcha*/, 0x0417 /*ze*/, 0x0425 /*ha*/ }, + { 0x0424 /*ef*/, 0x042B /*yeru*/, 0x0412 /*ve*/, 0x0410 /*a*/, 0x041F /*pe*/, 0x0420 /*er*/, 0x041E /*o*/, 0x041B /*el*/, 0x0414 /*de*/, 0x0416 /*zhe*/, 0x042D /*e*/ }, + { Qt::Key_Shift, 0x042F /*ya*/, 0x0427 /*che*/, 0x0421 /*es*/, 0x041C /*em*/, 0x0418 /*i*/, 0x0422 /*te*/, 0x042C /*soft sign*/, 0x0411 /*be*/, 0x042E /*yu*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, 0x0401 /*io*/, 0x042A /*hard sign*/, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_Slash }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde, Qt::Key_NumberSign }, - { }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_Slash }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_AsciiTilde, Qt::Key_NumberSign }, + { }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Slovene { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Apostrophe, Qt::Key_Plus }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x0161 /*s caron*/ }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x010D /*c caron*/, 0x0107 /*c acute*/ }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, 0x0111 /*d stroke*/, 0x017E /*z caron*/, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Apostrophe, Qt::Key_Plus }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x0161 /*s caron*/ }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x010D /*c caron*/, 0x0107 /*c acute*/ }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, 0x0111 /*d stroke*/, 0x017E /*z caron*/, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x0160 /*S caron*/ }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, 0x010C /*C caron*/, 0x0106 /*C acute*/ }, - { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, 0x0110 /*D stroke*/, 0x017D /*Z caron*/, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Asterisk }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x0160 /*S caron*/ }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, 0x010C /*C caron*/, 0x0106 /*C acute*/ }, + { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, 0x0110 /*D stroke*/, 0x017D /*Z caron*/, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_currency }, - { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_division, Qt::Key_multiply }, - { Qt::Key_section, Qt::Key_AsciiTilde, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_ssharp }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_currency }, + { Qt::Key_At, Qt::Key_registered, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_division, Qt::Key_multiply }, + { Qt::Key_section, Qt::Key_AsciiTilde, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_ssharp }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Slovak { { - { - { Qt::Key_Plus, 0x013E /*l caron*/, 0x0161 /*s caron*/, 0x010D /*c caron*/, 0x0165 /*t caron*/, 0x017E /*z caron*/, LOWER( Qt::Key_Yacute ), LOWER( Qt::Key_Aacute ), LOWER( Qt::Key_Iacute ), LOWER( Qt::Key_Eacute ), Qt::Key_Equal, 0x0148 /*n caron*/ }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Uacute ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Ocircumflex ), Qt::Key_section }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Semicolon, LOWER( Qt::Key_Adiaeresis ), Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Plus, 0x013E /*l caron*/, 0x0161 /*s caron*/, 0x010D /*c caron*/, 0x0165 /*t caron*/, 0x017E /*z caron*/, LOWER( Qt::Key_Yacute ), LOWER( Qt::Key_Aacute ), LOWER( Qt::Key_Iacute ), LOWER( Qt::Key_Eacute ), Qt::Key_Equal, 0x0148 /*n caron*/ }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Z ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), LOWER( Qt::Key_Uacute ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), LOWER( Qt::Key_Ocircumflex ), Qt::Key_section }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Y ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Semicolon, LOWER( Qt::Key_Adiaeresis ), Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Percent, Qt::Key_Asterisk }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Slash }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_QuoteDbl, Qt::Key_Exclam }, - { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_degree, Qt::Key_Ampersand, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Question, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Percent, Qt::Key_Asterisk }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Z, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, Qt::Key_Slash }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, Qt::Key_QuoteDbl, Qt::Key_Exclam }, + { Qt::Key_Shift, Qt::Key_Y, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_degree, Qt::Key_Ampersand, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Question, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_AsciiTilde, 0x011A /*E caron*/, 0x0160 /*S caron*/, 0x010C /*C caron*/, 0x0158 /*R caron*/, 0x017D /*Z caron*/, Qt::Key_Yacute, Qt::Key_Aacute, Qt::Key_Iacute, Qt::Key_Eacute, Qt::Key_currency }, - { Qt::Key_Backslash, Qt::Key_Bar, 0x20AC /*Euro*/, Qt::Key_Apostrophe, Qt::Key_division, Qt::Key_multiply }, - { 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_ParenLeft, Qt::Key_ParenRight, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp }, - { Qt::Key_NumberSign, Qt::Key_Ampersand, Qt::Key_At, Qt::Key_BraceLeft, Qt::Key_BraceRight, Qt::Key_Less, Qt::Key_Greater, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Asterisk, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_AsciiTilde, 0x011A /*E caron*/, 0x0160 /*S caron*/, 0x010C /*C caron*/, 0x0158 /*R caron*/, 0x017D /*Z caron*/, Qt::Key_Yacute, Qt::Key_Aacute, Qt::Key_Iacute, Qt::Key_Eacute, Qt::Key_currency }, + { Qt::Key_Backslash, Qt::Key_Bar, 0x20AC /*Euro*/, Qt::Key_Apostrophe, Qt::Key_division, Qt::Key_multiply }, + { 0x0111 /*d stroke*/, 0x0110 /*D stroke*/, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_ParenLeft, Qt::Key_ParenRight, 0x0142 /*l stroke*/, 0x0141 /*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp }, + { Qt::Key_NumberSign, Qt::Key_Ampersand, Qt::Key_At, Qt::Key_BraceLeft, Qt::Key_BraceRight, Qt::Key_Less, Qt::Key_Greater, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Asterisk, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Turkish { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Asterisk, Qt::Key_Minus }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), 0x0131 /*dotless i*/, LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x011F /*g breve*/ }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x015F /*s cedilla*/, LOWER( Qt::Key_I ) }, - { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), LOWER( Qt::Key_Odiaeresis ), 0x00E7 /*c cedilla*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, LOWER( Qt::Key_Udiaeresis ), Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Asterisk, Qt::Key_Minus }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), 0x0131 /*dotless i*/, LOWER( Qt::Key_O ), LOWER( Qt::Key_P ), 0x011F /*g breve*/ }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ), 0x015F /*s cedilla*/, LOWER( Qt::Key_I ) }, + { Qt::Key_CapsLock, LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), LOWER( Qt::Key_Odiaeresis ), 0x00E7 /*c cedilla*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, LOWER( Qt::Key_Udiaeresis ), Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_Exclam, Qt::Key_Apostrophe, Qt::Key_AsciiCircum, Qt::Key_Plus, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Underscore }, - { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x011E /*G breve*/ }, - { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, 0x015E /*S cedilla*/, 0x0130 /*I dot*/ }, - { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Odiaeresis, 0x00C7 /*C cedilla*/, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Udiaeresis, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_Exclam, Qt::Key_Apostrophe, Qt::Key_AsciiCircum, Qt::Key_Plus, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question, Qt::Key_Underscore }, + { Qt::Key_Q, Qt::Key_W, Qt::Key_E, Qt::Key_R, Qt::Key_T, Qt::Key_Y, Qt::Key_U, Qt::Key_I, Qt::Key_O, Qt::Key_P, 0x011E /*G breve*/ }, + { Qt::Key_A, Qt::Key_S, Qt::Key_D, Qt::Key_F, Qt::Key_G, Qt::Key_H, Qt::Key_J, Qt::Key_K, Qt::Key_L, 0x015E /*S cedilla*/, 0x0130 /*I dot*/ }, + { Qt::Key_Shift, Qt::Key_Z, Qt::Key_X, Qt::Key_C, Qt::Key_V, Qt::Key_B, Qt::Key_N, Qt::Key_M, Qt::Key_Odiaeresis, 0x00C7 /*C cedilla*/, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Udiaeresis, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { - { - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_QuoteDbl }, - { Qt::Key_At, Qt::Key_registered, LOWER( Qt::Key_Eacute ), Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, LOWER( Qt::Key_I ), Qt::Key_AsciiTilde }, - { LOWER( Qt::Key_AE ), 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_NumberSign }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_ssharp, Qt::Key_mu, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_QuoteDbl }, + { Qt::Key_At, Qt::Key_registered, LOWER( Qt::Key_Eacute ), Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, LOWER( Qt::Key_I ), Qt::Key_AsciiTilde }, + { LOWER( Qt::Key_AE ), 0x20AC /*Euro*/, Qt::Key_Dollar, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_NumberSign }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_copyright, Qt::Key_ssharp, Qt::Key_mu, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Space, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }, // Chinese { { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, Qt::Key_Equal }, - { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ) }, - { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ) }, - { LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, Qt::Key_Equal }, + { LOWER( Qt::Key_Q ), LOWER( Qt::Key_W ), LOWER( Qt::Key_E ), LOWER( Qt::Key_R ), LOWER( Qt::Key_T ), LOWER( Qt::Key_Y ), LOWER( Qt::Key_U ), LOWER( Qt::Key_I ), LOWER( Qt::Key_O ), LOWER( Qt::Key_P ) }, + { LOWER( Qt::Key_A ), LOWER( Qt::Key_S ), LOWER( Qt::Key_D ), LOWER( Qt::Key_F ), LOWER( Qt::Key_G ), LOWER( Qt::Key_H ), LOWER( Qt::Key_J ), LOWER( Qt::Key_K ), LOWER( Qt::Key_L ) }, + { LOWER( Qt::Key_Z ), LOWER( Qt::Key_X ), LOWER( Qt::Key_C ), LOWER( Qt::Key_V ), LOWER( Qt::Key_B ), LOWER( Qt::Key_N ), LOWER( Qt::Key_M ), Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Plus, Qt::Key_Minus, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, { { } }, // no upper-case { - { - { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_acute, Qt::Key_QuoteLeft }, - { Qt::Key_At, Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question }, - { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiTilde }, - { Qt::Key_Less, Qt::Key_Greater, Qt::Key_registered, Qt::Key_copyright, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_Backspace }, - { Qt::Key_Mode_switch, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } - } + + { Qt::Key_1, Qt::Key_2, Qt::Key_3, Qt::Key_4, Qt::Key_5, Qt::Key_6, Qt::Key_7, Qt::Key_8, Qt::Key_9, Qt::Key_0, Qt::Key_acute, Qt::Key_QuoteLeft }, + { Qt::Key_At, Qt::Key_Exclam, Qt::Key_QuoteDbl, Qt::Key_NumberSign, Qt::Key_Dollar, Qt::Key_Percent, Qt::Key_Ampersand, Qt::Key_Slash, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Equal, Qt::Key_Question }, + { Qt::Key_degree, Qt::Key_twosuperior, Qt::Key_threesuperior, Qt::Key_sterling, Qt::Key_brokenbar, Qt::Key_notsign, Qt::Key_BraceLeft, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_BraceRight, Qt::Key_Backslash, Qt::Key_AsciiTilde }, + { Qt::Key_Less, Qt::Key_Greater, Qt::Key_registered, Qt::Key_copyright, 0x20AC /*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_Backspace }, + { Qt::Key_Mode_switch, Qt::Key_Asterisk, Qt::Key_Underscore, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return } }, }