diff options
| -rw-r--r-- | dome_key_map.h | 8 | ||||
| -rw-r--r-- | src/cocoa_bridge.rs | 29 | 
2 files changed, 29 insertions, 8 deletions
| diff --git a/dome_key_map.h b/dome_key_map.h index 88f7abf..4ee30c3 100644 --- a/dome_key_map.h +++ b/dome_key_map.h @@ -7,6 +7,12 @@  #include <stdbool.h>  typedef enum { +  ActionKind_Map, +  ActionKind_Command, +  ActionKind_Mode, +} ActionKind; + +typedef enum {    HeadphoneButton_Play,    HeadphoneButton_Up,    HeadphoneButton_Down, @@ -19,7 +25,7 @@ typedef enum {  typedef struct {    const char *action; -  const MapKind *kind; +  const ActionKind *kind;  } CKeyActionResult;  typedef struct { diff --git a/src/cocoa_bridge.rs b/src/cocoa_bridge.rs index 54f7904..1717b57 100644 --- a/src/cocoa_bridge.rs +++ b/src/cocoa_bridge.rs @@ -48,14 +48,21 @@ pub struct Trigger {  }  #[repr(C)] +pub enum ActionKind { +    Map, +    Command, +    Mode, +} + +#[repr(C)]  pub struct KeyActionResult<'a> {      pub action: Option<CString>, -    pub kind: MapKind, +    pub kind: ActionKind,      pub in_mode: Option<&'a [HeadphoneButton]>,  }  impl<'a> KeyActionResult<'a> { -    fn new(kind: MapKind) -> Self { +    fn new(kind: ActionKind) -> Self {          KeyActionResult {              action: None,              kind: kind, @@ -78,7 +85,7 @@ impl<'a> KeyActionResult<'a> {  #[repr(C)]  pub struct CKeyActionResult {      pub action: *const c_char, -    pub kind: *const MapKind, +    pub kind: *const ActionKind,  }  #[no_mangle] @@ -154,14 +161,14 @@ map <play><down> works!                  return match map.kind {                      MapKind::Map => {                          Some( -                            KeyActionResult::new(MapKind::Map) +                            KeyActionResult::new(ActionKind::Map)                                  .with_action(&map.action)                                  .in_mode(trigger)                          )                      },                      MapKind::Command => {                          Some( -                            KeyActionResult::new(MapKind::Command) +                            KeyActionResult::new(ActionKind::Command)                                  .in_mode(trigger)                          )                      }, @@ -174,19 +181,27 @@ map <play><down> works!          return match map.kind {              MapKind::Map => {                  Some( -                    KeyActionResult::new(MapKind::Map) +                    KeyActionResult::new(ActionKind::Map)                          .with_action(&map.action)                  )              },              MapKind::Command => {                  Some( -                    KeyActionResult::new(MapKind::Command) +                    KeyActionResult::new(ActionKind::Command)                  )              }, +            // MapKind::Mode => { +                // TODO: Maybe make a new type just for KeyActionResult that +                // combines regular MapKinds and Mode +            // },          }      }      if let Some(mode) = mode { +        return Some( +            KeyActionResult::new(ActionKind::Mode) +                .in_mode(trigger) +        )      }      // match map_group.get(trigger) { | 
