本地化与国际化文本函数详解
1. 事件过滤
在输入方法的运行过程中,若没有过滤器,客户端可能会接收并丢弃对输入方法正常运行至关重要的事件。以下是这类事件的一些示例:
- 本地模式下预编辑窗口的暴露事件。
- 输入方法用于与输入服务器通信的事件。若不想干扰客户端代码,就必须拦截这类与输入服务器协议相关的事件。
- 按键事件在绑定到如 X Toolkit Intrinsics 库提供的翻译之前,可以先发送到过滤器。
客户端需要获取 XIC 值 XNFilterEvents,并将该事件掩码添加到客户端窗口的事件掩码中,此掩码可能为零。
2. 回调机制
当实现即时输入方法时,只有客户端能够在原地插入或删除预编辑数据,并可能滚动现有文本。这意味着按键的回显必须由客户端自身实现,且要与输入方法逻辑紧密耦合。
当用户输入按键时,客户端调用 XmbLookupString 或 XwcLookupString 。在即时输入的情况下,此时预编辑中按键的回显尚未完成。在返回处理输入字符的客户端逻辑之前,查找函数必须调用回显逻辑来插入新的按键。如果到目前为止输入的按键组成了一个字符,则需要删除已输入的按键,并返回组合后的字符。因此,在被客户端代码调用时,输入方法逻辑在返回之前必须回调客户端,即调用客户端代码中的回调过程。
输入方法逻辑需要回调客户端的情况有很多,每种情况都与一个明确定义的回调操作相关联。客户端可以为每个输入上下文指定针对每个操作应调用的回调。此外,还提供了用于状态信息反馈的回调以及用于发起输入方法几何请求的回调。
超级会员免费看
订阅专栏 解锁全文
3万+

被折叠的 条评论
为什么被折叠?



