Pergunta

Eu sou o desenvolvimento de aplicações com Qt Embedded e executá-lo em framebuffer linux.Eu preciso de uma maneira de digitar caracteres não-US.É possível alterar o layout do teclado com o Qt?

Eu tentei executá-lo em Qt/X11.Layout de comutação e de entrada são perfeitamente bem lá.Mas quando eu compilá-lo com Qt/Embedded e executá-lo em framebuffer que não posso mudar o layout.

Eu procurei no documentação e não encontrar nada sobre o esquema de comutação.

Eu acho que tem algo a ver com qt driver de teclado, tal como especificado no documentação.Parece que eu deveria desenvolver o meu próprio controlador de teclado.Mas eu estou usando um teclado padrão e eu acho que deve haver uma forma padrão para alterar o idioma de entrada?

O que você sugere?

BTW, estou usando a versão 4.5.Talvez 4.6 tem algo para resolver este problema?

Exatamente o mesmo problema aqui:

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

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

Foi útil?

Solução

A versão 4.6 ganhou suporte de keymap. Solução:

  1. gerar arquivo KMAP:

    ckbcomp -layout xx> xx.kmap

  2. converter kmap em qmap

    kmap2qmap xx.kmap xx.qmap

  3. Carregar o keyymap por

    1. Especificando QWS_KEKeyBoard Ambiente Variável:

      QWS_KEKEBOOLY = "TTY: keyMap = xx.qmap"

    2. ou carregando um keyMap dinamicamente:

      QWSKeyboardHandler * currentKeyboardHandler =
          QKbdDriverFactory::create("TTY", "keymap=foo.qmap");
      

      Certifique -se de excluir o manipulador criado ao criar um novo:

      delete currentKeyboardHandler;
      currentKeyboardHandler =
          QKbdDriverFactory::create("TTY", "keymap=bar.qmap");
      

Parece que o QT para o Linux incorporado é superado por Lighthouse do projeto. Não tenho certeza, porém, se estiver pronto para a produção, nem sei como lida com a comutação do layout do teclado.

Atualizar

O QT5 não possui QWs e todas as APIs relacionadas ao QWS são removidas. Então você precisará de alguma solução de terceira parte. Ou escreva um plugin para QPA.

Outras dicas

Eu preciso de uma maneira de digitar caracteres fora dos EUA

Você pode alterar o QMAP, mas mesmo no Qt 4.8.0, não há como alternar entre nós e o russo (por exemplo). Você precisa corrigir KMAP2QMAP (Adicionar suporte ALTGR_LOCK), QKBD_QWS.CPP (Altere testmods de acordo com o estado de altgr_lock). Parece que ninguém é usado QTEmbled com teclado. Ou tudo mantém os patches finais em local secreto.

Não pode comentar, então esta é a resposta para

Você precisa corrigir kmap2qmap (adicionar AltGr_Lock de apoio), qkbd_qws.cpp (alterar testmods de acordo com o estado de AltGr_Lock).

Este patch simples para qkbd_qws.cpp permite alternar beteewn línguas pelo CapsLock botão.

523,526c523,524
<             //if (d->m_locks[0] /*CapsLock*/ && (m->flags & QWSKeyboard::IsLetter))
<             //    testmods ^= QWSKeyboard::ModShift;
<             if (d->m_locks[0] /*CapsLock*/)
<                 testmods ^= QWSKeyboard::ModAltGr;
---
>             if (d->m_locks[0] /*CapsLock*/ && (m->flags & QWSKeyboard::IsLetter))
>                 testmods ^= QWSKeyboard::ModShift;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top