Blender  V2.93
EventToBuf.c
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19 
20 #include <stdlib.h>
21 
22 #include <stdio.h>
23 
24 #include "MEM_guardedalloc.h"
25 
26 #include "EventToBuf.h"
27 #include "GHOST_C-api.h"
28 
30 {
31  switch (type) {
33  return "CursorMove";
35  return "ButtonDown";
37  return "ButtonUp";
38 
40  return "KeyDown";
41  case GHOST_kEventKeyUp:
42  return "KeyUp";
43 
45  return "Quit";
46 
48  return "WindowClose";
50  return "WindowActivate";
52  return "WindowDeactivate";
54  return "WindowUpdate";
56  return "WindowSize";
57  default:
58  return "<invalid>";
59  }
60 }
61 
62 static char *keytype_to_string(GHOST_TKey key)
63 {
64 #define K(key) \
65  case GHOST_k##key: \
66  return #key;
67  switch (key) {
68  K(KeyBackSpace);
69  K(KeyTab);
70  K(KeyLinefeed);
71  K(KeyClear);
72  K(KeyEnter);
73 
74  K(KeyEsc);
75  K(KeySpace);
76  K(KeyQuote);
77  K(KeyComma);
78  K(KeyMinus);
79  K(KeyPeriod);
80  K(KeySlash);
81 
82  K(Key0);
83  K(Key1);
84  K(Key2);
85  K(Key3);
86  K(Key4);
87  K(Key5);
88  K(Key6);
89  K(Key7);
90  K(Key8);
91  K(Key9);
92 
93  K(KeySemicolon);
94  K(KeyEqual);
95 
96  K(KeyA);
97  K(KeyB);
98  K(KeyC);
99  K(KeyD);
100  K(KeyE);
101  K(KeyF);
102  K(KeyG);
103  K(KeyH);
104  K(KeyI);
105  K(KeyJ);
106  K(KeyK);
107  K(KeyL);
108  K(KeyM);
109  K(KeyN);
110  K(KeyO);
111  K(KeyP);
112  K(KeyQ);
113  K(KeyR);
114  K(KeyS);
115  K(KeyT);
116  K(KeyU);
117  K(KeyV);
118  K(KeyW);
119  K(KeyX);
120  K(KeyY);
121  K(KeyZ);
122 
123  K(KeyLeftBracket);
124  K(KeyRightBracket);
125  K(KeyBackslash);
126  K(KeyAccentGrave);
127 
128  K(KeyLeftShift);
129  K(KeyRightShift);
130  K(KeyLeftControl);
131  K(KeyRightControl);
132  K(KeyLeftAlt);
133  K(KeyRightAlt);
134  K(KeyOS);
135 
136  K(KeyCapsLock);
137  K(KeyNumLock);
138  K(KeyScrollLock);
139 
140  K(KeyLeftArrow);
141  K(KeyRightArrow);
142  K(KeyUpArrow);
143  K(KeyDownArrow);
144 
145  K(KeyPrintScreen);
146  K(KeyPause);
147 
148  K(KeyInsert);
149  K(KeyDelete);
150  K(KeyHome);
151  K(KeyEnd);
152  K(KeyUpPage);
153  K(KeyDownPage);
154 
155  K(KeyNumpad0);
156  K(KeyNumpad1);
157  K(KeyNumpad2);
158  K(KeyNumpad3);
159  K(KeyNumpad4);
160  K(KeyNumpad5);
161  K(KeyNumpad6);
162  K(KeyNumpad7);
163  K(KeyNumpad8);
164  K(KeyNumpad9);
165  K(KeyNumpadPeriod);
166  K(KeyNumpadEnter);
167  K(KeyNumpadPlus);
168  K(KeyNumpadMinus);
169  K(KeyNumpadAsterisk);
170  K(KeyNumpadSlash);
171 
172  K(KeyF1);
173  K(KeyF2);
174  K(KeyF3);
175  K(KeyF4);
176  K(KeyF5);
177  K(KeyF6);
178  K(KeyF7);
179  K(KeyF8);
180  K(KeyF9);
181  K(KeyF10);
182  K(KeyF11);
183  K(KeyF12);
184  K(KeyF13);
185  K(KeyF14);
186  K(KeyF15);
187  K(KeyF16);
188  K(KeyF17);
189  K(KeyF18);
190  K(KeyF19);
191  K(KeyF20);
192  K(KeyF21);
193  K(KeyF22);
194  K(KeyF23);
195  K(KeyF24);
196 
197  default:
198  return "KeyUnknown";
199  }
200 #undef K
201 }
202 
203 void event_to_buf(GHOST_EventHandle evt, char buf[128])
204 {
206  double time = (double)((GHOST_TInt64)GHOST_GetEventTime(evt)) / 1000;
207  GHOST_WindowHandle win = GHOST_GetEventWindow(evt);
208  void *data = GHOST_GetEventData(evt);
209  char *pos = buf;
210 
211  pos += sprintf(pos, "event: %6.2f, %16s", time, eventtype_to_string(type));
212  if (win) {
213  char *s = GHOST_GetTitle(win);
214  pos += sprintf(pos, " - win: %s", s);
215  free(s);
216  }
217  else {
218  pos += sprintf(pos, " - sys evt");
219  }
220  switch (type) {
221  case GHOST_kEventCursorMove: {
223  pos += sprintf(pos, " - pos: (%d, %d)", cd->x, cd->y);
224  break;
225  }
227  case GHOST_kEventButtonUp: {
229  pos += sprintf(pos, " - but: %d", bd->button);
230  break;
231  }
232 
233  case GHOST_kEventKeyDown:
234  case GHOST_kEventKeyUp: {
236  pos += sprintf(pos, " - key: %s (%d)", keytype_to_string(kd->key), kd->key);
237  if (kd->ascii)
238  pos += sprintf(pos, " ascii: '%c' (%d)", kd->ascii, kd->ascii);
239  break;
240  }
241  }
242 }
void BLI_kdtree_nd_() free(KDTree *tree)
Definition: kdtree_impl.h:116
typedef double(DMatrix)[4][4]
#define K(key)
void event_to_buf(GHOST_EventHandle evt, char buf[128])
Definition: EventToBuf.c:203
static char * keytype_to_string(GHOST_TKey key)
Definition: EventToBuf.c:62
char * eventtype_to_string(GHOST_TEventType type)
Definition: EventToBuf.c:29
GHOST C-API function and type declarations.
char * GHOST_GetTitle(GHOST_WindowHandle windowhandle)
GHOST_TEventDataPtr GHOST_GetEventData(GHOST_EventHandle eventhandle)
GHOST_TEventType GHOST_GetEventType(GHOST_EventHandle eventhandle)
GHOST_WindowHandle GHOST_GetEventWindow(GHOST_EventHandle eventhandle)
GHOST_TUns64 GHOST_GetEventTime(GHOST_EventHandle eventhandle)
GHOST_TEventType
Definition: GHOST_Types.h:177
@ GHOST_kEventWindowClose
Definition: GHOST_Types.h:197
@ GHOST_kEventWindowSize
Definition: GHOST_Types.h:201
@ GHOST_kEventCursorMove
Definition: GHOST_Types.h:180
@ GHOST_kEventButtonUp
Mouse button event.
Definition: GHOST_Types.h:182
@ GHOST_kEventWindowActivate
Definition: GHOST_Types.h:198
@ GHOST_kEventWindowUpdate
Definition: GHOST_Types.h:200
@ GHOST_kEventWindowDeactivate
Definition: GHOST_Types.h:199
@ GHOST_kEventButtonDown
Mouse move event.
Definition: GHOST_Types.h:181
@ GHOST_kEventKeyDown
Trackpad event.
Definition: GHOST_Types.h:191
@ GHOST_kEventKeyUp
Definition: GHOST_Types.h:192
@ GHOST_kEventQuitRequest
Definition: GHOST_Types.h:195
GHOST_TKey
Definition: GHOST_Types.h:267
long long GHOST_TInt64
Definition: GHOST_Types.h:85
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
double time
uint pos
GHOST_TButtonMask button
Definition: GHOST_Types.h:443