On 29/01/16 21:43, Bill Spitzak wrote: > > > On Wed, Jan 27, 2016 at 11:52 PM, Jan Arne Petersen <[email protected] > <mailto:[email protected]>> wrote: > > > + <event name="preedit_string"> > + <description summary="pre-edit"> > + Notify when a new composing text (pre-edit) should be set > around the > + current cursor position. Any previously set composing text > should > + be removed. > + > + The commit text can be used to replace the preedit text on reset > + (for example on unfocus). > + > + The text input should also handle all preedit_style and > preedit_cursor > + events occurring directly before preedit_string. > + </description> > + <arg name="serial" type="uint" summary="serial of the latest > known text input state"/> > + <arg name="text" type="string"/> > + <arg name="commit" type="string"/> > + </event> > + <enum name="preedit_style"> > + <entry name="default" value="0" summary="default style for > composing text"/> > + <entry name="none" value="1" summary="style should be the > same as in non-composing text"/> > + <entry name="active" value="2"/> > + <entry name="inactive" value="3"/> > + <entry name="highlight" value="4"/> > + <entry name="underline" value="5"/> > + <entry name="selection" value="6"/> > + <entry name="incorrect" value="7"/> > + </enum> > + <event name="preedit_styling"> > + <description summary="pre-edit styling"> > + Sets styling information on composing text. The style is > applied for > + length bytes from index relative to the beginning of the > composing > + text (as byte offset). Multiple styles can > + be applied to a composing text by sending multiple > preedit_styling > + events. > + > + This event is handled as part of a following preedit_string > event. > + </description> > + <arg name="index" type="uint"/> > + <arg name="length" type="uint"/> > + <arg name="style" type="uint" enum="preedit_style"/> > + </event> > + <event name="preedit_cursor"> > + <description summary="pre-edit cursor"> > + Sets the cursor position inside the composing text (as byte > + offset) relative to the start of the composing text. When > index is a > + negative number no cursor is shown. > + > + This event is handled as part of a following preedit_string > event. > + </description> > + <arg name="index" type="int"/> > + </event> > + <event name="commit_string"> > + <description summary="commit"> > + Notify when text should be inserted into the editor widget. > The text to > + commit could be either just a single character after a key > press or the > + result of some composing (pre-edit). It could be also an > empty text > + when some text should be removed (see > delete_surrounding_text) or when > + the input cursor should be moved (see cursor_position). > + > + Any previously set composing text should be removed. > + </description> > + <arg name="serial" type="uint" summary="serial of the latest > known text input state"/> > + <arg name="text" type="string"/> > + </event> > + <event name="cursor_position"> > + <description summary="set cursor to new position"> > + Notify when the cursor or anchor position should be modified. > + > + This event should be handled as part of a following > commit_string > + event. > + </description> > + <arg name="index" type="int"/> > + <arg name="anchor" type="int"/> > + </event> > + <event name="delete_surrounding_text"> > + <description summary="delete surrounding text"> > + Notify when the text around the current cursor position > should be > + deleted. > + > + Index is relative to the current cursor (in bytes). > + Length is the length of deleted text (in bytes). > + > + This event should be handled as part of a following > commit_string > + event. > + </description> > + <arg name="index" type="int"/> > + <arg name="length" type="uint"/> > + </event> > > > I feel there are a lot of reasons to combine the preview and commit > strings. An actual commit would be done by setting the preview and then > sending a commit event. > > - The preview has to be able to delete surrounding text, so that it can > preview a merge between typed text and surrounding characters. > > - Conversely, to match how most text input works in software now, you > need to preserve the "incorrect" indicator in the committed text. This > is so the word remains marked as incorrect. There also has to be a way > for the client to return to that text and tell the input method to > continue, so the spelling correction code in the input method can be > reused (not just to make the client's work easier, but for the far more > important reason of making the ui consistent!). > > These remove the differences between commit and preview, so it makes > sense to merge them. > > Besides allowing the user to return to a misspelled word, it may make > sense to return to a preedit. I'm not sure as I have no experience with > Asian input methods. But it does seem possible.
Sorry no toolkit supports that. While the current proposed protocol can be implemented with current Qt, Gtk+ and EFL. Androids input method API is also quite similar to what is proposed here. > So some possible modifications: > > - Make delete surrounding text part of preview. Client has to remember > the deleted text so it can restore it for the next preview (which may > delete less). Delete surrounding text also works for pre-edit, i fixed the documentation. > - Change commit_string to just a commit event that says the previous > preview string is the final result. This allows the commit to include > highlighting. > > - Possibly allow the highlight regions to be larger than the preview > text. This could allow a spelling corrector to mark existing text as > part of the incorrect word. The alternative is that the spelling > corrector would have to delete the word, and insert it again with the > incorrect highlighting. > > - Add a request to return to composing without a keystroke. The cursor > must be inside a previous commit or preview string. The idea is that the > user can later click on the misspelled words and somehow get the > spelling corrector to reappear. Also maybe it would allow returning to > other partially-composed strings. See above. Thanks, Jan Arne -- Jan Arne Petersen | [email protected] | Senior Software Engineer KDAB (Deutschland) GmbH&Co KG, a KDAB Group company Tel: +49-30-521325470 KDAB - The Qt Experts _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
