text-input unstable v3

zwp_text_input_manager_v3
zwp_text_input_manager_v3_destroy破棄
zwp_text_input_manager_v3_get_text_inputzwp_text_input_v3 を作成
zwp_text_input_v3
zwp_text_input_v3_add_listenerハンドラ設定
zwp_text_input_v3_destroy破棄
zwp_text_input_v3_enableテキスト入力を有効にする
zwp_text_input_v3_disableテキスト入力を無効にする
zwp_text_input_v3_set_surrounding_text周囲のテキストを設定
zwp_text_input_v3_set_text_change_causeテキストが変更されたことを通知
zwp_text_input_v3_set_content_typeテキスト内容の設定
zwp_text_input_v3_set_cursor_rectangleエディタの矩形範囲をセット
zwp_text_input_v3_commit変更を適用する
zwp_text_input_manager_v3
static void zwp_text_input_manager_v3_destroy(
    struct zwp_text_input_manager_v3 *zwp_text_input_manager_v3);
破棄
static struct zwp_text_input_v3 *zwp_text_input_manager_v3_get_text_input(
    struct zwp_text_input_manager_v3 *zwp_text_input_manager_v3,
    struct wl_seat *seat);
zwp_text_input_v3 を作成
zwp_text_input_v3
static int zwp_text_input_v3_add_listener(
    struct zwp_text_input_v3 *zwp_text_input_v3,
    const struct zwp_text_input_v3_listener *listener, void *data);
ハンドラ設定。

void (*enter)(void *data, struct zwp_text_input_v3 *zwp_text_input_v3,
    struct wl_surface *surface);

void (*leave)(void *data, struct zwp_text_input_v3 *zwp_text_input_v3,
    struct wl_surface *surface);

void (*preedit_string)(void *data, struct zwp_text_input_v3 *zwp_text_input_v3,
    const char *text, int32_t cursor_begin, int32_t cursor_end);

void (*commit_string)(void *data, struct zwp_text_input_v3 *zwp_text_input_v3,
    const char *text);

void (*delete_surrounding_text)(void *data,
    struct zwp_text_input_v3 *zwp_text_input_v3,
    uint32_t before_length, uint32_t after_length);

void (*done)(void *data, struct zwp_text_input_v3 *zwp_text_input_v3,
    uint32_t serial);
enter
surface にテキスト入力フォーカスが来た。
leave
surface からテキスト入力フォーカスが離れた。
preedit 文字列をリセットする必要がある。
preedit_string
現在のカーソル位置に新しい編集前テキストを設定する。
以前のテキストは削除する必要がある。

text は、編集前の文字列。

cursor_begin, cursor_end は、カーソルの先頭と終端位置。
text 先頭からのバイト数。
両方が -1 なら、カーソルは非表示。
両方が同じ値なら線で、そうでなければ間の文字列を強調表示する。
commit_string
エディターに、確定した文字列を挿入させる時に来る。
delete_surrounding_text
テキストを削除する必要がある時に来る。

before_length, after_length は、現在のカーソル位置からの前後のバイト数。
done
preedit_string, commit_string, delete_surrounding_text イベントの変更を確定させる時に来る。

1. 編集前テキストを置き換える。
2. 周囲のテキストを削除。
3. カーソルを終端に移動して、確定文字列を挿入。
4. 新しい編集前テキストをカーソル位置に挿入。
5. 編集前テキスト内にカーソルをセット。

serial は、このオブジェクトで発行された commit 要求の総数と等しくなければならない。
static void zwp_text_input_v3_destroy(
    struct zwp_text_input_v3 *zwp_text_input_v3);
破棄
static void zwp_text_input_v3_enable(
    struct zwp_text_input_v3 *zwp_text_input_v3);
enter イベント時、テキスト入力を有効にする場合に実行する。

実行時、現在の入力状態をリセットする。
commit を実行した時に適用される。
static void zwp_text_input_v3_disable(
    struct zwp_text_input_v3 *zwp_text_input_v3);
明示的に、テキスト入力を無効にする。
commit 実行時に適用される。
static void zwp_text_input_v3_set_surrounding_text(
    struct zwp_text_input_v3 *zwp_text_input_v3,
    const char *text, int32_t cursor, int32_t anchor);
編集前テキストを除く周囲のテキストを設定する。
commit 実行時に適用される。
text
UTF-8 文字列。4000 byte 以内。
cursor
カーソル位置。text の先頭からのバイト位置。
anchor
テキストが選択されている場合、選択の終端のバイト位置。
cursor と同じ値で、選択なし。
static void zwp_text_input_v3_set_text_change_cause(
    struct zwp_text_input_v3 *zwp_text_input_v3, uint32_t cause);
zwp_text_input_v3_set_surrounding_text() によってテキストを変更した場合、コンポジターに通知する必要がある。
commit 実行時に適用される。
cause
変更の原因。デフォルトは INPUT_METHOD。

enum zwp_text_input_v3_change_cause {
 ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_INPUT_METHOD = 0,
 ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_OTHER = 1 
}
static void zwp_text_input_v3_set_content_type(
    struct zwp_text_input_v3 *zwp_text_input_v3,
    uint32_t hint, uint32_t purpose);
テキストのヒントと使用目的を設定する。
commit 実行時に適用される。
hint
enum zwp_text_input_v3_content_hint {
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_NONE = 0x0,
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_COMPLETION = 0x1, //完成
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_SPELLCHECK = 0x2, //スペルチェック
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_AUTO_CAPITALIZATION = 0x4, //自動大文字化
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_LOWERCASE = 0x8,  //小文字
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_UPPERCASE = 0x10, //大文字
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_TITLECASE = 0x20,
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_HIDDEN_TEXT = 0x40, //非表示テキスト
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_SENSITIVE_DATA = 0x80,
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_LATIN = 0x100, //ローマ字
 ZWP_TEXT_INPUT_V3_CONTENT_HINT_MULTILINE = 0x200  //複数行
}
purpose
使用目的。

enum zwp_text_input_v3_content_purpose {
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL = 0, //通常
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_ALPHA = 1,  //アルファベット
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DIGITS = 2, //数字と記号
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NUMBER = 3, //数字
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_PHONE = 4,  //電話番号
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_URL = 5,    //URL
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_EMAIL = 6,  //メール
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NAME = 7,   //名前
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_PASSWORD = 8, //パスワード
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_PIN = 9,    //PIN
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DATE = 10,  //日
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_TIME = 11,  //時間
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_DATETIME = 12, //日時
 ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_TERMINAL = 13  //端末
}
static void zwp_text_input_v3_set_cursor_rectangle(
    struct zwp_text_input_v3 *zwp_text_input_v3,
    int32_t x, int32_t y, int32_t width, int32_t height);
変換候補ウィンドウを表示するための基準として、エディタの矩形範囲を、サーフェスの座標で指定する。

候補ウィンドウは、この範囲に重ならないように、適当な位置に表示される。

commit 実行時に適用される。

初期値は空で、領域をサポートしない。
static void zwp_text_input_v3_commit(struct zwp_text_input_v3 *zwp_text_input_v3);
状態変更を適用する。