/* Generated by wayland-scanner 1.25.0 */

#ifndef XX_TEXT_INPUT_UNSTABLE_V3_ENUM_PROTOCOL_H
#define XX_TEXT_INPUT_UNSTABLE_V3_ENUM_PROTOCOL_H

#ifdef  __cplusplus
extern "C" {
#endif

#ifndef XX_TEXT_INPUT_V3_CHANGE_CAUSE_ENUM
#define XX_TEXT_INPUT_V3_CHANGE_CAUSE_ENUM
/**
 * @ingroup iface_xx_text_input_v3
 * text change reason
 *
 * Reason for the change of surrounding text or cursor posision.
 */
enum xx_text_input_v3_change_cause {
	/**
	 * input method caused the change
	 */
	XX_TEXT_INPUT_V3_CHANGE_CAUSE_INPUT_METHOD = 0,
	/**
	 * something else than the input method caused the change
	 */
	XX_TEXT_INPUT_V3_CHANGE_CAUSE_OTHER = 1,
};
#endif /* XX_TEXT_INPUT_V3_CHANGE_CAUSE_ENUM */

#ifndef XX_TEXT_INPUT_V3_CONTENT_HINT_ENUM
#define XX_TEXT_INPUT_V3_CONTENT_HINT_ENUM
/**
 * @ingroup iface_xx_text_input_v3
 * content hint
 *
 * Content hint is a bitmask to allow to modify the behavior of the text
 * input.
 */
enum xx_text_input_v3_content_hint {
	/**
	 * no special behavior
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_NONE = 0x0,
	/**
	 * suggest word completions
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_COMPLETION = 0x1,
	/**
	 * suggest word corrections
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_SPELLCHECK = 0x2,
	/**
	 * switch to uppercase letters at the start of a sentence
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_AUTO_CAPITALIZATION = 0x4,
	/**
	 * prefer lowercase letters
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_LOWERCASE = 0x8,
	/**
	 * prefer uppercase letters
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_UPPERCASE = 0x10,
	/**
	 * prefer casing for titles and headings (can be language dependent)
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_TITLECASE = 0x20,
	/**
	 * characters should be hidden
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_HIDDEN_TEXT = 0x40,
	/**
	 * typed text should not be stored
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_SENSITIVE_DATA = 0x80,
	/**
	 * just Latin characters should be entered
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_LATIN = 0x100,
	/**
	 * the text input is multiline
	 */
	XX_TEXT_INPUT_V3_CONTENT_HINT_MULTILINE = 0x200,
};
#endif /* XX_TEXT_INPUT_V3_CONTENT_HINT_ENUM */

#ifndef XX_TEXT_INPUT_V3_CONTENT_PURPOSE_ENUM
#define XX_TEXT_INPUT_V3_CONTENT_PURPOSE_ENUM
/**
 * @ingroup iface_xx_text_input_v3
 * content purpose
 *
 * The content purpose allows to specify the primary purpose of a text
 * input.
 *
 * This allows an input method to show special purpose input panels with
 * extra characters or to disallow some characters.
 */
enum xx_text_input_v3_content_purpose {
	/**
	 * default input, allowing all characters
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL = 0,
	/**
	 * allow only alphabetic characters
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_ALPHA = 1,
	/**
	 * allow only digits
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_DIGITS = 2,
	/**
	 * input a number (including decimal separator and sign)
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_NUMBER = 3,
	/**
	 * input a phone number
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_PHONE = 4,
	/**
	 * input an URL
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_URL = 5,
	/**
	 * input an email address
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_EMAIL = 6,
	/**
	 * input a name of a person
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_NAME = 7,
	/**
	 * input a password (combine with sensitive_data hint)
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_PASSWORD = 8,
	/**
	 * input is a numeric password (combine with sensitive_data hint)
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_PIN = 9,
	/**
	 * input a date
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_DATE = 10,
	/**
	 * input a time
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_TIME = 11,
	/**
	 * input a date and time
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_DATETIME = 12,
	/**
	 * input for a terminal
	 */
	XX_TEXT_INPUT_V3_CONTENT_PURPOSE_TERMINAL = 13,
};
#endif /* XX_TEXT_INPUT_V3_CONTENT_PURPOSE_ENUM */

#ifndef XX_TEXT_INPUT_V3_ACTION_ENUM
#define XX_TEXT_INPUT_V3_ACTION_ENUM
/**
 * @ingroup iface_xx_text_input_v3
 * action
 *
 * A possible action to perform on a text input.
 */
enum xx_text_input_v3_action {
	/**
	 * no action
	 *
	 * This enum value exists only to provide a default to make
	 * double-buffering implementation easier. It should not be used
	 * explicitly.
	 */
	XX_TEXT_INPUT_V3_ACTION_NONE = 1,
	/**
	 * trigger appropriate action for the completion of editing
	 *
	 * This should be triggered when the user is done with editing
	 * the field and wants to move on. For example, the query was typed
	 * and the user wants the search result. Or the name was entered
	 * and the address needs to be typed next.
	 *
	 * The action to perform depends on the application, and should
	 * match the value of the current content_purpose.
	 *
	 * All clients SHOULD implement this action. Without it, on-screen
	 * keyboards don't work as expected.
	 */
	XX_TEXT_INPUT_V3_ACTION_FINISH = 0,
};
#endif /* XX_TEXT_INPUT_V3_ACTION_ENUM */

#ifndef XX_TEXT_INPUT_V3_SUPPORTED_FEATURES_ENUM
#define XX_TEXT_INPUT_V3_SUPPORTED_FEATURES_ENUM
/**
 * @ingroup iface_xx_text_input_v3
 * possible supported features
 *
 * Client functionality over the baseline that isn't indicated implicitly.
 *
 * This does not include events coming with .enable: when the input method receives such an event, it is clear the text input supports it, e.g. content_type, available_actions.
 *
 * Baseline functionality like commit_string, set_preedit_string must always be supported for the protocol to be useful.
 *
 * The flags match text-input protocol versions, but should be kept general enough to support other protocols.
 */
enum xx_text_input_v3_supported_features {
	/**
	 * no extra functionality supported
	 */
	XX_TEXT_INPUT_V3_SUPPORTED_FEATURES_NONE = 0x0,
	/**
	 * the move_cursor request
	 */
	XX_TEXT_INPUT_V3_SUPPORTED_FEATURES_MOVE_CURSOR = 0x1,
};
#endif /* XX_TEXT_INPUT_V3_SUPPORTED_FEATURES_ENUM */

#ifdef  __cplusplus
}
#endif

#endif
