7

これはこの質問の正確な複製です。ただし、受け入れられた回答にリンクされているコードは11年近く前のものであり、コード内のこのコメントは私の重複した質問につながります:

keysym -> UTF-8 変換は、XmbLookupString() を介して Xlib によっていつの日か提供されることを願っており、理想的には X アプリケーションで行う必要はありません。しかし、私たちはまだそこにいません。

私たちはまだそこにいますか?私は知ってXwcLookupStringいますが、何か...

wchar_t unicode = XKeySymToWideChar( keysym );

... ははるかに単純で論理的であり、KeySyms が追加または変更されるたびに更新する必要はありません。

X11/Xlib に KeySym を対応する Unicode にマップする単純な関数はありますか?

4

4 に答える 4

5

この node.js モジュールを試して、C テーブルを生成してください: https://github.com/substack/node-keysym。このデータセットに基づいています: https://github.com/substack/node-keysym/blob/master/data/keysyms.txt

于 2012-01-23T22:34:11.997 に答える
2

X11/Xlib に KeySym を対応する Unicode にマップする単純な関数はありますか?

決定的な答えはノーです

Unicode は Xlib の何年も後に発明され、そのようなものを追加するために戻った人は誰もいなかったのでしょうか? Xlib API のほとんどは、すべてのロケールが異なる文字セット (ISO 8859-*、Big5、JIS など) を使用していた時代に書かれたため、コードセットに依存しないため、現在のロケールに適した文字バッファーを取得できます。後年、いくつかの UTF-8 固有の追加がありましたが、それ以来、ほとんどの場合、Xlib を安心して休ませようとしており、代わりに新しい API 設計を xcb にプッシュしています。

于 2012-01-26T03:42:08.030 に答える
1

これは誰かを助けるかもしれません... xmodmapソースとオンラインドキュメント(http://tronche.com/gui/x/xlib/utilities/keyboard/XKeycodeToKeysym.html)から適応

KeySym ks = XKeycodeToKeysym(dpy, keycode+min_keycode, modifier);
const char *s;
if (ks != NoSymbol)
    s = XKeysymToString (ks);
else {
    printf("Keycode has no symbol. Ignored.\n");
    return NULL;
}

printf ("0x%04x (%s)\n", (unsigned int)ks, s);
printf ("wide char:%lc\n", (wchar_t)ks);

Keysym はすでに UTF 値です。問題は、キーの組み合わせを設定することです...たとえば「á」。

于 2013-09-17T02:08:19.213 に答える