virtual keyboard: Make layouts settable
This commit is contained in:
parent
e36f81b297
commit
f56cf19fd5
@ -14,16 +14,89 @@
|
||||
#include <QskTextInput.h>
|
||||
|
||||
#include <QskAspect.h>
|
||||
#include <QskWindow.h>
|
||||
#include <QskFunctions.h>
|
||||
|
||||
#include <QskInputPanelBox.h>
|
||||
#include <QskObjectCounter.h>
|
||||
#include <QskVirtualKeyboard.h>
|
||||
#include <QskWindow.h>
|
||||
|
||||
#include <QFontMetricsF>
|
||||
#include <QGuiApplication>
|
||||
|
||||
static inline QString nativeLocaleString( const QLocale& locale )
|
||||
namespace
|
||||
{
|
||||
class Keyboard final : public QskVirtualKeyboard
|
||||
{
|
||||
using Inherited = QskVirtualKeyboard;
|
||||
|
||||
public:
|
||||
Keyboard( QQuickItem* parentItem = nullptr ):
|
||||
QskVirtualKeyboard( parentItem )
|
||||
{
|
||||
// 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 );
|
||||
}
|
||||
|
||||
void attachItem( QQuickItem* item ) override
|
||||
{
|
||||
m_box->attachInputItem( item );
|
||||
}
|
||||
|
||||
QQuickItem* inputProxy() const override
|
||||
{
|
||||
return m_box->inputProxy();
|
||||
}
|
||||
|
||||
void setPrompt( const QString& prompt ) override
|
||||
{
|
||||
m_box->setInputPrompt( prompt );
|
||||
}
|
||||
|
||||
void setPredictionEnabled( bool on ) override
|
||||
{
|
||||
m_box->setPanelHint( QskInputPanelBox::Prediction, on );
|
||||
}
|
||||
|
||||
void setPrediction( const QStringList& prediction ) override
|
||||
{
|
||||
QskInputPanel::setPrediction( prediction );
|
||||
m_box->setPrediction( prediction );
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
QskInputPanelBox* m_box;
|
||||
};
|
||||
|
||||
class InputContextFactory : public QskInputContextFactory
|
||||
{
|
||||
QskInputPanel* createPanel() const override
|
||||
{
|
||||
return new Panel;
|
||||
}
|
||||
};
|
||||
|
||||
QString nativeLocaleString( const QLocale& locale )
|
||||
{
|
||||
switch ( locale.language() )
|
||||
{
|
||||
case QLocale::Bulgarian:
|
||||
@ -107,6 +180,7 @@ static inline QString nativeLocaleString( const QLocale& locale )
|
||||
default:
|
||||
return QLocale::languageToString( locale.language() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class InputBox : public QskLinearBox
|
||||
@ -306,6 +380,7 @@ int main( int argc, char* argv[] )
|
||||
window2.show();
|
||||
#endif
|
||||
|
||||
QskInputContext::instance()->setFactory( new InputContextFactory() );
|
||||
return app.exec();
|
||||
}
|
||||
|
||||
|
@ -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 } );
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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& );
|
||||
|
@ -5,7 +5,6 @@
|
||||
|
||||
#include "QskVirtualKeyboard.h"
|
||||
#include "QskPushButton.h"
|
||||
#include "QskTextOptions.h"
|
||||
|
||||
#include <qguiapplication.h>
|
||||
#include <qset.h>
|
||||
@ -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,193 +212,98 @@ 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( j < row.size() )
|
||||
{
|
||||
const int key = row[ j ];
|
||||
button->setVisible( isKeyVisible( key ) );
|
||||
|
||||
if ( button->isVisible() )
|
||||
{
|
||||
const qreal keyWidth = baseKeyWidth * qskKeyStretch( key );
|
||||
const qreal keyWidth = baseKeyWidth * keyStretch( key );
|
||||
|
||||
const QRectF rect( xPos, yPos, keyWidth, keyHeight );
|
||||
|
||||
button->setGeometry( rect );
|
||||
button->setAutoRepeat( qskIsAutorepeat( key ) );
|
||||
button->setText( qskTextForKey( 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 );
|
||||
}
|
||||
}
|
||||
|
||||
yPos += keyHeight + spacing;
|
||||
}
|
||||
@ -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"
|
||||
|
@ -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;
|
||||
|
@ -7,7 +7,6 @@
|
||||
|
||||
// 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 },
|
||||
@ -15,9 +14,7 @@
|
||||
{ 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 },
|
||||
@ -25,115 +22,94 @@
|
||||
{ 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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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 },
|
||||
@ -141,9 +117,7 @@
|
||||
{ 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 },
|
||||
@ -151,240 +125,194 @@
|
||||
{ 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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// Japanese
|
||||
{
|
||||
// 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*/ },
|
||||
@ -392,9 +320,7 @@
|
||||
{ 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*/ },
|
||||
@ -402,141 +328,114 @@
|
||||
{ 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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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 }
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
{ 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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
#if 0
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
#endif
|
||||
@ -544,101 +443,82 @@
|
||||
#if 0
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
#endif
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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 },
|
||||
@ -646,9 +526,7 @@
|
||||
{ 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 },
|
||||
@ -656,134 +534,112 @@
|
||||
{ 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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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_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 }
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 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 }
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
}
|
||||
}, // 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 }
|
||||
}
|
||||
},
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user