4

Qt Embedded を使用してアプリケーションを開発しており、Linux フレームバッファで実行しています。米国以外の文字を入力する方法が必要です。Qtでキーボードレイアウトを変更することは可能ですか?

Qt/X11で実行してみました。レイアウトの切り替えと入力はまったく問題ありません。しかし、Qt/Embedded でコンパイルしてフレームバッファで実行すると、レイアウトを変更できません。

ドキュメントを検索しましたが、レイアウトの切り替えについては何も見つかりませんでした。

ドキュメントで指定されているように、qtキーボードドライバーと関係があると思います。独自のキーボード ドライバーを開発する必要があるようです。しかし、私は標準のキーボードを使用していますが、入力言語を変更する標準的な方法が必要だと思いますか?

何を提案しますか?

ところで、私は 4.5 バージョンを使用しています。4.6 にはこの問題を解決する何かがあるのでしょうか?

ここでまったく同じ問題:

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

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

4

3 に答える 3

7

バージョン 4.6 ではキーマップのサポートが追加されました。解決:

  1. kmap ファイルを生成します。

    ckbcomp -レイアウト xx > xx.kmap

  2. kmap を qmap に変換する

    kmap2qmap xx.kmap xx.qmap

  3. キーマップをロードする

    1. QWS_KEYBOARD 環境変数の指定:

      QWS_KEYBOARD="TTY:keymap=xx.qmap"

    2. またはキーマップを動的にロードします:

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

      新しいハンドラーを作成するときは、作成したハンドラーを必ず削除してください。

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

組み込み Linux 用の Qt はProject Lighthouseに置き換えられたようです。ただし、製品の準備ができているかどうかはわかりませんが、キーボードレイアウトの切り替えをどのように処理するかもわかりません.

アップデート

Qt5 には QWS がなく、QWS 関連の API はすべて削除されています。したがって、サードパーティのソリューションが必要になります。または、 QPAのプラグインを作成します。

于 2010-04-21T12:05:52.003 に答える
3

米国以外の文字を入力する方法が必要です

qmapを変更することはできますが、Qt 4.8.0でも、米国とロシア語を切り替える方法はありません(たとえば)。kmap2qmap(AltGr_Lockサポートを追加)、qkbd_qws.cpp(AltGr_Lockの状態に応じてtestmodsを変更)にパッチを適用する必要があります。キーボードでQtEmbeddedを使用している人はいないようです。または、すべてが最終パッチを秘密の場所に保持します。

于 2012-03-29T19:01:35.247 に答える