gpt4 book ai didi

linux - 获取将在 `XKB_KEY_dead_circumflex` 和普通键上键入的字符

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:20 25 4
gpt4 key购买 nike

有没有办法确定它将解析为哪个字符,例如如果我输入 XKB_KEY_dead_circumflex 和 char a?这里的结果将是 â,但我如何以编程方式检测到它?

这不仅适用于 XKB_KEY_dead_circumflex,例如也可以输入 XKB_KEY_dead_greek 来输入希腊字母表。

最佳答案

在 X 中,此特定行为由输入法 (IM) 决定。 X 非常灵活;如果你愿意,你可以编写一个输入法,将 XKB_KEY_dead_circumflexa 组合成日文 。或者输出一个 è,如果你想混淆你的用户......

您可以尝试 XmbLookupString 或 Xutf8LookupString 来模拟按键并返回正确的字符:

XIM im= XOpenIM(display, NULL, NULL, NULL);
XIC ic = XCreateIC(im);

char buf[8];
KeySym symbol;
Status status;
XKeyPressedEvent event;
event.type = XKeyPressEvent;
event.display = display;
event.window = window;
event.state = 0; // optionally add Shift, Ctrl, Meta
event.keycode = XBK_KEY_dead_circumflex;
Xutf8LookupString(ic, &event, buf, 8, symbol, status); // send dead key
event.keycode = XBK_KEY_a;
Xutf8LookupString(ic, &event, buf, 8, symbol, status); // send real key

buf 现在应该包含 â 的 UTF8 代码,但检查 status 以查看转换是否成功。

请注意,您必须传递“a”的键码,而不是“a”的 ASCII 代码(我认为没有任何 X 函数接受死键和字符并返回组合)。您还必须仅模拟 KeyPresses(请参阅 Xutf8LookupString 的手册页)。

关于linux - 获取将在 `XKB_KEY_dead_circumflex` 和普通键上键入的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35892831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com