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