Get desktop application:
View/edit binary Protocol Buffers messages
Annotation against a candidate.
Used in:
,Annotation prepended to the value.
Annotation appended to the value.
Type of the candidate such as [HALF][KATAKANA], [GREEK], [Black square], etc...
Shortcut key to select this candidate.
Set to true if this candidate can be deleted from history.
Description of the candidate for A11y support. One of the example usage of this field is android:contentDescription in Android.
Note there is another ApplicationInfo inside RendererCommand. Since Input is not using nested message, define ApplicationInfo here.
Used in:
CandidateAttribute indicates how the candidate was generated.
Used in:
"ふいんき"→"雰囲気"
"やんしょん"(with 12-key)→"マンション"
Used in:
This value represents the focused position of the next |candidates|. If the |candidates| is a part of the whole candidate words (as a result of paging), this value indicates the position from the beginning of that part. (ex. where |candidates| contains 10th to 18th candidates, focused_index=0 means the 10th candidate, but not 1st candidate. The existense of |focused_index| does not represents whether this candidate list is a 'suggestion' or not. |category| represents it.
Category of the candidates.
Used in:
,TODO(komatsu): Use CandidateList. When has_focused_index() is true, this message contains predicted and normally converted candidates. Otherwise, when the field is not set, this message contains a 'suggestion'.
The size of the total candidates in this candidate list. The value does not include the size of subcandidate lists. Note, the next repeated-Candidate=3 may not contain all candidates. all_candidates contains the values of subcandidate lists.
The position on the composition in character counted by Util::CharsLen. The number represents the left edge of the candidate window. For example, if the composition is "あいう" and the cursor is the position is between "あ" and "い" (e.g. "あ|いう"), the number should be 1. Note, Util::CharsLen does not take care of IVS or combining character so much. Thus CharsLen's behavior on those characters might be changed.
Nested candidates aka cascading window.
Usages of candidates.
TODO(komatsu): Use CandidateList. Category of the candidates
Information to be used for rendering.
Footer of the GUI window.
The number of candidates per page.
TODO(komatsu): Use CandidateList.
Used in:
The first index should be zero and index numbers should increase by one.
Unique number specifing the candidate.
The direction of candidates in the window. This is just a suggestion from the server and client does not have to follow.
Used in:
Used in:
Unique number specifying the candidate. This may be a negative value.
The first index should be zero and index numbers should increase by one.
Reading of the value. The value is only used when the key is different from the input composition (e.g. suggestion/prediction).
Converted value. (e.g. Kanji value).
Attributes of this candidate. Can set multiple attributes.
The number of segments for logging. If the candidate is "今日は|晴れ", the number of segments is 2.
Debug log for this candidate word.
Clients' capability. Users cannot modify this. The server has to obey this capability.
Used in:
Bit fields to notify what the client can do.
Used in:
Can delete preceding text which is adjacent to preedit.
Category describes the attribute of the words.
Used in:
, ,Used in:
,This message is used for unittest.
This enum is used by SessionCommand::input_mode with CHANGE_INPUT_MODE and Output::mode.
Used in:
, , ,Used in:
Former part of surrounding text.
Latter part of surrounding text.
If this is true, suggestion feature is disabled regardless the configuration. If this is false, suggestion feature is followed by the user's configuration. If you want to omit interim suggestions during the key typing, you might want to use request_suggestion.
Type of the input field being focused.
An unique revision ID to specify one specific typing session. A client can use arbitrary value for this field. The converter is expected to clear its internal history segments whenever this value is changed. A client should use the same revision ID whenever the converter should keep it internal history segments. In order to avoid unexpected history learnings, a client should update the revision whenever the input focus is changed.
Repeated fields to be used for experimental features.
Input field type. The types are based on the input types defined in HTML5. http://dev.w3.org/html5/spec/Overview.html#attr-input-type Other types are to be added later.
Used in:
,No restrictions nor special functions. The IME operates as usual.
Password field. Text is hidden after input. For Android, In order to make the last character visible to the user, the IME must not hold more than 2 characters in preedit.
Telephone number
Number
Next ID: 108 Bundles together some Android experiment flags so that they can be easily retrieved throughout the native code. These flags are generally specific to the decoder, and are made available when the decoder is initialized.
Used in:
Bitmap of enabled variation character types.
Enables final results reranking against literal results. If zero, the previous implementation is used.
Promote TC/Literal if w * tc_reranker_score + (1.0 - w) lm_diff > 0.0.
Runs Literal-at-least second when original_tc_score + w * tc_reranker_score > 0.0. otherwise, runs literal-on-top.
Uses the typing correction in user history predictor. The size specifies the maximum number of typing corrections used for query lookup. When zero, typing_correction is not used.
Changes the size of history with character coverage.
Parameter for space-insertion for English compounds value 0: no insertion. Candidates will be like this. - "Google" - "GOOGLE" - "google" value 1: expand for all English candidates This mode adds space-prefixed candidates for three style, like this. - "Google" - " Google" - "GOOGLE" - " GOOGLE" - "google" - " google"
Offset to promote Katakana candidates in rewriter. The promotion will be disabled if the value is negative.
Cost offset for handwriting conversion candidate. default_value: 10*log(500)
Apply inner segment boundary information to the single segment candidate.
Threshold for suffix NWP transition cost. If the transition cost is greater than this value, the candidate will be filtered. The candidate will not be filtered if this value is zero.
Control implementation is used. For example, - Kanji + Katakana will not be filtered. - If cost(prefix) > cost(original_entry), the candidate will be filtered. - The reading of the target candidate should be in the dictionary. - ,etc
In addition to the default filtering, filter entry if the character script type does not change from the prefix.
Filter all bigram candidates.
Standardized variation sequences for Japanese. https://unicode.org/Public/UNIDATA/StandardizedVariants.txt It specifies to use SVS characters instead of CJK compatibility ideographs for Japanese.
This message contains which characters are to be deleted by client. E.g. if current composition and surrounding text are "この感じは[漢字は]" ("漢字は" is the composition) and we send DeletionRange with offset == -3 and length == 3, then they will be rendered like: "この[漢字は]"
Used in:
Offset of start of the deletion range. Right now, - Only nagative value is expected. In this case, the offset is counted from the beginning of the composition (see the message comment right above). - Positive or 0 value is not sent. But not forbidden. Though its expectation is not decided yet, the client implementation should be prepared (at least, don't crash).
Length of the range. Right now offset==abs(length) is expected. The expectation where the above condition doesn't meet is not defined yet. This may be defined in future (when positive offset becomes supported?).
DisplayType is a hint to UI renderers describing how the words are displayed.
Used in:
,Message representing the footer part of the candidate window.
Used in:
Message shown like a status bar.
Whether index (e.g. 10/120) is visible or not.
Whether the logo image is visible or not.
Message modestly shown. It is used for displaying the version on dev-channel now.
Additional information to a candidate word. This message is used for describing a word usage for instance.
Used in:
Unique number specifying the information.
Title string of the information. For usage, this value is probably equal to Candidate::value or its canonicalized value.
The content of the information. For usage, this value actually describes how to use the word.
The IDs of candidates which connect with the information.
Used in:
Category of the infolist.
Information to be used for rendering.
How long rendere needs to wait before the infolist is displayed. the default setting is 500 msec.
Used in:
Session ID created by CREATE_SESSION.
Key combinations used for SEND_KEY or TEST_SEND_KEY.
Command sent to the session layer used with SEND_COMMAND.
Input config
Context data
Client capability
Application information, like process id. Server may be able to change the behavior by seeing the the program name.
Client request
A flag to control if the server should return suggest-results or not. If this is set to false, regardless of other configurations, the server won't return suggestion results. This is set to true by default. Note that even if this flag is set to false, when a suggestion is shown in the previous phase, it is possible from the client to submit it. This works only for suggestions for the key insertion, but not for others commands, such as predictions or conversions. This flag is used for the performance improvement in terms of the latency. If you want to suppress the suggestions for the UX improment, you may want to use suppress_suggestion in the Context message.
Used in:
Check only if the key event will be consumed. This command is for TSF on Windows. You do not need to use this command, if it is not necessary.
Evaluate the command specified by SessionCommand. The output format should be the same with an output of a SEND_KEY command.
Config accessors.
Set client's request
sync dictionary/history data to local file
shutdowon server safely
reload mutable data (like config, user-dic, history)
realod mutable data and wait for finish Note: Reloading of user dictionary data is async so that it will not block the typing. This command wait for the reloader.
clear user history data
clear user prediction data
clear unused prediction
clean up sessions shutdwon if session is empty and mozc_server is launched with timeout mode
no operation can be used for pinging the server
Send a command for user dictionary session.
Send an engine_reload_request (ID: 15) to reload the engine.
Sends reload supplemental model
Number of commands. When new command is added, the command should use below number and NUM_OF_COMMANDS should be incremented.
Used in:
TouchEvent contains source_id and stroke. Touch_events contain all key touch event. Statistical information are collected for each source_id by SessionUsageObserver.
Used in:
source_id specifies the user action such as "X button pressed". It must be unique within the same keyboard_name, which is set in Request message.
Used in:
x, y potision: keyboard left-top is (0, 0), right-bottom is (1, 1).
timestamp (in ms) is set to zero when the touch event starts.
Used in:
,Printable key in UCS4. If key_code is empty, key_string is used as a raw input.
Going to be obsolete.
Unprintable key listed above.
ModifierKeys
String used for preedit. Kana characters and strings typed from a software keyboard are supposed to be stored here. If key_code is also set, key_code is treated as the raw input and key_string is treated as the composition input. For example, to set Kana value, when key_string is "ち", key_code should be 'a' (97). If key_code is empty, key_string is also treated as the raw input.
Input mode For histrical reasons, this field expects a temporary conversion mode rather than comeback input mode.
Probable key events Even if you can fill this field, don't omit Input.key_code and so on because preedit string is composed based on them.
IME on/off mode You can use this field to change the IME on/off mode indirectly without sending SpecialKey:ON or SpecialKey:OFF events. If the internal ImeContext::State is DIRECT and this field is true, the converter will change the state to PRECONPOSITION and then handles this key event. If the internal ImeContext::State is not DIRECT and this field is false, the converter will change the state to DIRECT and then handles this key event. Implementation note: We need both |mode| and |activated| to support indirect IME off, where |mode| should contain the next mode. If this field is not set, the server will act as if indirect on/off was not supported.
Timestamp of this key event in millisecond.
Used in:
Follow the current input mode (default).
Do not transliterate key_string and use it as-is.
Immediately output key_string on the precomposition mode. Same with AS_IS on the preedit mode.
Used in:
,Probable key event, mainly for touch screen. User's input has ambiguity (e.g. the touch position is merginal) so this message expresses the probable event.
Used in:
message ID is the same as Input message.
Unprintable key listed above.
ModifierKeys
Sum of probabilities must be lesser or equal than 1. 0<= probability <= 1
LINT.IfChange
Used in:
,On Windows, SpecialKey::On and SpecialKey::OFF are obsolete. Use TURN_ON_IME session command should be used instead. See b/10216365. On other platforms, especially on Mac, please note that client/client.cc still relies on SpecialKey::On for session playback. We need to fix b/10250883 first. TODO(team): Unsupport SpecialKey::On and SpecialKey::OFF.
Not DELETE because DELETE is reserved in MSVC.
GUI label is "Delete".
VK_DBE_HIRAGANA(Win), kVK_JIS_Kana(Mac) The "Katakana Hiragana Romaji" key (w/o modifiers) returns this key code.
GUI label is "Hiragana".
alphanumeric VK_DBE_ALPHANUMERIC(Win), kVK_JIS_Eisu(Mac)
Numpad [*]
Numpad [+]
Numpad [enter]
Numpad [-]
Numpad [.]
Numpad [/]
Numpad [=]
Meta key event representing any text input.
GUI label is "Hankaku/Zenkaku".
The "Katakana Hiragana Romaji" key with Shift returns this key code.
VK_DBE_KATAKANA(Win)
Unsupported keys (e.g. PrtSc, Pause) fall back to UNDEFINED_KEY.
Numpad [,]
Numpad [5] without NUMLOCK
Left key on virtual (software) keyboard
Right key on virtual (software) keyboard
Enter key on virtual (software) keyboard
Up key on virtual (software) keyboard
Down key on virtual (software) keyboard
Message used by ProtoXDB as "mozc_commands".
Next ID: 27
Used in:
,This variable is going to be obsolete. Please use status(13) instead.
when URL is non empty, UI can open the page with a browser, after finishing the all rendering part. We are using this feature for bug-report system.
Output config
The current IME status.
All flatten candidate words stored in 1D array. This value is filled only when the content is changed.
Range of characters to be deleted by client.
For debug. Candidate words removed throuth the conversion process.
Candidate words stored in 1D array. The field should be filled without using any personal data.
Callback request to the client.
Used in:
Callback command to be sent from the client to the server. The optional values such as id and composition_mode can be modified or added by the client.
Callback command should be sent after this delay.
ErrorCode: if SessionHandler::EvalCommand() returns false, return output with error_code = SESSION_FAILURE;
Used in:
PreeditMethod: this is the default input mode of the session. If the user's config is "kana-input", it returns KANA. Only CreateSession response will have this field.
Used in:
if launch_tool_mode is set, MozcTool is supposed to be launched by client.
Used in:
no need to launch tool
Used in:
Preedit represents a composition data, which is rendered on the host application by the ime client. On Japanese IME, the both Preedit and Conversion statuses are represented by this message.
Used in:
,The position of the first segment whose annotation is 'HIGHLIGHT'. Not set if there are no such segments.
This flag is set to true if the character at the cursor position is in toggleable state. For example, when the table is TOGGLE_FLICK_TO_HIRAGANA and key event '1' is received repeatedly, the preedit toggles like あ -> い -> う -> .... This flag is true during this cycle. This state is reset when user types another key or SessionCommand::STOP_KEY_TOGGLING is received.
The string data of Preedit is separated into Segment messages presenting the ime server's status. On Preedit status of Japanese IME, there are up to three segments; left side chars of cursor, forcused char, right side chars of cursor. On Conversion status of Japanese IME, the messages literally represent the segments of the conversion.
Used in:
The length of value in characters. This is NOT a number in bytes or logical character units. So, the length of "abc" and "あいう" should be 3, "ヴ" should be 1 and "ヴ" and "う゛" should be 2.
Source of the value. It is almost always the reading of the value.
Used in:
set visibility if visible is false, the content of output is basically ignored.
Preedit rectangle
Application information Mozc UI is attaching
Used in:
used in Windows: WHND of the message-only window:
used in Windows: HWND of the window where composition is displayed.
Specifies which IM Framework is used in the client.
used in Windows:
ShowUIDefault
used in Windows: Specifies the target position in composition window.
A string representation of PangoFontDescription http://developer.gnome.org/pango/stable/pango-Fonts.html#pango-font-description-from-string This field is not application specific information but temporaly locate here. TODO(nona): Make new message if necessary.
used in Windows:
Represents IM Framework used in the client. Currently only Windows IM frameworks are supported.
Used in:
Default. For backward compatibility.
used in Windows: Indicates if a UI element is expected to be displayed or not. Note that |RendererCommand::visible| should be prior to these flags, that is, you should hide all UI elements if |RendererCommand::visible| is false regardless of the visibility specified in this field.
An equivalent to IMECHARPOSITION in IMM32. (For Windows only) TODO(yukawa): make a common candidate form format for all platforms.
Used in:
A quick solution for vertical writing support. Strictly speaking, this is not part of IMECHARPOSITION in IMM32.
Used in:
No operation
Update the current window
shutdown renderer
Visual information about mode indicator.
Used in:
Used in:
Used in:
,Clients' request to the server. Users cannot modify this. In the future each request may be able to be overwritten by Config. The server does not have to obey this request. Next ID: 24
Used in:
,Enable zero query suggestion.
true for android
Conversion's candidate includes suggestion, prediction and conversion.
true for android
Use special Romanji table.
TWELVE_KEYS_TO_HIRAGANA for android.
Keyboard name for touch devices. For example, "TWELVE_KEY_TOGGLE_KANA", "QWERTY_KANA_NUMBER". It is used to analyze touch event usage stats.
Enables Composer's input mode auto updating by using surrounding text. For example, when a composition string is "ad", a carret is at the end, and a user selects HIRAGANA mode, if the user moves the carret to between "a" and "d" the mode will be automatically switch to ASCII (temporarily). See details in the Composer::UpdateInputMode.
Enables Kana-modifier-insensitive conversion as follows: 1) Voiced/Semi-voiced kana will be hit by non-modified kana. e.g.) "ば" and "ぱ" will be hit by key "は". 2) Geminate consonant "っ" will be hit by non-modified kana "つ". 3) Palatalized kana will be hit by non-modified kana. e.g.) "ゃ" will be hit by key "や". Here is an example of the search: "学校" ("がっこう") will be hit by "かつこう".
Enables Auto partial suggestion (prefix candidates). For Auto partial suggestion, we can see candidates that match the prefix of the input reading. If we commit that candidate, we will show suggestions for remaining part of key. Note: This feature can be enabled only for mobile due to UX design.
By default, Emoji rewriter works on conversion mode only.
Page size of the candidate list.
The maximum limit of the candidates size. If not set, converter doesn't limit the size. NOTE: Each segment has at least one candidate and meta candidates even if this value is set to 0.
Experimentally changes the decoder's behavior. This flag is usually populated through the phenotype flags.
Fills incognito_candidate_words filed of output.
Enables a11y support for candidates. If this field is set to true, a11y description is set to each candidate.
Characters in the union of this list of groups can be contained in candidates. This feature is distinct from user preference. Do not make these option user selectable.
Whether the request is from handwriting. Candidates can be optimized differently for handwriting. For example, we support 混ぜ書き conversion ("かん字" → "漢字") for handwriting.
Whether the conversion is performed in incognito mode. In incognito mode, the conversion is performed without using user history and user dictionary. When any of this value and Config::incognito_mode are true, incognito mode is enabled. Clients needs to check ConversionRequest::incognito_mode() instead of this value directly, as the incognito mode can be set in other ways.
Additional Character Group represents certain group of characters, that can be additionaly requested from the client side, based on font-availability information. This enum is not intended to be used for user preference. 'Additional' cases can change as time advances. For example, when KANA_SUPPLEMENT_6_0 becomes enough available among environments, this option becomes default and the case will be removed. WARNING: Although cases are mutually exclusive now, they are not necessarily mutually exclusive. However, the current implementation in NormalizationRewriter assumes they are mutually exclusive. LINT.IfChange Next ID: 14
Used in:
Do not use this case. This case is reserved for future usage. Because 0th element in enum is used as default value, in order to prevend having unexpected additional group, this case represents empty set of characters.
Additional Hiragana, Katakana, and Hentaigana. It only contains KATAKANA / HIRAGANA LETTER ARCHAIC YE (U+1B000 and U+1B001) since Unicode 6.0. Some fonts including M+ fonts only support this letter.
It contains 285 Hentaigana characters supported in KANA_SUPPLEMENT and KANA_EXTENDED_A (U+1B002 ~ U+1B11E) since Unicode 10.0.
It contains four archaic hiraganas/katakanas (U+1B11F ~ U+1B122) since Unicode 14.0.
Additional Emoji Emoji in enum can be removed and become default several years passed after the introduction. Emoji 12.1, released October 2019
Emoji 13.0, released March 2020
Emoji 13.1, released September 2020
Emoji 14.0, released September 2021
Emoji 15.0, released September 2022
Emoji 15.1, released September 2023
Emoji 16.0, released September 2024
Additional Hieroglyphs (U+13000 ~ U+1342E) Unicode 5.2, released October 2009
IVS characters in Adobe-Japan1 (U+E0100 ~ U+E010E)
Controls the behavior when a user types the left/right key at the edge of the preedit string (in more precise, the left key at the beginning of the preedit string, or the right key at the end).
Used in:
This is the default behavior. The cursor movement at the edge will make nothing, i.e., keeping the current cursor position (at the edge), consume the key event.
This is the behavior, especially designed for alphabet keyboards on mobile devices. Assuming the following text: XXXXabcde|YYYYY where XXXX is preceding text, abcde is composing text, YYYYY is following text and '|' is the caret, when a user sends "RIGHT" cursor key, we'd like to commit the abcde and move the caret to right. So the user will get: XXXXabcdeY|YYYY Here, what we need is committing the "abcde" with the appropriate caret position. (Note that we need to handle the left cursor key, too). Also, we should *NOT* consume the key, so that the key event will be handled appropriately by the target application.
Controls the behavior of language aware input. Language aware input guesses the actual language regardless the input mode. For example, if user type "てst" it will be treated as "test".
Used in:
Performs the default behavior considering the platform and channel.
Does not perform this functionarity.
Adds a language aware candidate to the suggestion.
For emoji rewriter, it is necessary to control when the rewriter runs based on the clients. The following bit set is sync'ed to RewriterInterface::CapabilityType (see rewriter_interface.h, too), so that clients can fill the value.
CONVERSION | PREDICTION | SUGGESTION.
Used in:
The first input is treated as a space, double input is treated as a conversion. If a character is input after the first input, the composition will remain. For example, "ab<space>dc" becomes "ab dc" as a single composition.
The first input is treated as a space, double input is treated as a conversion. If a character is input after the first input, the previous composition will be committed. For example, "ab<space>dc" results "ab " as a committed string and "dc" as a composition.
Commit the composition and a space.
Next ID: 51
Used in:
Do not use special table. Romanji table is selected based on Config.
Use special table for 12keys (to hiragana).
This is a temporary romaji table that is to be used instead of the current 12keys-to-hiragana table. TODO(noriyukit): Replace TWELVE_KEYS_TO_HIRAGANA by this.
Use special table for 12keys (to half-width ascii).
Use special table for flick (to hiragana).
This is a temporary romaji table that is to be used instead of the current flick-to-hiragana table. TODO(noriyukit): Replace FLICK_TO_HIRAGANA by this.
Use special table for flick (to half-width ascii).
Use special table for flick (to alphabet).
Use special table for flick (to number).
Use special table for both toggle and flick (to hiragana).
This is a temporary romaji table that is to be used instead of the current toggle_flick_hiragana table. TODO(noriyukit): Replace TOGGLE_FLICK_HIRAGANA by this.
Use special table for both toggle and flick (to number).
Use special table for both toggle and flick (to alphabet).
Use special table for both toggle and flick (to half-width ascii).
Use special table for Qwerty (for Mobile) (to hiragana).
Use special table for Qwerty (for Mobile) (to half-width ascii).
Use special table for Godan (to hiragana).
Use special table for Godan (to half-width ascii).
Use special table for Notouch (to hiragana).
Use special table for Notouch (to half-width ascii).
Use special table for 50keys keyboard.
Result contains data to be submitted to the host application by the ime client.
Used in:
,The result of conversion.
Source of the value. It is almost always the reading of the value.
The caret position after the result submission. "0" means the end of the result, and a positive value means moving forward and a negative value backward. e.g.) "-s", where s is the length of value, means the caret position after the committing should be the beginning of the committed value.
Additional information propagated from the internal status.
Used in:
Detailed information of Result.
Used in:
`value` and `key` represents Segment.Candidate. If the candidante has functional values, they are stored as a sepalate ResultToken. e.g. A candidate of {value="今日は", content_value="今日"} results two ResultToken of {value="今日"} and {value="は"}.
`lid` and `rid` are copied from Segment.Candidate. -1 is used as a unknown POS. e.g. A candidate of {value="朝は", content_value="朝", lid=2, rid=3} results two ResultToken of {value="朝", lid=2, rid=-1} and {value="は", lid=-1, rid=3}.
Used in:
,Unique number specifying a candidate word. Note: This value is NOT an index of the candidate window or the candidate list. This value is a return value of CandidateWord::id().
This is used with SWITCH_INPUT_MODE, TURN_ON_IME and TURN_OFF_IME.
Text argument. This is used by CONVERT_REVERSE at this moment.
New cursor position in preedit. Used with MOVE_CURSOR.
Assumes that the entries are sorted by the probability. The most probable event should be at the top.
Used in:
Do nothing.
Revert the session, this is usually similar to type ESC several times.
Commit the session, this is usually similar to type Enter. SUBMIT session command is accepted in any status. Pre-condition: - Any states of IME are acceptable. Post-condition: - Preedit text becomes empty.
Select the specified candidate word by id. This command is usually used with mouse clicking.
Set the focus to the candidate by id. This is usually used with mouse dragging or selection of word usage dictionary. The difference from SELECT_CANDIDATE is that HIGHLIGHT_CANDIDATE does not close the candidate window while SELECT_CANDIDATE closes the candidate window.
Specify the input mode. This command should be used with composition_mode.
Return the current status such as composition mode, preedit method, etc.
This command is typically used for mobile IME's partial conversion, but currently it is on the way. This description is for current spec. This command requires that candidates exist. If there is a focused candidate (Conversion or Prediction state), the candidate matched with the given id in the first segment is submitted, even though the selected segment is not the first segment (Important thing is whether focused candidate exists or not. Focused index itself is ignored). This behavior should be updated because current cursor position and position of focused segment affects nothing. We should fix this non-intuitive behavior. Intuitive behavior might be submitting segments from first one to focused one (inclusive). If no focused candidate (Suggestion, including ZeroQuery suggestion), first (and only) segment's candidate of which id is equal to id field of Input message is submitted. This behavior should be fixed because current cursor position affects nothing. In future, the characters after the cursor should be kept as preedit. This command's pre- and post- conditions are differenct from SUBMIT command's. Following conditions will be kept after updating the behavior. Pre-condition: - There should be candidate. Post-condition: - No guarantee on preedit text. TODO(yamaguchi): Update corresponding implementation please.
Perform reverse conversion.
Perform Undo.
Reset convert history and revert current composition. This is usually used by moving cursor with mouse clicking.
Change cursor position in preedit.
Specify the input field type.
This command is used in only Android. Works UNDO or rewind HIRAGANA characters based on the state.
Commit the raw text of the composed string.
Call ConvertPrevPage session command to show the previous page of candidates.
Call ConvertNextPage session command to show the next page of candidates.
Make sure IME is turned on. Optionally you can also provide new input mode in |composition_mode| (but you must not set DIRECT to it). |composition_mode| is honored even when IME is already turned on.
Make sure IME is turned off. Optionally you can also provide new input mode in |composition_mode| (but you must not set DIRECT to it). If IME |composition_mode| is honored even when IME is already turned off.
Delete the candidate specified with |id = 2| from the user history.
Stops key toggling of the composer if its table is a toggle-supported layout (e.g., 12-key toggle flick.)
Update composition with |compoisition_events|. Unlike SEND_KEY command, this command completely replaces the composition rather than appending to the existing composition. The command will be used for supporting handwriting.
Used by UPDATE_COMPOSITION event
Used in:
Sum of probabilities must be lesser or equal than 1. 0<= probability <= 1
Used in:
,Whether IME is ON or OFF
Visible composition mode when IME is activated. This mode may come from a temporary composition mode. See |comeback_mode|. TODO(yukawa): Rename this field to "visible_mode".
True composition mode that is suitable for system global and permanent composition mode. When a temporary composition mode exists, |comeback_mode| can be different from |mode|. TODO(yukawa): Use more appropriate name.
Whether Undo operation is available. The client may enable/disable the Undo key based on this value.