在X.org中切换kb布局时触发哪个事件
Which event is fired when switching kb layout in X.org
我是X.org编程新手。我想建立一个对X键盘布局开关作出反应的小应用程序。我已经搜索过了,但没有找到切换kb布局时触发的事件。请给我指出正确的地点。由于
有XkbStateNotify
事件类型,这是X键盘扩展的一部分。你可以像这样获取布局语言:
void x11Events(XEvent* evt)
{
if(evt->type == xkbEventType) {
XkbEvent* xkbevt = (XkbEvent*)evt;
if (xkbevt->any.xkb_type == XkbStateNotify) {
int lang = xkbevt->state.group;
// Some code using lang here.
}
}
}
要得到xkbEventType
,调用XkbQueryExtension()
函数(在XKBlib.h
中声明)。
然而,XkbStateNotify
不仅在布局改变时被触发。这是来自上面引用的规范:
报告的更改包括对键盘的任何方面的更改状态:当设置或取消设置修饰符时,当前组
因此,您必须将lang
的值保存在某个地方,然后,当新事件到达时,将lang
的新值与先前保存的值进行比较。
NB。还有XkbMapNotifyEvent
事件,它通知的不是切换布局本身,而是改变键盘映射。你可能也想看看那个
相关文章:
- Android NDK传感器向事件队列报告奇怪的间隔
- 如何使用C/C++在MacOSX中获得键盘布局
- 从文本文件中读取时钟时间和事件时间并进行处理
- WMI检测进程创建事件-c++
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 处理闪烁窗口事件
- C++Builder中的OnClick事件签名存在问题
- 跟踪滚动条上的鼠标事件
- 布局兼容类型的并集
- 什么是事件表 (wxWidgets)?
- Qt自定义QPush按钮未显示在布局上
- 如何在 MFCaptureEngine 中获取"Camera removed"事件
- 给定顺序中的事件处理
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 如何创建事件驱动的 SDL2 应用程序
- 为什么接收事件的多个小部件需要布局
- Qt小部件布局添加事件
- 在X.org中切换kb布局时触发哪个事件