summaryrefslogtreecommitdiff
path: root/src/remapper.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/remapper.rs')
-rw-r--r--src/remapper.rs8
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);
}
}
}