views:

289

answers:

1

I'm developing application with Qt Embedded and run it in linux framebuffer. I need a way to type non-US characters. Is it possible to change keyboard layout with Qt?

I tried to run it on Qt/X11. Layout switching and input are perfectly fine there. But when I compile it with Qt/Embedded and run it in framebuffer I cannot change layout.

I searched in the documentation and didn't find anything about layout switching.

I think it has something to do with qt keyboard driver as specified at the documentation. It seems that I should develop my own keyboard driver. But I'm using standard keyboard and I think there must be a standard way to change input language?

What would you suggest?

BTW, I'm using 4.5 version. Maybe 4.6 has something to solve this issue?

Exact the same problem here:

http://lists.trolltech.com/pipermail/qt-embedded-interest/2008-August/000034.html

http://lists.trolltech.com/qt-interest/2004-02/msg00570.html

A: 

Version 4.6 has gained keymap support. Solution:

  1. generate kmap file:

    ckbcomp -layout xx > xx.kmap

  2. convert kmap to qmap

    kmap2qmap xx.kmap xx.qmap

  3. load keymap by specifying QWS_KEYBOARD environment variable:

    QWS_KEYBOARD="TTY:keymap=xx.qmap"

You can also load a keymap dynamically:

QKbdDriverFactory::create("TTY", "keymap=xx.qmap");
Vanuan