Enum Ime
pub enum Ime {
Enabled,
Preedit(String, Option<(usize, usize)>),
Commit(String),
DeleteSurrounding {
before_bytes: usize,
after_bytes: usize,
},
Disabled,
}Expand description
Describes input method events.
The Ime events must be applied in the order they arrive.
This is also called a “composition event”.
Most keypresses using a latin-like keyboard layout simply generate a
WindowEvent::KeyboardInput. However, one couldn’t possibly have a key for every single
unicode character that the user might want to type
- so the solution operating systems employ is to allow the user to type these using a sequence of keypresses instead.
A prominent example of this is accents - many keyboard layouts allow you to first click the “accent key”, and then the character you want to apply the accent to. In this case, some platforms will generate the following event sequence:
// Press "`" key
Ime::Preedit("`", Some((0, 0)))
// Press "E" key
Ime::Preedit("", None) // Synthetic event generated by winit to clear preedit.
Ime::Commit("é")Additionally, certain input devices are configured to display a candidate box that allow the
user to select the desired character interactively. (To properly position this box, you must use
[Window::set_ime_cursor_area].)
An example of a keyboard layout which uses candidate boxes is pinyin. On a latin keyboard the following event sequence could be obtained:
// Press "A" key
Ime::Preedit("a", Some((1, 1)))
// Press "B" key
Ime::Preedit("a b", Some((3, 3)))
// Press left arrow key
Ime::Preedit("a b", Some((1, 1)))
// Press space key
Ime::Preedit("啊b", Some((3, 3)))
// Press space key
Ime::Preedit("", None) // Synthetic event generated by winit to clear preedit.
Ime::Commit("啊不")Variants§
Enabled
Notifies when the IME was enabled.
After getting this event you could receive Preedit and
Commit events. You should also start performing IME related requests
like [Window::set_ime_cursor_area].
Preedit(String, Option<(usize, usize)>)
Notifies when a new composing text should be set at the cursor position.
The value represents a pair of the preedit string and the cursor begin position and end
position. When it’s None, the cursor should be hidden. When String is an empty string
this indicates that preedit was cleared.
The cursor position is byte-wise indexed, assuming UTF-8.
Commit(String)
Notifies when text should be inserted into the editor widget.
Right before this event winit will send empty Self::Preedit event.
DeleteSurrounding
Delete text surrounding the cursor or selection.
This event does not affect either the pre-edit string. This means that the application must first remove the pre-edit, then execute the deletion, then insert the removed text back.
This event assumes text is stored in UTF-8.
Fields
Disabled
Trait Implementations§
§impl<'de> Deserialize<'de> for Ime
impl<'de> Deserialize<'de> for Ime
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Ime, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Ime, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl Serialize for Ime
impl Serialize for Ime
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for Ime
impl StructuralPartialEq for Ime
Auto Trait Implementations§
impl Freeze for Ime
impl RefUnwindSafe for Ime
impl Send for Ime
impl Sync for Ime
impl Unpin for Ime
impl UnwindSafe for Ime
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.