Blender V4.3
EventToBuf.c
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#include <stdlib.h>
6
7#include <stdio.h>
8
9#include "MEM_guardedalloc.h"
10
11#include "EventToBuf.h"
12#include "GHOST_C-api.h"
13
15{
16 switch (type) {
18 return "CursorMove";
20 return "ButtonDown";
22 return "ButtonUp";
23
25 return "KeyDown";
27 return "KeyUp";
28
30 return "Quit";
31
33 return "WindowClose";
35 return "WindowActivate";
37 return "WindowDeactivate";
39 return "WindowUpdate";
41 return "WindowSize";
42 default:
43 return "<invalid>";
44 }
45}
46
48{
49#define K(key) \
50 case GHOST_k##key: \
51 return #key;
52 switch (key) {
53 K(KeyBackSpace);
54 K(KeyTab);
55 K(KeyLinefeed);
56 K(KeyClear);
57 K(KeyEnter);
58
59 K(KeyEsc);
60 K(KeySpace);
61 K(KeyQuote);
62 K(KeyComma);
63 K(KeyMinus);
64 K(KeyPeriod);
65 K(KeySlash);
66
67 K(Key0);
68 K(Key1);
69 K(Key2);
70 K(Key3);
71 K(Key4);
72 K(Key5);
73 K(Key6);
74 K(Key7);
75 K(Key8);
76 K(Key9);
77
78 K(KeySemicolon);
79 K(KeyEqual);
80
81 K(KeyA);
82 K(KeyB);
83 K(KeyC);
84 K(KeyD);
85 K(KeyE);
86 K(KeyF);
87 K(KeyG);
88 K(KeyH);
89 K(KeyI);
90 K(KeyJ);
91 K(KeyK);
92 K(KeyL);
93 K(KeyM);
94 K(KeyN);
95 K(KeyO);
96 K(KeyP);
97 K(KeyQ);
98 K(KeyR);
99 K(KeyS);
100 K(KeyT);
101 K(KeyU);
102 K(KeyV);
103 K(KeyW);
104 K(KeyX);
105 K(KeyY);
106 K(KeyZ);
107
108 K(KeyLeftBracket);
109 K(KeyRightBracket);
110 K(KeyBackslash);
111 K(KeyAccentGrave);
112
113 K(KeyLeftShift);
114 K(KeyRightShift);
115 K(KeyLeftControl);
116 K(KeyRightControl);
117 K(KeyLeftAlt);
118 K(KeyRightAlt);
119 K(KeyOS);
120
121 K(KeyCapsLock);
122 K(KeyNumLock);
123 K(KeyScrollLock);
124
125 K(KeyLeftArrow);
126 K(KeyRightArrow);
127 K(KeyUpArrow);
128 K(KeyDownArrow);
129
130 K(KeyPrintScreen);
131 K(KeyPause);
132
133 K(KeyInsert);
134 K(KeyDelete);
135 K(KeyHome);
136 K(KeyEnd);
137 K(KeyUpPage);
138 K(KeyDownPage);
139
140 K(KeyNumpad0);
141 K(KeyNumpad1);
142 K(KeyNumpad2);
143 K(KeyNumpad3);
144 K(KeyNumpad4);
145 K(KeyNumpad5);
146 K(KeyNumpad6);
147 K(KeyNumpad7);
148 K(KeyNumpad8);
149 K(KeyNumpad9);
150 K(KeyNumpadPeriod);
151 K(KeyNumpadEnter);
152 K(KeyNumpadPlus);
153 K(KeyNumpadMinus);
154 K(KeyNumpadAsterisk);
155 K(KeyNumpadSlash);
156
157 K(KeyF1);
158 K(KeyF2);
159 K(KeyF3);
160 K(KeyF4);
161 K(KeyF5);
162 K(KeyF6);
163 K(KeyF7);
164 K(KeyF8);
165 K(KeyF9);
166 K(KeyF10);
167 K(KeyF11);
168 K(KeyF12);
169 K(KeyF13);
170 K(KeyF14);
171 K(KeyF15);
172 K(KeyF16);
173 K(KeyF17);
174 K(KeyF18);
175 K(KeyF19);
176 K(KeyF20);
177 K(KeyF21);
178 K(KeyF22);
179 K(KeyF23);
180 K(KeyF24);
181
182 default:
183 return "KeyUnknown";
184 }
185#undef K
186}
187
188void event_to_buf(GHOST_EventHandle evt, char buf[128])
189{
191 double time = (double)((int64_t)GHOST_GetEventTime(evt)) / 1000;
192 GHOST_WindowHandle win = GHOST_GetEventWindow(evt);
193 void *data = GHOST_GetEventData(evt);
194 char *pos = buf;
195
196 pos += sprintf(pos, "event: %6.2f, %16s", time, eventtype_to_string(type));
197 if (win) {
198 char *s = GHOST_GetTitle(win);
199 pos += sprintf(pos, " - win: %s", s);
200 free(s);
201 }
202 else {
203 pos += sprintf(pos, " - sys evt");
204 }
205 switch (type) {
208 pos += sprintf(pos, " - pos: (%d, %d)", cd->x, cd->y);
209 break;
210 }
214 pos += sprintf(pos, " - but: %d", bd->button);
215 break;
216 }
217
219 case GHOST_kEventKeyUp: {
221 pos += sprintf(pos, " - key: %s (%d)", keytype_to_string(kd->key), kd->key);
222 /* TODO: ideally this would print the unicode character. */
223 if (kd->utf8_buf[0]) {
224 pos += sprintf(pos, " ascii: '%c' (%d)", kd->utf8_buf[0], kd->utf8_buf[0]);
225 }
226 break;
227 }
228 }
229}
void BLI_kdtree_nd_ free(KDTree *tree)
typedef double(DMatrix)[4][4]
#define K(key)
void event_to_buf(GHOST_EventHandle evt, char buf[128])
Definition EventToBuf.c:188
static char * keytype_to_string(GHOST_TKey key)
Definition EventToBuf.c:47
char * eventtype_to_string(GHOST_TEventType type)
Definition EventToBuf.c:14
GHOST C-API function and type declarations.
uint64_t GHOST_GetEventTime(GHOST_EventHandle eventhandle)
GHOST_TEventDataPtr GHOST_GetEventData(GHOST_EventHandle eventhandle)
GHOST_TEventType GHOST_GetEventType(GHOST_EventHandle eventhandle)
GHOST_WindowHandle GHOST_GetEventWindow(GHOST_EventHandle eventhandle)
char * GHOST_GetTitle(GHOST_WindowHandle windowhandle)
GHOST_TEventType
@ GHOST_kEventWindowClose
@ GHOST_kEventWindowSize
@ GHOST_kEventCursorMove
@ GHOST_kEventButtonUp
@ GHOST_kEventWindowActivate
@ GHOST_kEventWindowUpdate
@ GHOST_kEventWindowDeactivate
@ GHOST_kEventButtonDown
@ GHOST_kEventKeyDown
@ GHOST_kEventKeyUp
@ GHOST_kEventQuitRequest
GHOST_TKey
Read Guarded memory(de)allocation.
__int64 int64_t
Definition stdint.h:89