Vuo  2.3.2
VuoModifierKey.c
Go to the documentation of this file.
1 
10 #include <string.h>
11 #include "VuoMacOSSDKWorkaround.h"
12 #include <Carbon/Carbon.h>
13 #include "type.h"
14 #include "VuoModifierKey.h"
15 
17 #ifdef VUO_COMPILER
19  "title" : "Modifier Key",
20  "version" : "1.0.0",
21  "dependencies" : [
22  "VuoList_VuoModifierKey",
23  "Carbon.framework"
24  ]
25  });
26 #endif
28 
34 {
35  const char *valueAsString = "";
36  if (json_object_get_type(js) == json_type_string)
37  valueAsString = json_object_get_string(js);
38 
39  VuoModifierKey value = VuoModifierKey_Any;
40 
41  if (! strcmp(valueAsString, "any")) {
42  value = VuoModifierKey_Any;
43  } else if (! strcmp(valueAsString, "command")) {
44  value = VuoModifierKey_Command;
45  } else if (! strcmp(valueAsString, "option")) {
46  value = VuoModifierKey_Option;
47  } else if (! strcmp(valueAsString, "control")) {
48  value = VuoModifierKey_Control;
49  } else if (! strcmp(valueAsString, "shift")) {
50  value = VuoModifierKey_Shift;
51  } else if (! strcmp(valueAsString, "none")) {
52  value = VuoModifierKey_None;
53  }
54 
55  return value;
56 }
57 
63 {
64  char *valueAsString = "";
65 
66  switch (value) {
67  case VuoModifierKey_Any:
68  valueAsString = "any";
69  break;
70  case VuoModifierKey_Command:
71  valueAsString = "command";
72  break;
73  case VuoModifierKey_Option:
74  valueAsString = "option";
75  break;
76  case VuoModifierKey_Control:
77  valueAsString = "control";
78  break;
79  case VuoModifierKey_Shift:
80  valueAsString = "shift";
81  break;
82  case VuoModifierKey_None:
83  valueAsString = "none";
84  break;
85  }
86 
87  return json_object_new_string(valueAsString);
88 }
89 
94 {
96  VuoListAppendValue_VuoModifierKey(l, VuoModifierKey_Any);
97  VuoListAppendValue_VuoModifierKey(l, VuoModifierKey_Command);
98  VuoListAppendValue_VuoModifierKey(l, VuoModifierKey_Option);
99  VuoListAppendValue_VuoModifierKey(l, VuoModifierKey_Control);
100  VuoListAppendValue_VuoModifierKey(l, VuoModifierKey_Shift);
101  VuoListAppendValue_VuoModifierKey(l, VuoModifierKey_None);
102  return l;
103 }
104 
110 {
111  char *valueAsString = "";
112 
113  switch (value) {
114  case VuoModifierKey_Any:
115  valueAsString = "Any";
116  break;
117  case VuoModifierKey_Command:
118  valueAsString = "Command";
119  break;
120  case VuoModifierKey_Option:
121  valueAsString = "Option";
122  break;
123  case VuoModifierKey_Control:
124  valueAsString = "Control";
125  break;
126  case VuoModifierKey_Shift:
127  valueAsString = "Shift";
128  break;
129  case VuoModifierKey_None:
130  valueAsString = "None";
131  break;
132  }
133 
134  return strdup(valueAsString);
135 }
136 
140 bool VuoModifierKey_doMacEventFlagsMatch(unsigned long flags, VuoModifierKey modifierKey)
141 {
142  bool isCommand = (flags & kCGEventFlagMaskCommand);
143  bool isOption = (flags & kCGEventFlagMaskAlternate);
144  bool isControl = (flags & kCGEventFlagMaskControl);
145  bool isShift = (flags & kCGEventFlagMaskShift);
146 
147  switch (modifierKey)
148  {
149  case VuoModifierKey_Any:
150  return true;
151  case VuoModifierKey_Command:
152  return isCommand;
153  case VuoModifierKey_Option:
154  return isOption;
155  case VuoModifierKey_Control:
156  return isControl;
157  case VuoModifierKey_Shift:
158  return isShift;
159  case VuoModifierKey_None:
160  return ! isCommand && ! isOption && ! isControl && ! isShift;
161  }
162 
163  return false;
164 }