TuX as LLG logo
Software
DMX4Linux
Driver Suite for Linux
csv2iif.pl suite
convert PayPal transactions to IIF, OFX, QIF
Hardware
DMX30 Interface
128Ch SPP
DMX43 Interface
2out 2in EPP
LED Hardware
for Linux and Windows
EPROM Sampler
for 8 bits of sound
Misc
CatWeasel
Linux drivers for MK3/4 PCI
pg_trompe
PostgreSQL replication
trycatch
C exception/signal handling lib
Patches
to various software
Tools
and small scripts
Docs
misc documents
Links
to lighting stuff

German keyboard map for QT/Embedded

QT/Embedded (version 3.x) when used with the standard pc keyboard on linux reads the scancodes directly from the tty device and thus has no knowledge of any keyboard maps that have been loaded for the linux console. The following patch provides a function into the keyboard devices of QT/Embedded which lets you assign a new scancode conversion table.

Apply qt-embedded-free-3.3.0-germankeymap.patch which should work with all releases of the 3.3.x series. Then add following function into the source containing your main() function and call GermanKeyboard() before entering your QT mainloop QApplication::exec().

#include <windowsystem_qws.h>
#include <qkbdpc101_qws.h>
void GermanKeyboard()
{
  QWSKeyboardHandler *kh=QWSServer::keyboardHandler();
  if(!kh) return;

  QWSKeyMap germanpc102[] = {
    { Qt::Key_unknown,    Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown },
    { Qt::Key_Escape,     27,                 27,                  Qt::Key_unknown },
    { Qt::Key_1,          '1',                '!',                 Qt::Key_onesuperior },
    { Qt::Key_2,          '2',                '"',                 Qt::Key_twosuperior },
    { Qt::Key_3,          '3',                Qt::Key_section,     Qt::Key_threesuperior },
    { Qt::Key_4,          '4',                '$',                 Qt::Key_onequarter },
    { Qt::Key_5,          '5',                '%',                 Qt::Key_onehalf },
    { Qt::Key_6,          '6',                '&',                 Qt::Key_threequarters },
    { Qt::Key_7,          '7',                '/',                 '{' },
    { Qt::Key_8,          '8',                '(',                 '[' },
    { Qt::Key_9,          '9',                ')',                 ']' }, // 10
    { Qt::Key_0,          '0',                '=',                 '}' },
    { Qt::Key_Minus,      Qt::Key_ssharp,     '?',                 '\\' },
    { Qt::Key_Equal,      '`',                '`',                 Qt::Key_questiondown },
    { Qt::Key_Backspace,  8,                  8,                   Qt::Key_exclamdown },
    { Qt::Key_Tab,        9,                  9,                   Qt::Key_yen },
    { Qt::Key_Q,          'q',                'Q',                 '@' },
    { Qt::Key_W,          'w',                'W',                 Qt::Key_registered },
    { Qt::Key_E,          'e',                'E',                 Qt::Key_notsign },
    { Qt::Key_R,          'r',                'R',                 Qt::Key_paragraph },
    { Qt::Key_T,          't',                'T',                 Qt::Key_THORN }, // 20
    { Qt::Key_Y,          'z',                'Z',                 Qt::Key_ydiaeresis },
    { Qt::Key_U,          'u',                'U',                 Qt::Key_ucircumflex },
    { Qt::Key_I,          'i',                'I',                 Qt::Key_idiaeresis },
    { Qt::Key_O,          'o',                'O',                 Qt::Key_oslash },
    { Qt::Key_P,          'p',                'P',                 Qt::Key_thorn },
    { Qt::Key_BraceLeft,  Qt::Key_udiaeresis, Qt::Key_Udiaeresis,  Qt::Key_ucircumflex },
    { Qt::Key_BraceRight, '+',                '*',                 '~' },
    { Qt::Key_Return,     13,                 13 ,                 Qt::Key_unknown },
    { Qt::Key_Control,    Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown },
    { Qt::Key_A,          'a',                'A',                 Qt::Key_ae }, // 30
    { Qt::Key_S,          's',                'S',                 Qt::Key_ssharp },
    { Qt::Key_D,          'd',                'D',                 Qt::Key_eth },
    { Qt::Key_F,          'f',                'F',                 Qt::Key_ediaeresis },
    { Qt::Key_G,          'g',                'G',                 'G'-64 },
    { Qt::Key_H,          'h',                'H',                 Qt::Key_ETH },
    { Qt::Key_J,          'j',                'J',                 Qt::Key_notsign },
    { Qt::Key_K,          'k',                'K',                 Qt::Key_ordfeminine },
    { Qt::Key_L,          'l',                'L',                 Qt::Key_copyright },
    { Qt::Key_Semicolon,  Qt::Key_odiaeresis, Qt::Key_Odiaeresis,  Qt::Key_ocircumflex },
    { Qt::Key_Apostrophe, Qt::Key_adiaeresis, Qt::Key_Adiaeresis,  Qt::Key_acircumflex }, // 40
    { Qt::Key_QuoteLeft,  '^',                Qt::Key_degree,      Qt::Key_sterling },
    { Qt::Key_Shift,      Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown },
    { Qt::Key_Backslash,  '#',                '\'',                Qt::Key_brokenbar },
    { Qt::Key_Z,          'y',                'Y',                 Qt::Key_guillemotleft },
    { Qt::Key_X,          'x',                'X',                 Qt::Key_guillemotright },
    { Qt::Key_C,          'c',                'C',                 Qt::Key_cent },
    { Qt::Key_V,          'v',                'V',                 Qt::Key_section },
    { Qt::Key_B,          'b',                'B',                 Qt::Key_cedilla },
    { Qt::Key_N,          'n',                'N',                 Qt::Key_masculine },
    { Qt::Key_M,          'm',                'M',                 Qt::Key_mu    }, // 50
    { Qt::Key_Comma,      ',',                ';',                 Qt::Key_macron },
    { Qt::Key_Period,     '.',                ':',                 Qt::Key_periodcentered },
    { Qt::Key_Slash,      '-',                '_',                 Qt::Key_hyphen },
    { Qt::Key_Shift,      Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown },
    { Qt::Key_Asterisk,   '*',                '*',                 Qt::Key_multiply },
    { Qt::Key_Alt,        Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown },
    { Qt::Key_Space,      ' ',                ' ',                 Qt::Key_unknown },
    { Qt::Key_CapsLock,   Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown },
    { Qt::Key_F1,         Qt::Key_F1,         Qt::Key_Agrave,      Qt::Key_agrave },
    { Qt::Key_F2,         Qt::Key_F2,         Qt::Key_Aacute,      Qt::Key_aacute }, // 60
    { Qt::Key_F3,         Qt::Key_F3,         Qt::Key_Acircumflex, Qt::Key_acircumflex },
    { Qt::Key_F4,         Qt::Key_F4,         Qt::Key_Atilde,      Qt::Key_atilde },
    { Qt::Key_F5,         Qt::Key_F5,         Qt::Key_AE,          Qt::Key_ae },
    { Qt::Key_F6,         Qt::Key_F6,         Qt::Key_Aring,       Qt::Key_aring },
    { Qt::Key_F7,         Qt::Key_F7,         Qt::Key_Yacute,      Qt::Key_yacute },
    { Qt::Key_F8,         Qt::Key_F8,         Qt::Key_Ccedilla,    Qt::Key_ccedilla },
    { Qt::Key_F9,         Qt::Key_F9,         Qt::Key_Egrave,      Qt::Key_egrave },
    { Qt::Key_F10,        Qt::Key_F10,        Qt::Key_Eacute,      Qt::Key_eacute },
    { Qt::Key_NumLock,    Qt::Key_unknown,    Qt::Key_Ecircumflex, Qt::Key_ecircumflex },
    { Qt::Key_ScrollLock, Qt::Key_unknown,    Qt::Key_Ediaeresis,  Qt::Key_ediaeresis }, // 70
    { Qt::Key_7,          '7',                Qt::Key_Igrave,      Qt::Key_igrave },
    { Qt::Key_8,          '8',                Qt::Key_Iacute,      Qt::Key_iacute },
    { Qt::Key_9,          '9',                Qt::Key_Icircumflex, Qt::Key_icircumflex },
    { Qt::Key_Minus,      '-',                '-',                 Qt::Key_plusminus },
    { Qt::Key_4,          '4',                Qt::Key_Idiaeresis,  Qt::Key_idiaeresis },
    { Qt::Key_5,          '5',                Qt::Key_Ograve,      Qt::Key_ograve },
    { Qt::Key_6,          '6',                Qt::Key_Oacute,      Qt::Key_oacute },
    { Qt::Key_Plus,       '+',                '+',                 Qt::Key_plusminus },
    { Qt::Key_1,          '1',                Qt::Key_Ocircumflex, Qt::Key_ocircumflex },
    { Qt::Key_2,          '2',                Qt::Key_Otilde,      Qt::Key_Otilde }, // 80
    { Qt::Key_3,          '3',                Qt::Key_Ooblique,    'o' },
    { Qt::Key_0,          '0',                Qt::Key_Ugrave,      Qt::Key_ugrave },
    { Qt::Key_Period,     '.',                Qt::Key_Ntilde,      Qt::Key_ntilde },
    { Qt::Key_unknown,    Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown },
    { Qt::Key_unknown,    Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown },
    { Qt::Key_Bar,        '<',                '>',                 '|'    },
    { Qt::Key_F11,        Qt::Key_unknown,    Qt::Key_Uacute,      Qt::Key_uacute },
    { Qt::Key_F12,        Qt::Key_unknown,    Qt::Key_Ucircumflex, Qt::Key_ucircumflex },
    { Qt::Key_unknown,    Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown },
    { Qt::Key_unknown,    Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown }, // 90
    { 0,                  Qt::Key_unknown,    Qt::Key_unknown,     Qt::Key_unknown }
  };
  kh->setKeyMap(germanpc102);
}

If you're unsure have a look at this patch for the textedit example.

This mapping gives you access to all (printable) LATIN1 characters. The Alt Gr key does not work. It is replaced by the CTRL|Strg key. Thus to get a @ you have to press CTRL+q.

I am using this patch with a QT/Embedded 3.3.4 which was configured as follows: ./configure -thread -qt-gfx-vga16 -qt-kbd-tty -qt-kbd-usb -qt-mouse-pc

other languages

Of course this patch can be modified for other Languages as well. If you have a keyboard mapping for non-english languages / keyboard layouts, please tell me, so I can either publish them on this page or provide a link.

Auf Deutsch

QT Embedded 3.3.x unterstützt in der Standardkonfiguration nur die englische Tastaturbelegung. Auch wenn auf der Linux Konsole die deutsche Tastatur korrekt konfiguriert wurde, werden bei einem QTE Programm die Tastaturevents als englisch interpretiert. Dieser patch stellt nun die deutsche Tastaturbelegung für QT Embedded bereit.

Contact

If you have questions or suggestions about this patch, or if you have made a keymap which you would like to share, please contact me: Dirk Jagdmann <doj@cubic.org>.


Search:
https://llg.cubic.org © 2001-2024 by Dirk Jagdmann