diff options
Diffstat (limited to 'src/remapper.rs')
-rw-r--r-- | src/remapper.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/remapper.rs b/src/remapper.rs index 4292c53..b33c0e2 100644 --- a/src/remapper.rs +++ b/src/remapper.rs @@ -156,15 +156,21 @@ impl InputMapper { } } + let mut keys_minus_remapped = keys.clone(); + // Second pass to apply Remap items for map in &self.mappings { if let Mapping::Remap { input, output } = map { - if input.is_subset(&keys) { + if input.is_subset(&keys_minus_remapped) { for i in input { keys.remove(i); + keys_minus_remapped.remove(i); } for o in output { keys.insert(o.clone()); + // Outputs that apply are not visible as + // inputs for later remap rules + keys_minus_remapped.remove(o); } } } |