Mercurial > sdl-ios-xcode
comparison src/video/dga/SDL_dgaevents.c @ 1895:c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 10 Jul 2006 21:04:37 +0000 |
parents | 3ba88cb7eb1b |
children |
comparison
equal
deleted
inserted
replaced
1894:c69cee13dd76 | 1895:c121d94672cb |
---|---|
34 | 34 |
35 /* get function pointers... */ | 35 /* get function pointers... */ |
36 #include "../x11/SDL_x11dyn.h" | 36 #include "../x11/SDL_x11dyn.h" |
37 | 37 |
38 /* Heheh we're using X11 event code */ | 38 /* Heheh we're using X11 event code */ |
39 extern int X11_Pending(Display *display); | 39 extern int X11_Pending(Display * display); |
40 extern void X11_InitKeymap(void); | 40 extern void X11_InitKeymap(void); |
41 extern SDLKey X11_TranslateKeycode(Display *display, KeyCode kc); | 41 extern SDLKey X11_TranslateKeycode(Display * display, KeyCode kc); |
42 | 42 |
43 static int DGA_DispatchEvent(_THIS) | 43 static int |
44 DGA_DispatchEvent(_THIS) | |
44 { | 45 { |
45 int posted; | 46 int posted; |
46 SDL_NAME(XDGAEvent) xevent; | 47 SDL_NAME(XDGAEvent) xevent; |
47 | 48 |
48 XNextEvent(DGA_Display, (XEvent *)&xevent); | 49 XNextEvent(DGA_Display, (XEvent *) & xevent); |
49 | 50 |
50 posted = 0; | 51 posted = 0; |
51 xevent.type -= DGA_event_base; | 52 xevent.type -= DGA_event_base; |
52 switch (xevent.type) { | 53 switch (xevent.type) { |
53 | 54 |
54 /* Mouse motion? */ | 55 /* Mouse motion? */ |
55 case MotionNotify: { | 56 case MotionNotify: |
56 if ( SDL_VideoSurface ) { | 57 { |
57 posted = SDL_PrivateMouseMotion(0, 1, | 58 if (SDL_VideoSurface) { |
58 xevent.xmotion.dx, xevent.xmotion.dy); | 59 posted = SDL_PrivateMouseMotion(0, 1, |
59 } | 60 xevent.xmotion.dx, |
60 } | 61 xevent.xmotion.dy); |
61 break; | 62 } |
63 } | |
64 break; | |
62 | 65 |
63 /* Mouse button press? */ | 66 /* Mouse button press? */ |
64 case ButtonPress: { | 67 case ButtonPress: |
65 posted = SDL_PrivateMouseButton(SDL_PRESSED, | 68 { |
66 xevent.xbutton.button, 0, 0); | 69 posted = SDL_PrivateMouseButton(SDL_PRESSED, |
67 } | 70 xevent.xbutton.button, 0, 0); |
68 break; | 71 } |
72 break; | |
69 | 73 |
70 /* Mouse button release? */ | 74 /* Mouse button release? */ |
71 case ButtonRelease: { | 75 case ButtonRelease: |
72 posted = SDL_PrivateMouseButton(SDL_RELEASED, | 76 { |
73 xevent.xbutton.button, 0, 0); | 77 posted = SDL_PrivateMouseButton(SDL_RELEASED, |
74 } | 78 xevent.xbutton.button, 0, 0); |
75 break; | 79 } |
80 break; | |
76 | 81 |
77 /* Key press? */ | 82 /* Key press? */ |
78 case KeyPress: { | 83 case KeyPress: |
79 SDL_keysym keysym; | 84 { |
80 KeyCode keycode; | 85 SDL_keysym keysym; |
81 XKeyEvent xkey; | 86 KeyCode keycode; |
87 XKeyEvent xkey; | |
82 | 88 |
83 SDL_NAME(XDGAKeyEventToXKeyEvent)(&xevent.xkey, &xkey); | 89 SDL_NAME(XDGAKeyEventToXKeyEvent) (&xevent.xkey, &xkey); |
84 keycode = xkey.keycode; | 90 keycode = xkey.keycode; |
85 #ifdef DEBUG_XEVENTS | 91 #ifdef DEBUG_XEVENTS |
86 printf("KeyPress (X11 keycode = 0x%X)\n", xkey.keycode); | 92 printf("KeyPress (X11 keycode = 0x%X)\n", xkey.keycode); |
87 #endif | 93 #endif |
88 /* Get the translated SDL virtual keysym */ | 94 /* Get the translated SDL virtual keysym */ |
89 keysym.scancode = keycode; | 95 keysym.scancode = keycode; |
90 keysym.sym = X11_TranslateKeycode(DGA_Display, keycode); | 96 keysym.sym = X11_TranslateKeycode(DGA_Display, keycode); |
91 keysym.mod = KMOD_NONE; | 97 keysym.mod = KMOD_NONE; |
92 keysym.unicode = 0; | 98 keysym.unicode = 0; |
93 | 99 |
94 /* Look up the translated value for the key event */ | 100 /* Look up the translated value for the key event */ |
95 if ( SDL_TranslateUNICODE ) { | 101 if (SDL_TranslateUNICODE) { |
96 static XComposeStatus state; | 102 static XComposeStatus state; |
97 char keybuf[32]; | 103 char keybuf[32]; |
98 | 104 |
99 if ( XLookupString(&xkey, keybuf, sizeof(keybuf), NULL, &state) ) { | 105 if (XLookupString |
100 /* | 106 (&xkey, keybuf, sizeof(keybuf), NULL, &state)) { |
101 * FIXME: XLookupString() may yield more than one | 107 /* |
102 * character, so we need a mechanism to allow for | 108 * FIXME: XLookupString() may yield more than one |
103 * this (perhaps null keypress events with a | 109 * character, so we need a mechanism to allow for |
104 * unicode value) | 110 * this (perhaps null keypress events with a |
105 */ | 111 * unicode value) |
106 keysym.unicode = (Uint8)keybuf[0]; | 112 */ |
107 } | 113 keysym.unicode = (Uint8) keybuf[0]; |
108 } | 114 } |
109 posted = SDL_PrivateKeyboard(SDL_PRESSED, &keysym); | 115 } |
110 } | 116 posted = SDL_PrivateKeyboard(SDL_PRESSED, &keysym); |
111 break; | 117 } |
118 break; | |
112 | 119 |
113 /* Key release? */ | 120 /* Key release? */ |
114 case KeyRelease: { | 121 case KeyRelease: |
115 SDL_keysym keysym; | 122 { |
116 KeyCode keycode; | 123 SDL_keysym keysym; |
117 XKeyEvent xkey; | 124 KeyCode keycode; |
125 XKeyEvent xkey; | |
118 | 126 |
119 SDL_NAME(XDGAKeyEventToXKeyEvent)(&xevent.xkey, &xkey); | 127 SDL_NAME(XDGAKeyEventToXKeyEvent) (&xevent.xkey, &xkey); |
120 keycode = xkey.keycode; | 128 keycode = xkey.keycode; |
121 #ifdef DEBUG_XEVENTS | 129 #ifdef DEBUG_XEVENTS |
122 printf("KeyRelease (X11 keycode = 0x%X)\n", xkey.keycode); | 130 printf("KeyRelease (X11 keycode = 0x%X)\n", xkey.keycode); |
123 #endif | 131 #endif |
124 /* Get the translated SDL virtual keysym */ | 132 /* Get the translated SDL virtual keysym */ |
125 keysym.scancode = keycode; | 133 keysym.scancode = keycode; |
126 keysym.sym = X11_TranslateKeycode(DGA_Display, keycode); | 134 keysym.sym = X11_TranslateKeycode(DGA_Display, keycode); |
127 keysym.mod = KMOD_NONE; | 135 keysym.mod = KMOD_NONE; |
128 keysym.unicode = 0; | 136 keysym.unicode = 0; |
129 posted = SDL_PrivateKeyboard(SDL_RELEASED, &keysym); | 137 posted = SDL_PrivateKeyboard(SDL_RELEASED, &keysym); |
130 } | 138 } |
131 break; | 139 break; |
132 | 140 |
133 break; | 141 break; |
134 | 142 |
135 } | 143 } |
136 return(posted); | 144 return (posted); |
137 } | 145 } |
138 | 146 |
139 void DGA_PumpEvents(_THIS) | 147 void |
148 DGA_PumpEvents(_THIS) | |
140 { | 149 { |
141 /* Keep processing pending events */ | 150 /* Keep processing pending events */ |
142 LOCK_DISPLAY(); | 151 LOCK_DISPLAY(); |
143 while ( X11_Pending(DGA_Display) ) { | 152 while (X11_Pending(DGA_Display)) { |
144 DGA_DispatchEvent(this); | 153 DGA_DispatchEvent(this); |
145 } | 154 } |
146 UNLOCK_DISPLAY(); | 155 UNLOCK_DISPLAY(); |
147 } | 156 } |
148 | 157 |
149 void DGA_InitOSKeymap(_THIS) | 158 void |
159 DGA_InitOSKeymap(_THIS) | |
150 { | 160 { |
151 X11_InitKeymap(); | 161 X11_InitKeymap(); |
152 } | 162 } |
153 | 163 |
164 /* vi: set ts=4 sw=4 expandtab: */ |