134 gcn::KeyInput keyInput;
135 gcn::MouseInput mouseInput;
141 keyInput.setType(gcn::KeyInput::PRESSED);
142 keyInput.setShiftPressed(event.key.keysym.mod & KMOD_SHIFT);
143 keyInput.setControlPressed(event.key.keysym.mod & KMOD_CTRL);
144 keyInput.setAltPressed(event.key.keysym.mod & KMOD_ALT);
145 keyInput.setMetaPressed(event.key.keysym.mod & KMOD_GUI);
146 keyInput.setNumericPad(event.key.keysym.sym >= SDLK_KP_0
147 && event.key.keysym.sym <= SDLK_KP_EQUALS);
154 keyInput.setType(gcn::KeyInput::RELEASED);
155 keyInput.setShiftPressed(event.key.keysym.mod & KMOD_SHIFT);
156 keyInput.setControlPressed(event.key.keysym.mod & KMOD_CTRL);
157 keyInput.setAltPressed(event.key.keysym.mod & KMOD_ALT);
158 keyInput.setMetaPressed(event.key.keysym.mod & KMOD_GUI);
159 keyInput.setNumericPad(event.key.keysym.sym >= SDLK_KP_0
160 && event.key.keysym.sym <= SDLK_KP_EQUALS);
165 case SDL_MOUSEBUTTONDOWN:
167 setMouseCoordinates(mouseInput, event.button.x, event.button.y);
169 mouseInput.setType(gcn::MouseInput::PRESSED);
170 mouseInput.setTimeStamp(SDL_GetTicks());
174 case SDL_MOUSEBUTTONUP:
176 setMouseCoordinates(mouseInput, event.button.x, event.button.y);
178 mouseInput.setType(gcn::MouseInput::RELEASED);
179 mouseInput.setTimeStamp(SDL_GetTicks());
183 case SDL_MOUSEMOTION:
184 setMouseCoordinates(mouseInput, event.button.x, event.button.y);
185 mouseInput.setButton(gcn::MouseInput::EMPTY);
186 mouseInput.setType(gcn::MouseInput::MOVED);
187 mouseInput.setTimeStamp(SDL_GetTicks());
193#if SDL_VERSION_ATLEAST(2, 26, 0)
194 setMouseCoordinates(mouseInput, event.wheel.mouseX, event.wheel.mouseY);
197 SDL_GetMouseState(&x, &y);
198 setMouseCoordinates(mouseInput, x, y);
200 mouseInput.setButton(gcn::MouseInput::EMPTY);
201 mouseInput.setType(event.wheel.y > 0 ? gcn::MouseInput::WHEEL_MOVED_UP
202 : gcn::MouseInput::WHEEL_MOVED_DOWN);
203 mouseInput.setTimeStamp(SDL_GetTicks());
218 case SDL_ACTIVEEVENT:
223 if ((event.active.state & SDL_APPMOUSEFOCUS)
224 && !
event.active.gain)
230 mouseInput.setButton(gcn::MouseInput::EMPTY);
231 mouseInput.setType(gcn::MouseInput::MOVED);
virtual void windowToLogical(int windowX, int windowY, float &logicalX, float &logicalY) const =0
Converts a window coordinate to a logical coordinate.