输入法上下文

对应于输入法端的文本输入。输入法上下文在输入法端的文本输入激活时创建。它允许通过事件接收来自应用程序的有关文本输入的信息。输入法上下文在停用后不保留状态,应在处理停用后销毁。

文本通常为 UTF-8 编码,索引和长度以字节为单位。

序列号用于同步文本输入和输入法之间的状态。新序列号由文本输入在 commit_state 请求中发送,由输入法用于在 preedit_string、commit_string 和 keysym 等事件中指示已知的文本输入状态。然后,文本输入可以忽略来自输入法的基于过时状态的事件(例如重置之后)。

警告!此文件中描述的实验性协议可能会进行不向后兼容的更改。向后兼容的更改可能会与相应的接口版本号提升一起添加。向后兼容的更改通过提升协议和接口名称中的版本号并重置接口版本来完成。一旦协议被宣布为稳定版本,协议和接口名称中的"z"前缀和版本号将被移除,接口版本号将被重置。

destroy()
commit_string(serial: uint, text: string)
参数
类型
描述
serialuint
serial of the latest known text input state
textstring
提交字符串

发送提交字符串文本以插入到应用程序中。

要提交的文本可以是按键后的单个字符,也可以是某些组合(预编辑)的结果。当需要移除某些文本(参见 delete_surrounding_text)或需要移动输入光标(参见 cursor_position)时,也可以是空文本。

之前设置的任何组合文本将被移除。

preedit_string(serial: uint, text: string, commit: string)
参数
类型
描述
serialuint
serial of the latest known text input state
textstring
commitstring
预编辑字符串

向应用程序文本输入发送预编辑字符串文本。

提交文本可用于在重置时(例如取消焦点时)替换预编辑文本。

之前发送的 preedit_style 和 preedit_cursor 请求也会被 text_input 处理。

preedit_styling(index: uint, length: uint, style: uint)
参数
类型
描述
indexuint
lengthuint
styleuint
预编辑样式

设置组合文本的样式信息。样式从索引开始以字节为单位应用于组合文本(作为字节偏移量)。可以将多种样式应用于组合文本。

此请求应在发送 preedit_string 请求之前发送。

preedit_cursor(index: int)
参数
类型
描述
indexint
预编辑光标

设置组合文本内的光标位置(作为字节偏移量),相对于组合文本的开头。

当索引为负数时不应显示光标。

此请求应在发送 preedit_string 请求之前发送。

delete_surrounding_text(index: int, length: uint)
参数
类型
描述
indexint
lengthuint
删除文本

移除周围文本。

此请求将在 text_input 端直接在 commit_string 请求之后处理。

cursor_position(index: int, anchor: int)
参数
类型
描述
indexint
anchorint
设置光标到新位置

将光标和锚点设置到新位置。索引是新的光标位置(以字节为单位),当 >= 0 时相对于插入文本的末尾,否则相对于插入文本的开头)。锚点是新的锚点位置(以字节为单位),当 >= 0 时相对于插入文本的末尾,否则相对于插入文本的开头)。当不应有选定文本时,锚点应与索引相同。

此请求将在 text_input 端直接在 commit_string 请求之后处理。

modifiers_map(map: array)
参数
类型
描述
maparray
keysym(serial: uint, time: uint, sym: uint, state: uint, modifiers: uint)
参数
类型
描述
serialuint
serial of the latest known text input state
timeuint
symuint
stateuint
modifiersuint
keysym

通知按键事件已发送。按键事件不应用于正常的文本输入操作,这些操作应通过 commit_string、delete_surrounding_text 等完成。按键事件遵循 wl_keyboard 按键事件约定。Sym 是 XKB keysym,state 是 wl_keyboard key_state。

grab_keyboard(keyboard: new_id<wl_keyboard>)
参数
类型
描述
keyboardnew_id<wl_keyboard>
获取硬件键盘

允许输入法接收硬件键盘输入并处理按键事件以在线生成文本事件(带预编辑)。这允许多个按键事件组合输入文本的输入法,如 CJK 语言所做的那样。

key(serial: uint, time: uint, key: uint, state: uint)
参数
类型
描述
serialuint
serial from wl_keyboard::key
timeuint
time from wl_keyboard::key
keyuint
key from wl_keyboard::key
stateuint
state from wl_keyboard::key
转发按键事件

将输入法本身未处理的 wl_keyboard::key 事件转发给客户端。在使用 grab_keyboard 过滤按键事件时使用。参数应来自 wl_keyboard::key 事件。

要生成自定义按键事件,请改用 keysym 请求。

modifiers(serial: uint, mods_depressed: uint, mods_latched: uint, mods_locked: uint, group: uint)
参数
类型
描述
serialuint
serial from wl_keyboard::modifiers
mods_depresseduint
mods_depressed from wl_keyboard::modifiers
mods_latcheduint
mods_latched from wl_keyboard::modifiers
mods_lockeduint
mods_locked from wl_keyboard::modifiers
groupuint
group from wl_keyboard::modifiers
转发修饰键事件

将输入法本身未处理的 wl_keyboard::modifiers 事件转发给客户端。在使用 grab_keyboard 过滤按键事件时使用。参数应来自 wl_keyboard::modifiers 事件。

language(serial: uint, language: string)
参数
类型
描述
serialuint
serial of the latest known text input state
languagestring
text_direction(serial: uint, direction: uint)
参数
类型
描述
serialuint
serial of the latest known text input state
directionuint
surrounding_text(text: string, cursor: uint, anchor: uint)
参数
类型
描述
textstring
cursoruint
anchoruint
周围文本事件

输入位置周围的纯文本周围文本。光标是周围文本中相对于文本开头的字节位置。锚点是周围文本中选择锚点相对于文本开头的字节位置。如果没有选定文本,则锚点与光标相同。

content_type(hint: uint, purpose: uint)
参数
类型
描述
hintuint
purposeuint
invoke_action(button: uint, index: uint)
参数
类型
描述
buttonuint
indexuint
commit_state(serial: uint)
参数
类型
描述
serialuint
serial of text input state
preferred_language(language: string)
参数
类型
描述
languagestring

输入法

输入法对象负责响应来自硬件或虚拟键盘的输入来组合文本。每个 seat 有一个输入法对象。激活时会创建一个新的输入法上下文对象,允许输入法与文本输入通信。

activate(id: new_id<zwp_input_method_context_v1>)
参数
类型
描述
idnew_id<zwp_input_method_context_v1>
激活事件

文本输入已激活。创建一个输入法上下文对象,允许与文本输入通信。

参数
类型
描述
contextobject<zwp_input_method_context_v1>
停用事件

与上下文参数对应的文本输入已停用。输入法上下文应在处理停用后销毁。


实现键盘的接口

一次只能有一个客户端绑定此接口。



set_toplevel(output: object<wl_output>, position: uint)
参数
类型
描述
outputobject<wl_output>
positionuint
将表面类型设置为键盘

将 input_panel_surface 类型设置为键盘。

键盘表面仅在文本输入活动时显示。

set_overlay_panel()
将表面类型设置为覆盖面板

将 input_panel_surface 设置为覆盖面板。

当文本输入活动时,此面板显示在应用程序窗口上方的输入光标附近。


合成器支持

Cage
Cage
0.2.0
COSMIC
COSMIC
1.0.0~beta.8
GameScope
GameScope
3.15.14
Hyprland
Hyprland
0.52.1
Jay
1.12.0
KWin
KWin
6.6
Labwc
Labwc
0.9.2
Louvre
Louvre
2.14.1
Mir
Mir
2.26
Muffin
Muffin
6.6.0
Mutter
Mutter
49.2
niri
niri
25.11
phoc
phoc
0.52
river
river
0.3.13
Sway
Sway
1.11
Treeland
Treeland
0.8.0
Wayfire
Wayfire
0.9.0
Weston
Weston
14.0.2
zwp_input_method_v1
x
x
x
x
x
x
x
x
1
x
x
x
x
x
x
x
x
1
zwp_input_panel_v1
x
x
x
x
x
x
x
x
1
x
x
x
x
x
x
x
x
1

Copyright © 2012, 2013 Intel Corporation

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Footer

© 2026 Wayland Explorer

本网站与 Wayland 官方项目无任何关联。网站所有内容均根据 Wayland 协议 XML 文件自动生成。

本网站使用的 Visual Studio Code - Codicons 遵循 CC BY 4.0 许可。