Как отправить смайлик в юникоде с симуляцией ввода xlib? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытался отправить симуляцию с помощью XLib, мне удалось отправить несколько символов раньше.Но я потерпел неудачу, когда отправил смайлики.Что не так с моим кодом?И как я могу отправлять символы эмодзи так же, как я отправляю символы «А»?

Мне удалось отправить символы эмодзи, отправив «CTRL + Shift + U, затем Unicode, затем ENTER», но по определенным причинам яхочу отправить их напрямую так же, как я отправил символ «А» ниже.

Это мой фрагмент кода:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <unistd.h>

    #include <X11/Xlib.h>
    #include <X11/Xutil.h>
    #include <X11/keysym.h>
    #include <X11/extensions/XTest.h>
    ...
    ...
    ...
    ...
    int keySymPress (Display *display, KeySym sym)
    {
        KeyCode code = XKeysymToKeycode (display, sym);

        if (!code)
            return 1;
        if (!XTestFakeKeyEvent(display, code, 1, 0))
            return 2;

        return 0;
    }

    int keySymRelease (Display *display, KeySym sym)
    {
        KeyCode code = XKeysymToKeycode (display, sym);

        if (!code)
            return 1;
        if (!XTestFakeKeyEvent(display, code, 0, 0))
            return 2;

        return 0;
    }
    ...
    ...
    ...

Это мой код для отправки символа «А»":

    ...
    ...
    int main (void)
    {
        Display *display = XOpenDisplay (NULL);
        ...
        ...
        ...
        //keySymPress (display, XK_A); 
        keySymPress (display, 0x0041); // U+0041 LATIN CAPITAL LETTER A
        ...
        ...
        ...

Это мой код, который не смог отправить символ" ? "

    ...
    ...
    int main (void)
    {
        Display *display = XOpenDisplay (NULL);
        ...
        ...
        ...
        keySymPress (display, 0x001f603); // U+1f603 Grinning face with big eyes (?)
        ...
        ...
        ...

Я ожидаю, что символы эмодзи будут выглядеть так же, как и я с символом" А "

...