QskTextInput/QskInputPanel improved

This commit is contained in:
Uwe Rathmann 2018-04-13 16:32:48 +02:00
parent 395aeba8ec
commit 34cc82dd70
11 changed files with 401 additions and 350 deletions

View File

@ -62,7 +62,7 @@ bool QskInputCompositionModel::supportsSuggestions() const
return false;
}
void QskInputCompositionModel::composeKey( Qt::Key key )
void QskInputCompositionModel::composeKey( int key )
{
/*
* This operation might be expensive (e.g. for Hunspell) and

View File

@ -25,7 +25,7 @@ public:
void commit( const QString& );
virtual void commitCandidate( int );
void composeKey( Qt::Key );
void composeKey( int key );
virtual int candidateCount() const;
virtual QString candidate( int ) const;

View File

@ -444,6 +444,10 @@ void QskInputContext::setFocusObject( QObject* focusObject )
isAccepted = true;
}
}
else
{
isAccepted = true;
}
}
if ( isAccepted )
@ -507,7 +511,7 @@ void QskInputContext::invokeAction( QInputMethod::Action action, int value )
{
case QskInputPanel::Compose:
{
model->composeKey( static_cast< Qt::Key >( value ) );
model->composeKey( value );
break;
}
case QskInputPanel::SelectCandidate:

View File

@ -66,6 +66,9 @@ namespace
highlighted = QskRgbValue::RoyalBlue;
highlightedText = QskRgbValue::White;
base = QskRgbValue::White;
baseActive = QskRgbValue::Beige;
}
else
{
@ -76,6 +79,9 @@ namespace
highlighted = QskRgbValue::BlueGrey500;
highlightedText = QskRgbValue::White;
base = QskRgbValue::Black;
baseActive = base.lighter( 110 );
}
}
@ -91,6 +97,9 @@ namespace
QColor darker150;
QColor darker200;
QColor base;
QColor baseActive;
QColor contrasted;
QColor contrastedText;
@ -304,14 +313,34 @@ void QskSquiekSkin::initTextInputHints()
setBoxBorderMetrics( Q::Panel, 2 );
setBoxShape( Q::Panel, 4 );
QColor fillColor( Qt::white );
for ( auto state : { NoState, Q::ReadOnly, Q::Editing } )
{
QColor c;
const QskBoxBorderColors borderColors(
fillColor.darker( 170 ), fillColor.darker( 170 ),
fillColor.darker( 105 ), fillColor.darker( 105 ) );
if ( state == Q::ReadOnly )
{
c = pal.theme.lighter( 120 );
}
else if ( state == Q::Editing )
{
c = pal.baseActive;
}
else
{
c = pal.base;
}
setBoxBorderColors( Q::Panel, borderColors );
setGradient( Q::Panel, fillColor );
const auto aspect = Q::Panel | state;
const QskBoxBorderColors borderColors(
c.darker( 170 ), c.darker( 170 ),
c.darker( 105 ), c.darker( 105 ) );
setBoxBorderColors( aspect, borderColors );
setGradient( aspect, c );
}
setAnimation( Q::Panel | Color, qskDuration );
}
void QskSquiekSkin::initFocusIndicatorHints()

View File

@ -19,6 +19,12 @@ QSK_QT_PRIVATE_BEGIN
#undef private
QSK_QT_PRIVATE_END
QSK_SUBCONTROL( QskTextInput, Panel )
QSK_SUBCONTROL( QskTextInput, Text )
QSK_STATE( QskTextInput, ReadOnly, QskAspect::FirstSystemState << 1 )
QSK_STATE( QskTextInput, Editing, QskAspect::FirstSystemState << 2 )
static inline void qskBindSignals( const QQuickTextInput* wrappedInput,
QskTextInput* input )
{
@ -33,9 +39,6 @@ static inline void qskBindSignals( const QQuickTextInput* wrappedInput,
QObject::connect( wrappedInput, &QQuickTextInput::textChanged,
input, [ input ] { input->Q_EMIT textChanged( input->text() ); } );
QObject::connect( wrappedInput, &QQuickTextInput::selectedTextChanged,
input, [ input ] { input->Q_EMIT selectedTextChanged( input->selectedText() ); } );
QObject::connect( wrappedInput, &QQuickTextInput::validatorChanged,
input, &QskTextInput::validatorChanged );
@ -56,15 +59,6 @@ static inline void qskBindSignals( const QQuickTextInput* wrappedInput,
QObject::connect( wrappedInput, &QQuickTextInput::echoModeChanged,
input, [ input ] { input->Q_EMIT echoModeChanged( input->echoMode() ); } );
QObject::connect( wrappedInput, &QQuickTextInput::autoScrollChanged,
input, &QskTextInput::autoScrollChanged );
QObject::connect( wrappedInput, &QQuickTextInput::selectByMouseChanged,
input, &QskTextInput::selectByMouseChanged );
QObject::connect( wrappedInput, &QQuickTextInput::persistentSelectionChanged,
input, &QskTextInput::persistentSelectionChanged );
QObject::connect( wrappedInput, &QQuickItem::implicitWidthChanged,
input, &QskControl::resetImplicitSize );
@ -77,113 +71,32 @@ namespace
class TextInput final : public QQuickTextInput
{
public:
TextInput( QQuickItem* parent ):
QQuickTextInput( parent )
{
classBegin();
TextInput( QskTextInput* );
setActiveFocusOnTab( false );
setFlag( ItemAcceptsInputMethod, false );
setFocusOnPress( false );
void setEditing( bool on );
componentComplete();
connect( this, &TextInput::contentSizeChanged,
this, &TextInput::updateClip );
}
void setAlignment( Qt::Alignment alignment )
inline void setAlignment( Qt::Alignment alignment )
{
setHAlign( ( HAlignment ) ( int( alignment ) & 0x0f ) );
setVAlign( ( VAlignment ) ( int( alignment ) & 0xf0 ) );
}
inline bool handleEvent( QEvent* event )
{
return this->event( event );
}
virtual void focusInEvent( QFocusEvent* ) override
bool fixup()
{
auto d = QQuickTextInputPrivate::get( this );
if ( d->m_readOnly )
return;
const auto state = static_cast< int >( d->hasAcceptableInput( d->m_text ) );
d->cursorVisible = true;
bool isAcceptable = ( state == QValidator::Acceptable );
if ( !isAcceptable )
isAcceptable = d->fixup();
#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
d->updateCursorBlinking();
d->setBlinkingCursorEnabled( true );
#else
d->setCursorBlinkPeriod(
QGuiApplication::styleHints()->cursorFlashTime() );
#endif
if ( d->determineHorizontalAlignment() )
{
d->updateLayout();
d->updateHorizontalScroll();
d->updateVerticalScroll();
#if 0
updateInputMethod(Qt::ImCursorRectangle | Qt::ImAnchorRectangle);
#endif
}
connect( QGuiApplication::inputMethod(),
SIGNAL(inputDirectionChanged(Qt::LayoutDirection)),
this, SLOT(q_updateAlignment()) );
qGuiApp->inputMethod()->show();
polish();
update();
return isAcceptable;
}
virtual void focusOutEvent( QFocusEvent* event ) override
{
auto d = QQuickTextInputPrivate::get( this );
if (d->m_readOnly)
return;
d->cursorVisible = false;
#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
d->updateCursorBlinking();
d->setBlinkingCursorEnabled( false );
#else
d->setCursorBlinkPeriod( 0 );
#endif
if ( d->m_passwordEchoEditing || d->m_passwordEchoTimer.isActive() )
{
d->updatePasswordEchoEditing( false );
}
if ( event->reason() != Qt::ActiveWindowFocusReason
&& event->reason() != Qt::PopupFocusReason )
{
if ( d->hasSelectedText() && !d->persistentSelection )
deselect();
}
const auto status = d->hasAcceptableInput( d->m_text );
if ( status == QQuickTextInputPrivate::AcceptableInput )
{
if ( d->fixup() )
Q_EMIT editingFinished();
}
disconnect( QGuiApplication::inputMethod(),
SIGNAL(inputDirectionChanged(Qt::LayoutDirection)),
this, SLOT(q_updateAlignment()) );
polish();
update();
}
inline bool handleEvent( QEvent* event ) { return this->event( event ); }
protected:
virtual void geometryChanged(
const QRectF& newGeometry, const QRectF& oldGeometry ) override
{
@ -197,21 +110,63 @@ namespace
( contentHeight() > height() ) );
}
};
}
QSK_SUBCONTROL( QskTextInput, Panel )
QSK_SUBCONTROL( QskTextInput, Text )
TextInput::TextInput( QskTextInput* textInput ):
QQuickTextInput( textInput )
{
classBegin();
setActiveFocusOnTab( false );
setFlag( ItemAcceptsInputMethod, false );
setFocusOnPress( false );
componentComplete();
connect( this, &TextInput::contentSizeChanged,
this, &TextInput::updateClip );
}
void TextInput::setEditing( bool on )
{
auto d = QQuickTextInputPrivate::get( this );
if ( d->cursorVisible == on )
return;
setCursorVisible( on );
if ( !on )
{
if ( d->m_passwordEchoEditing || d->m_passwordEchoTimer.isActive() )
d->updatePasswordEchoEditing( false );
const auto status = d->hasAcceptableInput( d->m_text );
if ( status == QQuickTextInputPrivate::AcceptableInput )
{
if ( d->fixup() )
Q_EMIT editingFinished();
}
}
polish();
update();
}
}
class QskTextInput::PrivateData
{
public:
TextInput* textInput;
unsigned int activationModes : 3;
};
QskTextInput::QskTextInput( QQuickItem* parent ):
Inherited( parent ),
m_data( new PrivateData() )
{
m_data->activationModes = ActivationOnMouse | ActivationOnKey;
setPolishOnResize( true );
setFocusPolicy( Qt::StrongFocus );
@ -259,7 +214,37 @@ bool QskTextInput::event( QEvent* event )
void QskTextInput::keyPressEvent( QKeyEvent* event )
{
m_data->textInput->handleEvent( event );
if ( isEditing() )
{
if ( event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return )
{
if ( m_data->textInput->fixup() )
{
auto inputMethod = QGuiApplication::inputMethod();
inputMethod->commit();
if ( !( inputMethodHints() & Qt::ImhMultiLine) )
setEditing( false );
}
}
else
{
m_data->textInput->handleEvent( event );
}
return;
}
if ( ( m_data->activationModes & ActivationOnKey ) && !event->isAutoRepeat() )
{
if ( event->key() == Qt::Key_Select || event->key() == Qt::Key_Space )
{
setEditing( true );
return;
}
}
Inherited::keyPressEvent( event );
}
void QskTextInput::keyReleaseEvent( QKeyEvent* event )
@ -272,7 +257,7 @@ void QskTextInput::mousePressEvent( QMouseEvent* event )
m_data->textInput->handleEvent( event );
if ( !isReadOnly() && !qGuiApp->styleHints()->setFocusOnTouchRelease() )
qGuiApp->inputMethod()->show();
setEditing( true );
}
void QskTextInput::mouseMoveEvent( QMouseEvent* event )
@ -285,7 +270,7 @@ void QskTextInput::mouseReleaseEvent( QMouseEvent* event )
m_data->textInput->handleEvent( event );
if ( !isReadOnly() && qGuiApp->styleHints()->setFocusOnTouchRelease() )
qGuiApp->inputMethod()->show();
setEditing( true );
}
void QskTextInput::mouseDoubleClickEvent( QMouseEvent* event )
@ -300,13 +285,29 @@ void QskTextInput::inputMethodEvent( QInputMethodEvent* event )
void QskTextInput::focusInEvent( QFocusEvent* event )
{
m_data->textInput->handleEvent( event );
Inherited::focusInEvent( event );
}
void QskTextInput::focusOutEvent( QFocusEvent* event )
{
m_data->textInput->handleEvent( event );
#if 1
if ( event->reason() != Qt::ActiveWindowFocusReason
&& event->reason() != Qt::PopupFocusReason )
{
m_data->textInput->deselect();
}
#endif
if ( m_data->activationModes & ActivationOnFocus )
{
#if 0
if ( !hasFocus() )
{
setEditing( false );
}
#endif
}
Inherited::focusOutEvent( event );
}
@ -343,6 +344,20 @@ void QskTextInput::setText( const QString& text )
m_data->textInput->setText( text );
}
QskTextInput::ActivationModes QskTextInput::activationModes() const
{
return static_cast< QskTextInput::ActivationModes >( m_data->activationModes );
}
void QskTextInput::setActivationModes( ActivationModes modes )
{
if ( m_data->activationModes != modes )
{
m_data->activationModes = modes;
Q_EMIT activationModesChanged();
}
}
int QskTextInput::fontRole() const
{
return QskSkinnable::fontRole( Text );
@ -402,10 +417,57 @@ bool QskTextInput::isReadOnly() const
void QskTextInput::setReadOnly( bool on )
{
m_data->textInput->setReadOnly( on );
m_data->textInput->setFlag( QQuickItem::ItemAcceptsInputMethod, false );
if ( m_data->textInput->isReadOnly() == on )
return;
#if 1
// do we want to be able to restore the previous policy ?
setFocusPolicy( Qt::NoFocus );
#endif
m_data->textInput->setReadOnly( on );
m_data->textInput->setFlag( QQuickItem::ItemAcceptsInputMethod, !on );
qskUpdateInputMethod( this, Qt::ImEnabled );
setSkinStateFlag( ReadOnly, true );
}
void QskTextInput::setEditing( bool on )
{
if ( isReadOnly() || on == ( skinState() & Editing ) )
return;
setSkinStateFlag( Editing, on );
m_data->textInput->setEditing( on );
auto inputMethod = QGuiApplication::inputMethod();
if ( on )
{
#if 0
updateInputMethod(Qt::ImCursorRectangle | Qt::ImAnchorRectangle);
QGuiApplication::inputMethod()->inputDirection
#endif
inputMethod->show();
}
else
{
#if 0
inputMethod->reset();
#endif
inputMethod->hide();
#if 1
qskForceActiveFocus( this, Qt::PopupFocusReason );
#endif
}
Q_EMIT editingChanged( on );
}
bool QskTextInput::isEditing() const
{
return skinState() & Editing;
}
void QskTextInput::ensureVisible( int position )
@ -413,16 +475,6 @@ void QskTextInput::ensureVisible( int position )
m_data->textInput->ensureVisible( position );
}
bool QskTextInput::isCursorVisible() const
{
return m_data->textInput->isCursorVisible();
}
void QskTextInput::setCursorVisible( bool on )
{
m_data->textInput->setCursorVisible( on );
}
int QskTextInput::cursorPosition() const
{
return m_data->textInput->cursorPosition();
@ -433,21 +485,6 @@ void QskTextInput::setCursorPosition(int pos)
m_data->textInput->setCursorPosition( pos );
}
int QskTextInput::selectionStart() const
{
return m_data->textInput->selectionStart();
}
int QskTextInput::selectionEnd() const
{
return m_data->textInput->selectionEnd();
}
QString QskTextInput::selectedText() const
{
return m_data->textInput->selectedText();
}
int QskTextInput::maxLength() const
{
return m_data->textInput->maxLength();
@ -524,48 +561,6 @@ void QskTextInput::setOverwriteMode( bool overwrite )
#endif
}
bool QskTextInput::autoScroll() const
{
return m_data->textInput->autoScroll();
}
void QskTextInput::setAutoScroll(bool on)
{
m_data->textInput->setAutoScroll( on );
}
bool QskTextInput::selectByMouse() const
{
return m_data->textInput->selectByMouse();
}
void QskTextInput::setSelectByMouse(bool on)
{
m_data->textInput->setSelectByMouse( on );
}
QskTextInput::SelectionMode QskTextInput::mouseSelectionMode() const
{
const auto mode = m_data->textInput->mouseSelectionMode();
return static_cast< SelectionMode >( mode );
}
void QskTextInput::setMouseSelectionMode( SelectionMode mode )
{
m_data->textInput->setMouseSelectionMode(
static_cast< QQuickTextInput::SelectionMode >( mode ) );
}
bool QskTextInput::persistentSelection() const
{
return m_data->textInput->persistentSelection();
}
void QskTextInput::setPersistentSelection(bool persist)
{
m_data->textInput->setPersistentSelection( persist );
}
bool QskTextInput::hasAcceptableInput() const
{
return m_data->textInput->hasAcceptableInput();
@ -623,11 +618,6 @@ bool QskTextInput::canRedo() const
return m_data->textInput->canRedo();
}
bool QskTextInput::isInputMethodComposing() const
{
return m_data->textInput->isInputMethodComposing();
}
Qt::InputMethodHints QskTextInput::inputMethodHints() const
{
return m_data->textInput->inputMethodHints();

View File

@ -22,10 +22,29 @@ class QSK_EXPORT QskTextInput : public QskControl
Q_PROPERTY( Qt::Alignment alignment READ alignment
WRITE setAlignment NOTIFY alignmentChanged )
Q_PROPERTY( ActivationModes activationModes READ activationModes
WRITE setActivationModes NOTIFY activationModesChanged )
Q_PROPERTY( bool editing READ isEditing
WRITE setEditing NOTIFY editingChanged )
using Inherited = QskControl;
public:
QSK_SUBCONTROLS( Panel, Text )
QSK_STATES( ReadOnly, Editing )
enum ActivationMode
{
NoActivation,
ActivationOnFocus = 1 << 0 ,
ActivationOnMouse = 1 << 1,
ActivationOnKey = 1 << 2
};
Q_ENUM( ActivationMode )
Q_DECLARE_FLAGS( ActivationModes, ActivationMode )
enum EchoMode
{
@ -34,14 +53,8 @@ public:
Password,
PasswordEchoOnEdit
};
Q_ENUM(EchoMode)
enum SelectionMode
{
SelectCharacters,
SelectWords
};
Q_ENUM(SelectionMode)
Q_ENUM(EchoMode)
QskTextInput( QQuickItem* parent = nullptr );
QskTextInput( const QString& text, QQuickItem* parent = nullptr );
@ -56,24 +69,19 @@ public:
void setAlignment( Qt::Alignment );
Qt::Alignment alignment() const;
virtual QSizeF contentsSizeHint() const override;
void setActivationModes( ActivationModes );
ActivationModes activationModes() const;
bool isEditing() const;
QFont font() const;
bool isReadOnly() const;
void setReadOnly(bool);
bool isCursorVisible() const;
void setCursorVisible( bool );
int cursorPosition() const;
void setCursorPosition( int );
int selectionStart() const;
int selectionEnd() const;
QString selectedText() const;
int maxLength() const;
void setMaxLength( int );
@ -92,18 +100,6 @@ public:
bool overwriteMode() const;
void setOverwriteMode( bool );
bool autoScroll() const;
void setAutoScroll(bool);
bool selectByMouse() const;
void setSelectByMouse(bool);
SelectionMode mouseSelectionMode() const;
void setMouseSelectionMode( SelectionMode );
bool persistentSelection() const;
void setPersistentSelection( bool );
bool hasAcceptableInput() const;
virtual QVariant inputMethodQuery( Qt::InputMethodQuery ) const override;
@ -112,17 +108,23 @@ public:
bool canUndo() const;
bool canRedo() const;
bool isInputMethodComposing() const;
Qt::InputMethodHints inputMethodHints() const;
void setInputMethodHints( Qt::InputMethodHints );
void ensureVisible( int position );
virtual QSizeF contentsSizeHint() const override;
public Q_SLOTS:
void setText( const QString& );
void setEditing( bool );
Q_SIGNALS:
void editingChanged( bool );
void activationModesChanged();
void readOnlyChanged( bool );
void textChanged( const QString& );
void textEdited( const QString& );
@ -130,19 +132,9 @@ Q_SIGNALS:
void fontRoleChanged();
void alignmentChanged();
void readOnlyChanged( bool );
void accepted();
void editingFinished();
void selectedTextChanged( const QString& );
void overwriteModeChanged( bool );
void maximumLengthChanged( int );
void echoModeChanged( EchoMode );
void autoScrollChanged( bool );
void selectByMouseChanged( bool );
void persistentSelectionChanged();
void validatorChanged();
void inputMaskChanged( const QString& );
@ -170,4 +162,7 @@ private:
std::unique_ptr< PrivateData > m_data;
};
Q_DECLARE_OPERATORS_FOR_FLAGS( QskTextInput::ActivationModes )
Q_DECLARE_METATYPE( QskTextInput::ActivationModes )
#endif

View File

@ -202,10 +202,39 @@ void QskInputPanel::commitCandidate( int index )
static_cast< QInputMethod::Action >( SelectCandidate ), index );
}
void QskInputPanel::commitKey( Qt::Key key )
void QskInputPanel::commitKey( int key )
{
QGuiApplication::inputMethod()->invokeAction(
static_cast< QInputMethod::Action >( Compose ), key );
}
void QskInputPanel::keyPressEvent( QKeyEvent* event )
{
// animate the corresponding key button TODO
switch( event->key() )
{
case Qt::Key_Return:
case Qt::Key_Escape:
{
commitKey( event->key() );
break;
}
default:
{
const auto text = event->text();
if ( !text.isEmpty() )
commitKey( text[0].unicode() );
else
commitKey( event->key() );
}
}
}
void QskInputPanel::keyReleaseEvent( QKeyEvent* event )
{
return Inherited::keyReleaseEvent( event );
}
#include "moc_QskInputPanel.cpp"

View File

@ -41,8 +41,12 @@ public Q_SLOTS:
void setCandidatesEnabled( bool );
void setCandidates( const QVector< QString >& );
protected:
virtual void keyPressEvent( QKeyEvent* ) override;
virtual void keyReleaseEvent( QKeyEvent* ) override;
private:
void commitKey( Qt::Key );
void commitKey( int key );
void commitCandidate( int );
class PrivateData;

View File

@ -18,7 +18,7 @@ namespace
ColumnCount = 12
};
using KeyRow = Qt::Key[ ColumnCount ];
using KeyRow = int[ ColumnCount ];
class Button final : public QskPushButton
{
@ -60,7 +60,7 @@ struct QskVirtualKeyboardLayouts
{
struct KeyCodes
{
using Row = Qt::Key[ ColumnCount ];
using Row = int[ ColumnCount ];
Row data[ RowCount ];
};
@ -91,14 +91,14 @@ struct QskVirtualKeyboardLayouts
Layout zh; // Chinese
};
#define LOWER(x) Qt::Key(x + 32) // Convert an uppercase key to lowercase
#define LOWER(x) int(x + 32) // Convert an uppercase key to lowercase
static constexpr const QskVirtualKeyboardLayouts qskKeyboardLayouts =
{
#include "QskVirtualKeyboardLayouts.cpp"
};
#undef LOWER
static qreal qskKeyStretch( Qt::Key key )
static qreal qskKeyStretch( int key )
{
switch( key )
{
@ -143,7 +143,7 @@ static qreal qskRowStretch( const KeyRow& keyRow )
return stretch;
}
static QString qskTextForKey( Qt::Key key )
static QString qskTextForKey( int key )
{
// Special cases
switch( key )
@ -318,7 +318,7 @@ void QskVirtualKeyboard::updateLayout()
{
for ( int col = 0; col < ColumnCount; col++ )
{
if ( keys[ col ] != Qt::Key( 0 ) )
if ( keys[ col ] != 0 )
totalHSpacing += spacing;
}
}
@ -328,7 +328,7 @@ void QskVirtualKeyboard::updateLayout()
for ( int col = 0; col < ColumnCount; col++ )
{
const Qt::Key key = keys[ col ];
const int key = keys[ col ];
auto button = m_data->keyButtons[ row * ColumnCount + col ];
button->setVisible( key != Qt::Key( 0 ) );
@ -358,7 +358,7 @@ void QskVirtualKeyboard::buttonPressed()
return;
const auto& keyCodes = ( *m_data->currentLayout )[ m_data->mode ];
const Qt::Key key = keyCodes.data[ button->row() ][ button->column() ];
const int key = keyCodes.data[ button->row() ][ button->column() ];
// Mode-switching keys
switch( key )

View File

@ -43,7 +43,7 @@ public:
Q_SIGNALS:
void modeChanged( Mode );
void keySelected( Qt::Key );
void keySelected( int keyCode );
protected:
virtual bool event( QEvent* ) override;

View File

@ -9,21 +9,21 @@
{
{ { // 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, Qt::Key(0x0443)/*u*/, Qt::Key(0x0435)/*ie*/, Qt::Key(0x0438)/*i*/, Qt::Key(0x0448)/*sha*/, Qt::Key(0x0449)/*shcha*/,Qt::Key(0x043A)/*ka*/, Qt::Key(0x0441)/*es*/, Qt::Key(0x0434)/*de*/, Qt::Key(0x0437)/*ze*/, Qt::Key(0x0446)/*tse*/ },
{ Qt::Key(0x044C)/*soft sign*/, Qt::Key(0x044F)/*ya*/, Qt::Key(0x0430)/*a*/, Qt::Key(0x043E)/*o*/, Qt::Key(0x0436)/*zhe*/, Qt::Key(0x0433)/*ghe*/, Qt::Key(0x0442)/*te*/, Qt::Key(0x043D)/*en*/, Qt::Key(0x0432)/*ve*/, Qt::Key(0x043C)/*em*/, Qt::Key(0x0447)/*che*/ },
{ Qt::Key_CapsLock, Qt::Key(0x044E)/*yu*/, Qt::Key(0x0439)/*short i*/, Qt::Key(0x044A)/*hard sign*/, Qt::Key(0x044D)/*e*/, Qt::Key(0x0444)/*ef*/, Qt::Key(0x0445)/*ha*/, Qt::Key(0x043F)/*pe*/, Qt::Key(0x0440)/*er*/, Qt::Key(0x043B)/*el*/, Qt::Key_Backspace },
{ 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, Qt::Key(0x2116)/*no sign*/, Qt::Key(0x0406)/*byelorussian-ukrainian i*/, Qt::Key_V },
{ Qt::Key(0x044B)/*small yeru*/, Qt::Key(0x0423)/*u*/, Qt::Key(0x0415)/*ie*/, Qt::Key(0x0418)/*i*/, Qt::Key(0x0428)/*sha*/, Qt::Key(0x0429)/*shcha*/, Qt::Key(0x041A)/* ka*/, Qt::Key(0x0421)/*es*/, Qt::Key(0x0414)/*de*/, Qt::Key(0x0417)/*ze*/, Qt::Key(0x0426)/*tse*/ },
{ Qt::Key(0x042C)/*soft sign*/, Qt::Key(0x042F)/*ya*/, Qt::Key(0x0410)/*a*/, Qt::Key(0x041E)/*o*/, Qt::Key(0x0416)/*zhe*/, Qt::Key(0x0413)/*ghe*/, Qt::Key(0x0422)/*te*/, Qt::Key(0x041D)/*en*/, Qt::Key(0x0412)/*ve*/, Qt::Key(0x041C)/*em*/, Qt::Key(0x0427)/*che*/ },
{ Qt::Key_Shift, Qt::Key(0x042E)/* yu*/, Qt::Key(0x0419)/* short i*/, Qt::Key(0x042A)/*hard sign*/, Qt::Key(0x042D)/*e*/, Qt::Key(0x0424)/*ef*/, Qt::Key(0x0425)/*ha*/, Qt::Key(0x041F)/*pe*/, Qt::Key(0x0420)/*er*/, Qt::Key(0x041B)/*el*/, Qt::Key_Backspace },
{ 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, Qt::Key(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_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 }
@ -33,9 +33,9 @@
// Czech
{
{ {
{ Qt::Key_Plus, Qt::Key(0x011B)/*e caron*/, Qt::Key(0x0161)/*s caron*/, Qt::Key(0x010D)/*c caron*/, Qt::Key(0x0159)/*r caron*/, Qt::Key(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 },
{ 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), Qt::Key(0x016F)/*u ring*/, Qt::Key_section },
{ 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 }
} },
@ -47,9 +47,9 @@
{ 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, Qt::Key(0x011A)/*E caron*/, Qt::Key(0x0160)/*S caron*/, Qt::Key(0x010C)/*C caron*/, Qt::Key(0x0158)/*R caron*/, Qt::Key(0x017D)/*Z caron*/, Qt::Key_Yacute, Qt::Key_Aacute, Qt::Key_Iacute, Qt::Key_Eacute, Qt::Key_currency },
{ Qt::Key_Backslash, Qt::Key_Bar, Qt::Key(0x20AC)/*Euro*/, Qt::Key_unknown, Qt::Key_division, Qt::Key_multiply },
{ Qt::Key(0x0111)/*d stroke*/, Qt::Key(0x0110)/*D stroke*/, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key(0x0142)/*l stroke*/, Qt::Key(0x0141)/*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp },
{ 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 }
} },
@ -73,7 +73,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Bar },
{ 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 }
@ -98,7 +98,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright },
{ 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 }
@ -109,21 +109,21 @@
{
{ { // 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 },
{ Qt::Key(0x00B7)/*middle dot*/, Qt::Key(0x03C2)/*sigma*/, Qt::Key(0x03B5)/*epsilon*/, Qt::Key(0x03C1)/*rho*/, Qt::Key(0x03C4)/*tau*/, Qt::Key(0x03C5)/*upsilon*/, Qt::Key(0x03B8)/*theta*/, Qt::Key(0x03B9)/*iota*/, Qt::Key(0x03BF)/*omicron*/, Qt::Key(0x03C0)/*pi*/, Qt::Key(0x2019)/*right single quote*/ },
{ Qt::Key(0x03B1)/*alpha*/, Qt::Key(0x03C3)/*sigma*/, Qt::Key(0x03B4)/*delta*/, Qt::Key(0x03C6)/*phi*/, Qt::Key(0x03B3)/*gamma*/, Qt::Key(0x03B7)/*eta*/, Qt::Key(0x03BE)/*xi*/, Qt::Key(0x03BA)/*kappa*/, Qt::Key(0x03BB)/*lamda*/, Qt::Key_BracketLeft, Qt::Key_BracketRight },
{ Qt::Key_CapsLock, Qt::Key(0x03B6)/*zeta*/, Qt::Key(0x03C7)/*chi*/, Qt::Key(0x03C8)/*psi*/, Qt::Key(0x03C9)/*omega*/, Qt::Key(0x03B2)/*beta*/, Qt::Key(0x03BD)/*nu*/, Qt::Key(0x03BC)/*mu*/, Qt::Key_Backspace },
{ 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 },
{ Qt::Key(0x2015)/*horizontal bar*/, Qt::Key_brokenbar, Qt::Key(0x0395)/*epsilon*/, Qt::Key(0x03A1)/*rho*/, Qt::Key(0x03A4)/*tau*/, Qt::Key(0x03A5)/*upsilon*/, Qt::Key(0x0398)/*theta*/, Qt::Key(0x0399)/*iota*/, Qt::Key(0x039F)/*omicron*/, Qt::Key(0x03A0)/*pi*/, Qt::Key(0x2018)/*left single quote*/ },
{ Qt::Key(0x0391)/*alpha*/, Qt::Key(0x03A3)/*sigma*/, Qt::Key(0x0394)/*delta*/, Qt::Key(0x03A6)/*phi*/, Qt::Key(0x0393)/*gamma*/, Qt::Key(0x0397)/*eta*/, Qt::Key(0x039E)/*xi*/, Qt::Key(0x039A)/*kappa*/, Qt::Key(0x039B)/*lamda*/, Qt::Key_guillemotleft, Qt::Key_guillemotright },
{ Qt::Key_Shift, Qt::Key(0x0396)/*zeta*/, Qt::Key(0x03A7)/*chi*/, Qt::Key(0x03A8)/*psi*/, Qt::Key(0x03A9)/*omega*/, Qt::Key(0x0392)/*beta*/, Qt::Key(0x039D)/*nu*/, Qt::Key(0x039C)/*mu*/, Qt::Key_Backspace },
{ 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, Qt::Key(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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_threequarters,Qt::Key_Bar },
{ 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 }
@ -148,7 +148,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Bar },
{ 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 }
@ -173,7 +173,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright },
{ 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 }
@ -198,7 +198,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Bar },
{ 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 }
@ -223,7 +223,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_Bar },
{ 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 }
@ -247,7 +247,7 @@
{ 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(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 },
{ 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 },
@ -259,22 +259,22 @@
{
{ {
{ 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), Qt::Key(0x0151)/*o double 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), 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, Qt::Key(0x0150)/*O double acute*/ },
{ 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, Qt::Key(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(0x0111)/*d stroke*/, Qt::Key(0x0110)/*D stroke*/, LOWER(Qt::Key_Adiaeresis), Qt::Key_Adiaeresis, LOWER(Qt::Key_Iacute), Qt::Key_Iacute, Qt::Key(0x0142)/*l stroke*/, Qt::Key(0x0141)/*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp },
{ 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 }
} },
@ -298,7 +298,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Bar },
{ 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 }
@ -308,24 +308,24 @@
// Japanese
{ // Some special characters (backspace, enter) are replaced with Japanese equivalents for rendering purposes
{ { // katakana
{ Qt::Key(0x30A2)/*a*/, Qt::Key(0x30AB)/*ka*/, Qt::Key(0x30B5)/*sa*/, Qt::Key(0x30BF)/*ta*/, Qt::Key(0x30CA)/*na*/, Qt::Key(0x30CF)/*ha*/, Qt::Key(0x30DE)/*ma*/, Qt::Key(0x30E4)/*ya*/, Qt::Key(0x30E9)/*ra*/, Qt::Key_Muhenkan/*backspace*/ },
{ Qt::Key(0x30A4)/*i*/, Qt::Key(0x30AD)/*ki*/, Qt::Key(0x30B7)/*shi*/, Qt::Key(0x30C1)/*chi*/, Qt::Key(0x30CB)/*ni*/, Qt::Key(0x30D2)/*hi*/, Qt::Key(0x30DF)/*mi*/, Qt::Key_unknown, Qt::Key(0x30EA)/*ri*/, Qt::Key_Mode_switch },
{ Qt::Key(0x30A6)/*u*/, Qt::Key(0x30AF)/*ku*/, Qt::Key(0x30B9)/*su*/, Qt::Key(0x30C4)/*tsu*/, Qt::Key(0x30CC)/*nu*/, Qt::Key(0x30D5)/*fu*/, Qt::Key(0x30E0)/*mu*/, Qt::Key(0x30E6)/*yu*/, Qt::Key(0x30EB)/*ru*/, Qt::Key(0x3001)/*comma*/ },
{ Qt::Key(0x30A8)/*e*/, Qt::Key(0x30B1)/*ke*/, Qt::Key(0x30BB)/*se*/, Qt::Key(0x30C6)/*te*/, Qt::Key(0x30CD)/*ne*/, Qt::Key(0x30D8)/*he*/, Qt::Key(0x30E1)/*me*/, Qt::Key_unknown, Qt::Key(0x30EC)/*re*/, Qt::Key_Kana_Lock },
{ Qt::Key(0x30AA)/*o*/, Qt::Key(0x30B3)/*ko*/, Qt::Key(0x30BD)/*so*/, Qt::Key(0x30C8)/*to*/, Qt::Key(0x30CE)/*no*/, Qt::Key(0x30DB)/*ho*/, Qt::Key(0x30E2)/*mo*/, Qt::Key(0x30E8)/*yo*/, Qt::Key(0x30ED)/*ro*/, Qt::Key_Kanji/*enter*/ }
{ 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
{ Qt::Key(0x30A1)/*small a*/, Qt::Key(0x30AC)/*ga*/, Qt::Key(0x30B6)/*za*/, Qt::Key(0x30C0)/*da*/, Qt::Key(0x30D0)/*ba*/, Qt::Key(0x30D1)/*pa*/, Qt::Key(0x30EF)/*wa*/, Qt::Key(0x30E3)/*small ya*/, Qt::Key(0x30FB)/*middle dot*/, Qt::Key_Muhenkan/*backspace*/ },
{ Qt::Key(0x30A3)/*small i*/, Qt::Key(0x30AE)/*gi*/, Qt::Key(0x30B8)/*ji*/, Qt::Key(0x30C2)/*ji2*/, Qt::Key(0x30D3)/*bi*/, Qt::Key(0x30D4)/*pi*/, Qt::Key(0x30F0)/*wi*/, Qt::Key_unknown, Qt::Key(0x30FC)/*prolonged sound mark*/, Qt::Key_Mode_switch },
{ Qt::Key(0x30A5)/*small u*/, Qt::Key(0x30B0)/*gu*/, Qt::Key(0x30BA)/*zu*/, Qt::Key(0x30C5)/*zu2*/, Qt::Key(0x30D6)/*bu*/, Qt::Key(0x30D7)/*pu*/, Qt::Key(0x30F4)/*vu*/, Qt::Key(0x30E5)/*small yu*/, Qt::Key(0x30FD)/*iteration mark*/, Qt::Key(0xFF61)/*period*/ },
{ Qt::Key(0x30A7)/*small e*/, Qt::Key(0x30B2)/*ge*/, Qt::Key(0x30BC)/*ze*/, Qt::Key(0x30C7)/*de*/, Qt::Key(0x30D9)/*be*/, Qt::Key(0x30DA)/*pe*/, Qt::Key(0x30F1)/*we*/, Qt::Key_unknown, Qt::Key(0x30FE)/*voiced iteration mark*/, Qt::Key_Kana_Shift },
{ Qt::Key(0x30A9)/*small o*/, Qt::Key(0x30B4)/*go*/, Qt::Key(0x30BE)/*zo*/, Qt::Key(0x30C9)/*do*/, Qt::Key(0x30DC)/*bo*/, Qt::Key(0x30DD)/*po*/, Qt::Key(0x30F2)/*wo*/, Qt::Key(0x30E7)/*small yo*/, Qt::Key(0x30F3)/*n*/, Qt::Key_Kanji/*enter*/ }
{ 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, Qt::Key(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_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 }
} },
},
@ -334,22 +334,22 @@
{
{ {
{ 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) },
{ Qt::Key(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), Qt::Key(0x0113)/*e macron*/, Qt::Key(0x010D)/*c caron*/, Qt::Key(0x017E)/*z caron*/ },
{ Qt::Key(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, Qt::Key(0x0146)/*n cedilla*/, LOWER(Qt::Key_B), Qt::Key(0x012B)/*i macron*/, LOWER(Qt::Key_K), LOWER(Qt::Key_P), LOWER(Qt::Key_O), Qt::Key(0x0101)/*a macron*/, Qt::Key_Backspace },
{ Qt::Key_Mode_switch, Qt::Key(0x0123)/*g cedilla*/, Qt::Key(0x0137)/*k cedilla*/, Qt::Key(0x013C)/*l cedilla*/, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return }
{ 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 },
{ Qt::Key(0x016A)/*U macron*/, Qt::Key_G, Qt::Key_J, Qt::Key_R, Qt::Key_M, Qt::Key_V, Qt::Key_N, Qt::Key_Z, Qt::Key(0x0112)/*E macron*/, Qt::Key(0x010C)/*C caron*/, Qt::Key(0x017D)/*Z caron*/ },
{ Qt::Key(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, Qt::Key(0x0145)/*N cedilla*/, Qt::Key_B, Qt::Key(0x012A)/*I macron*/, Qt::Key_K, Qt::Key_P, Qt::Key_O, Qt::Key(0x0100)/*A macron*/, Qt::Key_Backspace },
{ Qt::Key_Mode_switch, Qt::Key(0x0122)/*G cedilla*/, Qt::Key(0x0136)/*K cedilla*/, Qt::Key(0x013B)/*L cedilla*/, Qt::Key_Space, Qt::Key_Semicolon, Qt::Key_Colon, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return }
{ 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, Qt::Key(0x0122)/*R cedilla*/, Qt::Key_W, Qt::Key_Y, Qt::Key_X, Qt::Key_Otilde, Qt::Key_Equal, Qt::Key(0x2013)/*en dash*/, Qt::Key_Question, Qt::Key_AsciiTilde },
{ Qt::Key_registered, LOWER(Qt::Key_Q), Qt::Key(0x0157)/*r cedilla*/, LOWER(Qt::Key_W), LOWER(Qt::Key_Y), LOWER(Qt::Key_X), LOWER(Qt::Key_Otilde), Qt::Key(0x20AC)/*Euro*/, Qt::Key_Bar, Qt::Key_QuoteDbl, Qt::Key_NumberSign },
{ 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 }
} },
@ -358,14 +358,14 @@
// Lithuanian
{
{ {
{ Qt::Key(0x0105)/*a ogonek*/, Qt::Key(0x010D)/*c caron*/, Qt::Key(0x0119)/*e ogonek*/, Qt::Key(0x0117)/*i ogonek*/, Qt::Key(0x0161)/*s caron*/, Qt::Key(0x0173)/*u ogonek*/, Qt::Key(0x016B)/*u macron*/, Qt::Key_9, Qt::Key_0, Qt::Key_Minus, Qt::Key(0x017E)/*z caron*/ },
{ 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 }
} },
{ {
{ Qt::Key(0x0104)/*A ogonek*/, Qt::Key(0x010C)/*C caron*/, Qt::Key(0x0118)/*E ogonek*/, Qt::Key(0x0116)/*I ogonek*/, Qt::Key(0x0160)/*S caron*/, Qt::Key(0x0172)/*U ogonek*/, Qt::Key(0x016A)/*U macron*/, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key_Underscore, Qt::Key(0x017D)/*Z caron*/ },
{ 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 },
@ -373,7 +373,7 @@
} },
{ {
{ 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, Qt::Key(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_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 }
@ -398,7 +398,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Bar },
{ 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 }
@ -424,7 +424,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Dollar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_guillemotleft, Qt::Key_guillemotright },
{ 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 }
@ -437,22 +437,22 @@
{
{ {
{ 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), Qt::Key(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), Qt::Key(0x0142)/*l stroke*/, Qt::Key(0x0105)/*a ogonek*/ },
{ 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), Qt::Key(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_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, Qt::Key(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, Qt::Key(0x0141)/*L stroke*/, Qt::Key(0x0119)/*E ogonek*/ },
{ 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, Qt::Key(0x017A)/*z acute*/, Qt::Key(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_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, Qt::Key(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(0x0111)/*d stroke*/, Qt::Key(0x0110)/*D stroke*/, Qt::Key_AsciiTilde, Qt::Key_Dollar, Qt::Key_ssharp },
{ 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 }
} },
@ -477,7 +477,7 @@
} },
{ {
{ 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, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Bar, Qt::Key_onequarter, Qt::Key_onehalf, Qt::Key_threequarters, Qt::Key_AsciiTilde },
{ 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 }
@ -488,22 +488,22 @@
{
{ {
{ 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), Qt::Key(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), Qt::Key(0x015F)/*s cedilla*/, Qt::Key(0x0163)/*t cedilla*/ },
{ 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, Qt::Key(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, Qt::Key(0x015E)/*S cedilla*/, Qt::Key(0x0162)/*T cedilla*/ },
{ 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, Qt::Key(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(0x0111)/*d stroke*/, Qt::Key(0x0110)/*D stroke*/, Qt::Key(0x0142)/*l stroke*/, Qt::Key(0x0141)/*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp },
{ 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 }
} },
@ -513,21 +513,21 @@
{
{ { // 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 },
{ Qt::Key(0x0439)/*short i*/, Qt::Key(0x0446)/*tse*/, Qt::Key(0x0443)/*u*/, Qt::Key(0x043A)/*ka*/, Qt::Key(0x0435)/*ie*/, Qt::Key(0x043D)/*en*/, Qt::Key(0x0433)/*ghe*/, Qt::Key(0x0448)/*sha*/, Qt::Key(0x0449)/*shcha*/, Qt::Key(0x0437)/*ze*/, Qt::Key(0x0445)/*ha*/ },
{ Qt::Key(0x0444)/*ef*/, Qt::Key(0x044B)/*yeru*/, Qt::Key(0x0432)/*ve*/, Qt::Key(0x0430)/*a*/, Qt::Key(0x043F)/*pe*/, Qt::Key(0x0440)/*er*/, Qt::Key(0x043E)/*o*/, Qt::Key(0x043B)/*el*/, Qt::Key(0x0434)/*de*/, Qt::Key(0x0436)/*zhe*/, Qt::Key(0x044D)/*e*/ },
{ Qt::Key_CapsLock, Qt::Key(0x044F)/*ya*/, Qt::Key(0x0447)/*che*/, Qt::Key(0x0441)/*es*/, Qt::Key(0x043C)/*em*/, Qt::Key(0x0438)/*i*/, Qt::Key(0x0442)/*te*/, Qt::Key(0x044C)/*soft sign*/, Qt::Key(0x0431)/*be*/, Qt::Key(0x044E)/*yu*/, Qt::Key_Backspace },
{ Qt::Key_Mode_switch, Qt::Key(0x0451)/*io*/, Qt::Key(0x044A)/*hard sign*/, Qt::Key_Space, Qt::Key_Period, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return }
{ 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, Qt::Key(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 },
{ Qt::Key(0x0419)/*short i*/, Qt::Key(0x0426)/*tse*/, Qt::Key(0x0423)/*u*/, Qt::Key(0x041A)/*ka*/, Qt::Key(0x0415)/*ie*/, Qt::Key(0x041D)/*en*/, Qt::Key(0x0413)/*ghe*/, Qt::Key(0x0428)/*sha*/, Qt::Key(0x0429)/*shcha*/, Qt::Key(0x0417)/*ze*/, Qt::Key(0x0425)/*ha*/ },
{ Qt::Key(0x0424)/*ef*/, Qt::Key(0x042B)/*yeru*/, Qt::Key(0x0412)/*ve*/, Qt::Key(0x0410)/*a*/, Qt::Key(0x041F)/*pe*/, Qt::Key(0x0420)/*er*/, Qt::Key(0x041E)/*o*/, Qt::Key(0x041B)/*el*/, Qt::Key(0x0414)/*de*/, Qt::Key(0x0416)/*zhe*/, Qt::Key(0x042D)/*e*/ },
{ Qt::Key_Shift, Qt::Key(0x042F)/*ya*/, Qt::Key(0x0427)/*che*/, Qt::Key(0x0421)/*es*/, Qt::Key(0x041C)/*em*/, Qt::Key(0x0418)/*i*/, Qt::Key(0x0422)/*te*/, Qt::Key(0x042C)/*soft sign*/, Qt::Key(0x0411)/*be*/, Qt::Key(0x042E)/*yu*/, Qt::Key_Backspace },
{ Qt::Key_Mode_switch, Qt::Key(0x0401)/*io*/, Qt::Key(0x042A)/*hard sign*/, Qt::Key_Space, Qt::Key_Comma, Qt::Key_Left, Qt::Key_Right, Qt::Key_Return }
{ 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, Qt::Key(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_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 }
@ -538,22 +538,22 @@
{
{ {
{ 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), Qt::Key(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), Qt::Key(0x010D)/*c caron*/, Qt::Key(0x0107)/*c 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), 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, Qt::Key(0x0111)/*d stroke*/, Qt::Key(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_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, Qt::Key(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, Qt::Key(0x010C)/*C caron*/, Qt::Key(0x0106)/*C acute*/ },
{ 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, Qt::Key(0x0110)/*D stroke*/, Qt::Key(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_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, Qt::Key(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, Qt::Key(0x0142)/*l stroke*/, Qt::Key(0x0141)/*L stroke*/, Qt::Key_ssharp },
{ 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 }
} },
@ -562,7 +562,7 @@
// Slovak
{
{ {
{ Qt::Key_Plus, Qt::Key(0x013E)/*l caron*/, Qt::Key(0x0161)/*s caron*/, Qt::Key(0x010D)/*c caron*/, Qt::Key(0x0165)/*t caron*/, Qt::Key(0x017E)/*z caron*/, LOWER(Qt::Key_Yacute), LOWER(Qt::Key_Aacute), LOWER(Qt::Key_Iacute), LOWER(Qt::Key_Eacute), Qt::Key_Equal, Qt::Key(0x0148)/*n caron*/ },
{ 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 },
@ -576,9 +576,9 @@
{ 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, Qt::Key(0x011A)/*E caron*/, Qt::Key(0x0160)/*S caron*/, Qt::Key(0x010C)/*C caron*/, Qt::Key(0x0158)/*R caron*/, Qt::Key(0x017D)/*Z caron*/, Qt::Key_Yacute, Qt::Key_Aacute, Qt::Key_Iacute, Qt::Key_Eacute, Qt::Key_currency },
{ Qt::Key_Backslash, Qt::Key_Bar, Qt::Key(0x20AC)/*Euro*/, Qt::Key_Apostrophe, Qt::Key_division, Qt::Key_multiply },
{ Qt::Key(0x0111)/*d stroke*/, Qt::Key(0x0110)/*D stroke*/, Qt::Key_BracketLeft, Qt::Key_BracketRight, Qt::Key_ParenLeft, Qt::Key_ParenRight, Qt::Key(0x0142)/*l stroke*/, Qt::Key(0x0141)/*L stroke*/, Qt::Key_Dollar, Qt::Key_ssharp },
{ 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 }
} },
@ -588,22 +588,22 @@
{
{ {
{ 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), Qt::Key(0x0131)/*dotless i*/, LOWER(Qt::Key_O), LOWER(Qt::Key_P), Qt::Key(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), Qt::Key(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), Qt::Key(0x00E7)/*c cedilla*/, Qt::Key_Backspace },
{ 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, Qt::Key(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, Qt::Key(0x015E)/*S cedilla*/, Qt::Key(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, Qt::Key(0x00C7)/*C cedilla*/, Qt::Key_Backspace },
{ 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), Qt::Key(0x20AC)/*Euro*/, Qt::Key_Dollar, Qt::Key_guillemotleft, Qt::Key_guillemotright, Qt::Key_NumberSign },
{ 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 }
} },
@ -623,7 +623,7 @@
{ 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, Qt::Key(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_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 }
} },
}