Vuo  2.4.0
VuoModifierKey.c
Go to the documentation of this file.
1
10#include <string.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
140bool 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}