@ -208,27 +208,25 @@ impl std::fmt::Display for Key {
}
impl Key {
pub fn to_input_ request( & self ) -> Option < InputRequest > {
use Input Request ::* ;
pub fn to_input_ operation( & self ) -> Option < InputOperation > {
use Input Operation ::* ;
use Key ::* ;
match self {
Backspace = > Some ( DeletePrev Char) ,
Delete = > Some ( DeleteNextChar ) ,
Tab = > Some ( InsertChar ( '\t' ) ) ,
Space = > Some ( InsertChar ( ' ' ) ) ,
Left = > Some ( GoToPrev Char) ,
CtrlLeft = > Some ( GoToPrev Word) ,
Right = > Some ( GoToNextChar ) ,
Backspace = > Some ( DeletePrev ious Characte r) ,
Delete = > Some ( DeleteNextChar acter ) ,
Tab = > Some ( InsertChar acter ( '\t' ) ) ,
Space = > Some ( InsertChar acter ( ' ' ) ) ,
Left = > Some ( GoToPrev ious Characte r) ,
CtrlLeft = > Some ( GoToPrev ious Word) ,
Right = > Some ( GoToNextChar acter ) ,
CtrlRight = > Some ( GoToNextWord ) ,
CtrlU = > Some ( DeleteLine ) ,
CtrlW = > Some ( DeletePrev Word) ,
CtrlW = > Some ( DeletePrev ious Word) ,
CtrlDelete = > Some ( DeleteNextWord ) ,
CtrlA = > Some ( GoToStart ) ,
CtrlE = > Some ( GoToEnd ) ,
Enter = > Some ( Submit ) ,
Esc = > Some ( Escape ) ,
key = > key . to_char ( ) . map ( InsertChar ) ,
key = > key . to_char ( ) . map ( InsertCharacter ) ,
}
}
@ -726,3 +724,40 @@ impl PartialOrd for Key {
Some ( self . cmp ( other ) )
}
}
#[ derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize) ]
pub enum InputOperation {
SetCursor ( usize ) ,
InsertCharacter ( char ) ,
GoToPreviousCharacter ,
GoToNextCharacter ,
GoToPreviousWord ,
GoToNextWord ,
GoToStart ,
GoToEnd ,
DeletePreviousCharacter ,
DeleteNextCharacter ,
DeletePreviousWord ,
DeleteNextWord ,
DeleteLine ,
}
impl Into < InputRequest > for InputOperation {
fn into ( self ) -> InputRequest {
match self {
Self ::SetCursor ( i ) = > InputRequest ::SetCursor ( i ) ,
Self ::InsertCharacter ( c ) = > InputRequest ::InsertChar ( c ) ,
Self ::GoToPreviousCharacter = > InputRequest ::GoToPrevChar ,
Self ::GoToNextCharacter = > InputRequest ::GoToNextChar ,
Self ::GoToPreviousWord = > InputRequest ::GoToPrevWord ,
Self ::GoToNextWord = > InputRequest ::GoToNextWord ,
Self ::GoToStart = > InputRequest ::GoToStart ,
Self ::GoToEnd = > InputRequest ::GoToEnd ,
Self ::DeletePreviousCharacter = > InputRequest ::DeletePrevChar ,
Self ::DeleteNextCharacter = > InputRequest ::DeleteNextChar ,
Self ::DeletePreviousWord = > InputRequest ::DeletePrevWord ,
Self ::DeleteNextWord = > InputRequest ::DeleteNextWord ,
Self ::DeleteLine = > InputRequest ::DeleteLine ,
}
}
}