如何使用xlib模拟输入发送unicode表情符号字符?

时间:2019-02-06 17:26:18

标签: c xlib

我尝试使用XLib发送模拟输入,我设法发送了一些字符。但是当我发送表情符号字符时失败了。我的代码有什么问题?以及如何发送表情符号字符,就像发送“ A”字符一样?

我设法通过发送“ CTRL + Shift + U然后是Unicode,然后按ENTER”来发送表情符号字符,但是由于某些原因,我想直接发送它们,就像我在下面发送字符“ A”一样。

这是我的代码段:

    #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;
    }
    ...
    ...
    ...

这是我发送字符“ A”的代码:

    ...
    ...
    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 ()
        ...
        ...
        ...

我希望表情符号字符看起来与字符“ A”相同

0 个答案:

没有答案