GtkIMContext

说明 [代码]

abstract class Gtk.IMContext : GObject.Object
{
  /* No available fields */
}

GtkIMContext 定义了 GTK 输入法接口。

GtkIMContextGTK 文本输入部件(如 GtkText)用以将按键事件映射到 Unicode 字符串。

输入法可能按顺序消耗多个按键事件,最后输出组合结果。这被称为预编辑,输入法可以通过将中间组合状态显示为预编辑文本为这一过程提供反馈。为此,GtkIMContext 将发送 GtkIMContext::preedit-startGtkIMContext::preedit-changedGtkIMContext::preedit-end 信号。

例如,内置的 GTK 输入法 GtkIMContextSimple 通过按住 ControlShift 键,然后键入 u 再键入代码点的十六进制小写来实现任意 Unicode 代码点的输入。释放 ControlShift 键时,预编辑结束,字符将插入为文本。例如:

Ctrl+Shift+u 2 0 A C

会得到 € 符号。

通过加载模块提供附加输入法来供 GTK 小部件使用。输入法模块是一个小共享库,为名为“gtk-im-module”的扩展点提供了一个 GIOExtension

要将小部件连接到用户首选的输入法,你应该使用 GtkIMMulticontext

层次结构

hierarchy this GtkIMContext ancestor_0 GObject ancestor_0--this

祖先

实例方法

gtk_im_context_activate_osk

请求平台为用户输入显示一个屏幕键盘。

版本:4.14

gtk_im_context_delete_surrounding

通过发出 ::delete_surrounding 信号,请求输入上下文附加的小部件删除光标周围的字符。

gtk_im_context_filter_key

允许输入法将按键和释放事件转发给另一个输入法,而无需提供 GdkEvent

gtk_im_context_filter_keypress

允许输入法内部处理按键和释放事件。

gtk_im_context_focus_in

通知输入法,与该输入上下文对应的小部件已获得焦点。

gtk_im_context_focus_out

通知输入法,与该输入上下文对应的小部件已失去焦点。

gtk_im_context_get_preedit_string

检索输入上下文的当前预编辑字符串,以及要应用于字符串的属性列表。

gtk_im_context_get_surrounding

检索插入点周围的上下文。

已弃用:4.2 

gtk_im_context_get_surrounding_with_selection

检索插入点周围的上下文。

版本:4.2

gtk_im_context_reset

通知输入法,已进行更改,例如光标位置更改。

gtk_im_context_set_client_widget

为输入上下文设置客户端小部件。

gtk_im_context_set_cursor_location

通知输入法,已进行光标位置更改。

gtk_im_context_set_surrounding

设置插入点周围的上下文和预编辑字符串。

已弃用:4.2 

gtk_im_context_set_surrounding_with_selection

设置插入点周围的上下文和预编辑字符串。此函数预期在响应 GtkIMContext::retrieve-surrounding 信号时调用,如果在其他时间调用,可能会无效。

版本:4.2

gtk_im_context_set_use_preedit

设置 IM 上下文是否应使用预编辑字符串显示反馈。

GObject (43) 继承的方法

有关方法的完整列表,请参见 GObject

属性

Gtk.IMContext:input-hints

允许输入法对自己的行为进行微调的其他提示。

Gtk.IMContext:input-purpose

`GtkIMContext` 连接到的文本字段的用途。

信号

Gtk.IMContext::commit

::commit 信号在用户输入一个完整的输入序列时发送。

Gtk.IMContext::delete-surrounding

::delete-surrounding 信号在输入法需要删除光标周围全部或部分文本时发送。

Gtk.IMContext::preedit-changed

::preedit-changed 信号在当前输入的预编辑序列发生更改时发送。

Gtk.IMContext::preedit-end

::preedit-end 信号在预编辑序列完成或取消时发送。

Gtk.IMContext::preedit-start

::preedit-start 信号在新预编辑序列开始时发送。

Gtk.IMContext::retrieve-surrounding

::retrieve-surrounding 信号在输入法需要光标周围的文本时发送。

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.commit

GtkIMContext::commit 信号的默认处理程序。

Gtk.IMContextClass.delete_surrounding

通过发出 ::delete_surrounding 信号,请求输入上下文附加的小部件删除光标周围的字符。

Gtk.IMContextClass.filter_keypress

允许输入法内部处理按键和释放事件。

Gtk.IMContextClass.focus_in

通知输入法,与该输入上下文对应的小部件已获得焦点。

Gtk.IMContextClass.focus_out

通知输入法,与该输入上下文对应的小部件已失去焦点。

Gtk.IMContextClass.get_preedit_string

检索输入上下文的当前预编辑字符串,以及要应用于字符串的属性列表。

Gtk.IMContextClass.get_surrounding

检索插入点周围的上下文。

已弃用:4.2 

Gtk.IMContextClass.get_surrounding_with_selection

检索插入点周围的上下文。

版本:4.2

Gtk.IMContextClass.preedit_changed

GtkIMContext::preedit-changed 信号的默认处理程序。

Gtk.IMContextClass.preedit_end

GtkIMContext::preedit-end 信号的默认处理程序。

Gtk.IMContextClass.preedit_start

GtkIMContext::preedit-start 信号的默认处理程序。

Gtk.IMContextClass.reset

通知输入法,已进行更改,例如光标位置更改。

Gtk.IMContextClass.retrieve_surrounding

GtkIMContext::retrieve-surrounding 信号的默认处理程序。

Gtk.IMContextClass.set_client_widget

为输入上下文设置客户端小部件。

Gtk.IMContextClass.set_cursor_location

通知输入法,已进行光标位置更改。

Gtk.IMContextClass.set_surrounding

设置插入点周围的上下文和预编辑字符串。

已弃用:4.2 

Gtk.IMContextClass.set_surrounding_with_selection

设置插入点周围的上下文和预编辑字符串。此函数预期在响应 GtkIMContext::retrieve-surrounding 信号时调用,如果在其他时间调用,可能会无效。

版本:4.2

Gtk.IMContextClass.set_use_preedit

设置 IM 上下文是否应使用预编辑字符串显示反馈。