Вопрос

Это точный дубликат этовопрос ;Однако код, связанный в принятом ответе, почти 11 лет, и этот комментарий в коде приводит к моему дублирующему вопросу:

Кейюм -> Конверсия UTF-8, надеюсь, один день будет предоставлен Xlib через xmblookupstring () и в идеале не должен быть сделан в X Приложения.Но мы еще не там.

Мы там еще?Я знаю о XwcLookupString, но что-то вроде ...

wchar_t unicode = XKeySymToWideChar( keysym );
.

... будет намного проще и логично, и не требует обновления, когда keysyms добавляются или изменены.

Есть простая функция в X11 / XLIB, которая будет сопоставлять Keysym к своему эквиваленту Unicode?

Это было полезно?

Решение 2

Есть простая функция в X11 / XLIB, которая будет сопоставлять к кейю к его Unicode Equivalent?

Окончательный ответ NO

Потому что Unicode был изобретен годы после Xlib, и никто никогда не пошел Вернуться, чтобы добавить такую вещь?Большая часть XLIB API является CodeSet независимый, так как он был написан в те дни, когда каждый локаль использовал другой набор символов (ISO 8859- *, Big5, Jis и т. Д.), Так вы получаете Char Buffer подходит для текущей локали.Было несколько UTF-8 конкретные дополнения в последующие годы, но в основном мы пытались позволить С тех пор xLib покоится с тем, что толкает новый дизайн API в сторону XCB вместо этого.

Другие советы

Попробуйте этот модуль Node.js для генерации C Таблица C: https://github.com/substack/node-Keyysym . Он основан на этом наборе данных: https://github.com/Узвук / узел-keyysym / Blob / Master / Data / keysyms.txt

Это может помочь кому-то ... адаптировано из источника XMODMAP и Online DOC ( http://tronche.com/gui/x/xlib/Utilities/keyboard/xkeycodeTokeysy.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);
.

keyyym уже значение UTF.Проблема заключается в том, чтобы установить ключевые аккомации ... 'á' Например.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top