@@ -61,8 +61,8 @@ impl Default for KeyMappingEntries {
6161
6262#[ derive( Debug , Clone ) ]
6363struct Mapping {
64- up : [ KeyMappingEntries ; NUMBER_OF_KEYS ] ,
65- down : [ KeyMappingEntries ; NUMBER_OF_KEYS ] ,
64+ key_up : [ KeyMappingEntries ; NUMBER_OF_KEYS ] ,
65+ key_down : [ KeyMappingEntries ; NUMBER_OF_KEYS ] ,
6666 pointer_move : KeyMappingEntries ,
6767 mouse_scroll : KeyMappingEntries ,
6868}
@@ -91,26 +91,26 @@ macro_rules! entry {
9191macro_rules! mapping {
9292 //[$(<action=$action:expr; message=$key:expr; $(modifiers=[$($m:ident),* $(,)?];)?>)*] => {{
9393 [ $( $entry: expr) ,* $( , ) ?] => { {
94- let mut up = KeyMappingEntries :: key_array( ) ;
95- let mut down = KeyMappingEntries :: key_array( ) ;
94+ let mut key_up = KeyMappingEntries :: key_array( ) ;
95+ let mut key_down = KeyMappingEntries :: key_array( ) ;
9696 let mut pointer_move: KeyMappingEntries = Default :: default ( ) ;
9797 let mut mouse_scroll: KeyMappingEntries = Default :: default ( ) ;
9898 $(
9999 let arr = match $entry. trigger {
100- InputMapperMessage :: KeyDown ( key) => & mut down [ key as usize ] ,
101- InputMapperMessage :: KeyUp ( key) => & mut up [ key as usize ] ,
100+ InputMapperMessage :: KeyDown ( key) => & mut key_down [ key as usize ] ,
101+ InputMapperMessage :: KeyUp ( key) => & mut key_up [ key as usize ] ,
102102 InputMapperMessage :: PointerMove => & mut pointer_move,
103103 InputMapperMessage :: MouseScroll => & mut mouse_scroll,
104104 } ;
105105 arr. push( $entry) ;
106106 ) *
107- ( up , down , pointer_move, mouse_scroll)
107+ ( key_up , key_down , pointer_move, mouse_scroll)
108108 } } ;
109109}
110110
111111impl Default for Mapping {
112112 fn default ( ) -> Self {
113- let ( up , down , pointer_move , mouse_scroll ) = mapping ! [
113+ let mappings = mapping ! [
114114 entry! { action=DocumentMessage :: PasteLayers , key_down=KeyV , modifiers=[ KeyControl ] } ,
115115 entry! { action=DocumentMessage :: EnableSnapping , key_down=KeyShift } ,
116116 entry! { action=DocumentMessage :: DisableSnapping , key_up=KeyShift } ,
@@ -238,16 +238,31 @@ impl Default for Mapping {
238238 entry! { action=GlobalMessage :: LogDebug , key_down=Key2 } ,
239239 entry! { action=GlobalMessage :: LogTrace , key_down=Key3 } ,
240240 ] ;
241- Self { up, down, pointer_move, mouse_scroll }
241+
242+ let ( mut key_up, mut key_down, mut pointer_move, mut mouse_scroll) = mappings;
243+ let sort = |list : & mut KeyMappingEntries | list. 0 . sort_by ( |u, v| v. modifiers . ones ( ) . cmp ( & u. modifiers . ones ( ) ) ) ;
244+ for list in [ & mut key_up, & mut key_down] {
245+ for sublist in list {
246+ sort ( sublist) ;
247+ }
248+ }
249+ sort ( & mut pointer_move) ;
250+ sort ( & mut mouse_scroll) ;
251+ Self {
252+ key_up,
253+ key_down,
254+ pointer_move,
255+ mouse_scroll,
256+ }
242257 }
243258}
244259
245260impl Mapping {
246261 fn match_message ( & self , message : InputMapperMessage , keys : & KeyStates , actions : ActionList ) -> Option < Message > {
247262 use InputMapperMessage :: * ;
248263 let list = match message {
249- KeyDown ( key) => & self . down [ key as usize ] ,
250- KeyUp ( key) => & self . up [ key as usize ] ,
264+ KeyDown ( key) => & self . key_down [ key as usize ] ,
265+ KeyUp ( key) => & self . key_up [ key as usize ] ,
251266 PointerMove => & self . pointer_move ,
252267 MouseScroll => & self . mouse_scroll ,
253268 } ;
0 commit comments