我尝试使用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”相同