类
GtkIMContext
说明 [代码]
abstract class Gtk.IMContext : GObject.Object
{
/* No available fields */
}
GtkIMContext
定义了 GTK 输入法接口。
GtkIMContext
被 GTK 文本输入部件(如 GtkText
)用以将按键事件映射到 Unicode 字符串。
输入法可能按顺序消耗多个按键事件,最后输出组合结果。这被称为预编辑,输入法可以通过将中间组合状态显示为预编辑文本为这一过程提供反馈。为此,GtkIMContext
将发送 GtkIMContext::preedit-start
、GtkIMContext::preedit-changed
和 GtkIMContext::preedit-end
信号。
例如,内置的 GTK 输入法 GtkIMContextSimple
通过按住 Control 和 Shift 键,然后键入 u 再键入代码点的十六进制小写来实现任意 Unicode 代码点的输入。释放 Control 和 Shift 键时,预编辑结束,字符将插入为文本。例如:
Ctrl+Shift+u 2 0 A C
会得到 € 符号。
通过加载模块提供附加输入法来供 GTK 小部件使用。输入法模块是一个小共享库,为名为“gtk-im-module”的扩展点提供了一个 GIOExtension
。
要将小部件连接到用户首选的输入法,你应该使用 GtkIMMulticontext
。
实例方法
gtk_im_context_set_surrounding_with_selection
设置插入点周围的上下文和预编辑字符串。此函数预期在响应 GtkIMContext::retrieve-surrounding
信号时调用,如果在其他时间调用,可能会无效。
版本:4.2
信号
从 GObject (1) 继承的信号
GObject::notify
notify 信号在对象的属性值通过 g_object_set_property()、g_object_set() 等函数设为新值时发出。
类结构
struct GtkIMContextClass {
void (* preedit_start) (
GtkIMContext* context
);
void (* preedit_end) (
GtkIMContext* context
);
void (* preedit_changed) (
GtkIMContext* context
);
void (* commit) (
GtkIMContext* context,
const char* str
);
gboolean (* retrieve_surrounding) (
GtkIMContext* context
);
gboolean (* delete_surrounding) (
GtkIMContext* context,
int offset,
int n_chars
);
void (* set_client_widget) (
GtkIMContext* context,
GtkWidget* widget
);
void (* get_preedit_string) (
GtkIMContext* context,
char** str,
PangoAttrList** attrs,
int* cursor_pos
);
gboolean (* filter_keypress) (
GtkIMContext* context,
GdkEvent* event
);
void (* focus_in) (
GtkIMContext* context
);
void (* focus_out) (
GtkIMContext* context
);
void (* reset) (
GtkIMContext* context
);
void (* set_cursor_location) (
GtkIMContext* context,
GdkRectangle* area
);
void (* set_use_preedit) (
GtkIMContext* context,
gboolean use_preedit
);
void (* set_surrounding) (
GtkIMContext* context,
const char* text,
int len,
int cursor_index
);
gboolean (* get_surrounding) (
GtkIMContext* context,
char** text,
int* cursor_index
);
void (* set_surrounding_with_selection) (
GtkIMContext* context,
const char* text,
int len,
int cursor_index,
int anchor_index
);
gboolean (* get_surrounding_with_selection) (
GtkIMContext* context,
char** text,
int* cursor_index,
int* anchor_index
);
void (* activate_osk) (
GtkIMContext* context
);
gboolean (* activate_osk_with_event) (
GtkIMContext* context,
GdkEvent* event
);
void (* _gtk_reserved2) (
void
);
void (* _gtk_reserved3) (
void
);
void (* _gtk_reserved4) (
void
);
}
暂无说明。
类成员
preedit_start: void (* preedit_start) ( GtkIMContext* context )
GtkIMContext::preedit-start
信号的默认处理程序。preedit_end: void (* preedit_end) ( GtkIMContext* context )
GtkIMContext::preedit-end
信号的默认处理程序。preedit_changed: void (* preedit_changed) ( GtkIMContext* context )
GtkIMContext::preedit-changed
信号的默认处理程序。commit: void (* commit) ( GtkIMContext* context, const char* str )
GtkIMContext::commit
信号的默认处理程序。retrieve_surrounding: gboolean (* retrieve_surrounding) ( GtkIMContext* context )
GtkIMContext::retrieve-surrounding
信号的默认处理程序。delete_surrounding: gboolean (* delete_surrounding) ( GtkIMContext* context, int offset, int n_chars )
GtkIMContext::delete-surrounding
信号的默认处理程序。set_client_widget: void (* set_client_widget) ( GtkIMContext* context, GtkWidget* widget )
当输入文本要显示的输入窗口更改时,通过
gtk_im_context_set_client_widget()
调用。覆盖此函数以跟踪当前输入窗口,例如用于定位输入法的状态显示。get_preedit_string: void (* get_preedit_string) ( GtkIMContext* context, char** str, PangoAttrList** attrs, int* cursor_pos )
通过
gtk_im_context_get_preedit_string()
调用以检索当前为光标位置进行预编辑的文本用于显示。任何连续按几次键来构成复杂字符或任何其他组合的输入法都应覆盖此方法来提供反馈。filter_keypress: gboolean (* filter_keypress) ( GtkIMContext* context, GdkEvent* event )
在每次按下或释放按键时通过
gtk_im_context_filter_keypress()
调用。每种非平凡的输入法都需要覆盖此方法以实现键事件到文本的映射。返回值TRUE
表示调用方已消耗此事件。在这种情况下,在键序列完成后应发出GtkIMContext::commit
信号,以便将结果文本传递回输入小组件。或者,可以返回FALSE
以表示此事件未被输入法所处理。如果为键存在内置映射,则使用该映射生成 字符。focus_in: void (* focus_in) ( GtkIMContext* context )
在输入小组件获得焦点时通过
gtk_im_context_focus_in()
调用。可予以覆盖以跟踪当前 焦点。focus_out: void (* focus_out) ( GtkIMContext* context )
在输入小组件丢失焦点时通过
gtk_im_context_focus_out()
调用。可予以覆盖以跟踪当前 焦点。reset: void (* reset) ( GtkIMContext* context )
通过
gtk_im_context_reset()
调用以发出更改信号,如更改光标位置。实现了预编辑的输入法应覆盖此方法以在 重置时清除预编辑状态。set_cursor_location: void (* set_cursor_location) ( GtkIMContext* context, GdkRectangle* area )
通过
gtk_im_context_set_cursor_location()
调用以告知输入法相对于客户端窗口的当前光标位置。可予以覆盖以实现显示游标 位置的弹出式窗口。set_use_preedit: void (* set_use_preedit) ( GtkIMContext* context, gboolean use_preedit )
通过
gtk_im_context_set_use_preedit()
调用以控制预编辑字符串的使用。予以覆盖以通过其他一些方式显示反馈信息(如果已 关闭)。set_surrounding: void (* set_surrounding) ( GtkIMContext* context, const char* text, int len, int cursor_index )
通过
gtk_im_context_set_surrounding()
调用以响应GtkIMContext::retrieve-surrounding
信号,以更新输入法对光标周围上下文的认识。即使使用实现了与上下文相关的行为的输入法也无需覆盖此方法。基本实现足以使gtk_im_context_get_surrounding()
能够 工作。get_surrounding: gboolean (* get_surrounding) ( GtkIMContext* context, char** text, int* cursor_index )
通过
gtk_im_context_get_surrounding()
调用以更新光标位置周围的上下文。即使使用实现了与上下文相关的行为的输入法也无需覆盖此方法。基本实现发出GtkIMContext::retrieve-surrounding
并记录通过随后的Gtk.IMContextClass.get_surrounding
调用接收到的上下文。set_surrounding_with_selection: void (* set_surrounding_with_selection) ( GtkIMContext* context, const char* text, int len, int cursor_index, int anchor_index )
通过
gtk_im_context_set_surrounding_with_selection()
调用以响应GtkIMContext::retrieve-surrounding
信号,以更新输入法对光标周围上下文的认识。即使使用实现了与上下文相关的行为的输入法也无需覆盖此方法。基本实现足以使gtk_im_context_get_surrounding()
能够 工作。get_surrounding_with_selection: gboolean (* get_surrounding_with_selection) ( GtkIMContext* context, char** text, int* cursor_index, int* anchor_index )
通过
gtk_im_context_get_surrounding_with_selection()
调用以更新光标位置周围的上下文。即使对于实现了上下文相关行为的输入法,也没有必要覆盖此方法。基本实现发出GtkIMContext::retrieve-surrounding
并记录Gtk.IMContextClass.get_surrounding
后续调用接收到的上下文。activate_osk: void (* activate_osk) ( GtkIMContext* context )
暂无说明。
activate_osk_with_event: gboolean (* activate_osk_with_event) ( GtkIMContext* context, GdkEvent* event )
暂无说明。
_gtk_reserved2: void (* _gtk_reserved2) ( void )
暂无说明。
_gtk_reserved3: void (* _gtk_reserved3) ( void )
暂无说明。
_gtk_reserved4: void (* _gtk_reserved4) ( void )
暂无说明。
虚拟方法
Gtk.IMContextClass.set_surrounding_with_selection
设置插入点周围的上下文和预编辑字符串。此函数预期在响应 GtkIMContext::retrieve-surrounding
信号时调用,如果在其他时间调用,可能会无效。
版本:4.2