diff options
Diffstat (limited to 'src/cocoa_bridge.rs')
| -rw-r--r-- | src/cocoa_bridge.rs | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/src/cocoa_bridge.rs b/src/cocoa_bridge.rs index 11dc1c9..5f6cee7 100644 --- a/src/cocoa_bridge.rs +++ b/src/cocoa_bridge.rs @@ -224,8 +224,15 @@ mode <play><up> {      let map = map_group.maps.get(trigger);      let mode = map_group.modes.get(trigger); -    if let Some(ref mut in_mode) = state.in_mode { -        if let Some(mode) = map_group.modes.get(in_mode) { +    if let Some(in_mode) = state.in_mode.clone() { +        if let Some(mode) = map_group.modes.get(&in_mode) { +            // Deactivate mode by pressing current mode trigger +            if &in_mode[..] == trigger { +                state.in_mode = None; + +                return Some(KeyActionResult::new(ActionKind::Mode)) +            } +              if let Some(map) = mode.get(trigger) {                  return match map.kind {                      MapKind::Map => { | 
