93 Commits

Author SHA1 Message Date
Cameron Cawley
f2b9f7bb76 BACKENDS: Remove the Windows CE port 2019-11-17 22:33:56 +01:00
D G Turner
690370554f SDL: Fix Missing Default Switch Cases in Events Class
These are flagged by GCC if -Wswitch-default is enabled.
2019-10-16 23:24:05 +01:00
Cameron Cawley
7bf22fa996 BACKENDS: Add EVENT_CLIPBOARD_UPDATE event 2019-09-21 22:16:01 +03:00
Cameron Cawley
52e7ba5e54 SDL: Support joystick hat input 2019-07-08 01:24:55 +03:00
Cameron Cawley
30109816fe SDL: Initial implementation of joystick events 2019-07-08 01:24:55 +03:00
Bastien Bouclet
0a8049e30c SDL: Fix gamepad mouse cursor wrapping on hi-res screens
The cursor position was overflowing a signed 16-bits integer once
multiplied with MULTIPLIER when using a resolution such as 2560x1440.

It would be nice changing this code to make more sense, sadly it is
thightly coupled with platform specific subclasses.

Fixes #10996.
2019-06-27 20:12:52 +02:00
Cameron Cawley
fb0b63ba66 RISCOS: Add Drag and Drop support 2019-04-30 22:17:04 +01:00
Cameron Cawley
d7b2b1b8f9 GUI: Support adding games via Drag and Drop 2019-04-30 22:17:04 +01:00
Hubert Maier
ce8227323b AmigaOS4: Exclude platform from a SDL1/2 keyboard fix that breaks numpad usage (#1551)
SDL1/2: Exclude AmigaOS4 from returning 0 for .ascii

*reset .ascii to 0, when Num-Lock is NOT enabled and keypad directional keys are pressed* (original description) is causing the numpad to play dead completely on AmigaOS4 (no matter if numlock is active or not). This is a workaround for the SCUMM engine, where keycodes are mixed with ASCII codes.

Check commit f5ed14e93d85b638c8e49468b2885c1278d56d20 for reference. 

Fixes bug #10558. Tested with both SDL1 and 2 on AmigaOS4 and with both Indiana Jones games.
2019-04-11 01:28:18 +03:00
LMerckx
f0dfc19f29 SDL: Allow to load a custom game controller mapping file
And add a specific joystick button to open virtual keyboard
2018-04-04 20:40:16 +02:00
Bastien Bouclet
2e875a768d SDL: Split joystick mouse event generation into two functions
That way it is easier to implement relative mouse movement in
ResidualVM.
2018-03-18 13:09:00 +01:00
Bastien Bouclet
49a48cedea SDL: Scale the joystick mouse speed with the vertical window size
The mouse cursor now moves across the screen in a similar amount of time
irrespective of the display resolution.
2018-01-13 10:29:10 +01:00
Bastien Bouclet
bb5e8d3a11
Merge pull request #1090 from bgK/remove-zaurus-yopy
PORTS: Remove the Zaurus and Yopy ports
2018-01-03 06:40:49 +01:00
Bastien Bouclet
1fa80ea3a3 SDL: Add debug traces for joystick hotplug 2017-12-27 07:30:53 +01:00
Bastien Bouclet
1522fc8e2f SDL: Add support for joystick hotplug
Fixes #10366.
2017-12-26 21:11:05 +01:00
Bastien Bouclet
ee4ff8ca08 SDL: Cleanup joystick deadzone handling 2017-12-26 21:11:04 +01:00
Bastien Bouclet
1fb748e974 SDL: Move the non analog joystick code to the Symbian port
Symbian was the only user of that code.
2017-12-26 21:11:04 +01:00
Bastien Bouclet
ac78058fcd SDL: Initial support for game controllers
The button mapping is that of the Vita port

Co-Authored-By: rsn8887 <rsn8887@users.noreply.github.com>
2017-12-26 21:11:04 +01:00
Bastien Bouclet
60a1100beb PORTS: Remove the Zaurus port
There was never an official release. The last unofficial release of ScummVM was 0.6.0.
Production ceased in 2007.
2017-12-19 07:42:22 +01:00
Bastien Bouclet
ca469f728b PORTS: Remove the Yopy PDA port
No official release was ever done for that platform. Production ceased
in 2005.
2017-12-19 07:37:08 +01:00
Bastien Bouclet
8fc70ce37f SDL: Improve handling of SDL2 keyboard repeat events
- Flag them as repeat events
- Disable ScummVM's own repeat event generation

This fixes keyboard repeat events not being flagged as such with SDL2,
and complies with the user's operating system preferences regarding key
repeat timings.
2017-11-19 16:12:50 +01:00
Colin Snover
d1b77d4b68 BACKENDS: Fix missing mouse events when system cursor cannot be moved
Normally with SDL, a mouse motion event will be sent after the
system mouse cursor has been moved by a call to
SDL_WarpMouseInWindow, but if the system cursor cannot be moved
(e.g. because the window does not have mouse focus), games still
need to receive these mouse events so they can successfully update
the mouse position internally. Otherwise, games continue to think
the mouse is still in the original position and will continue to
try to perform whatever action is associated with that mouse
position.

Refs Trac#9689.
2017-10-15 13:24:21 -05:00
Colin Snover
cd538ffffa BACKENDS: Do not send mouse events to games occurring outside the game draw rect 2017-10-15 13:24:21 -05:00
Colin Snover
de2bbe3b97 BACKENDS: Refactor OpenGL & SDL graphics backends
This patch refactors the OpenGL and SDL graphics backends,
primarily to unify window scaling and mouse handling, and to
fix coordinate mapping between the ScummVM window and the
virtual game screen when they have different aspect ratios.

Unified code for these two backends has been moved to a new
header-only WindowedGraphicsManager class, so named because it
contains code for managing graphics managers that interact with
a windowing system and render virtual screens within a larger
physical content window.

The biggest behavioral change here is with the coordinate
system mapping:

Previously, mouse offsets were converted by mapping the whole
space within the window as input to the virtual game screen
without maintaining aspect ratio. This was done to prevent
'stickiness' when the mouse cursor was within the window but
outside of the virtual game screen, but it caused noticeable
distortion of mouse movement speed on the axis with blank
space.

Instead of introducing mouse speed distortion to prevent
stickiness, this patch changes coordinate transformation to
show the system cursor when the mouse moves outside of the virtual
game screen when mouse grab is off, or by holding the mouse inside
the virtual game screen (instead of the entire window) when mouse
grab is on.

This patch also improves some other properties of the
GraphicsManager/PaletteManager interfaces:

* Nullipotent operations (getWidth, getHeight, etc.) of the
  PaletteManager/GraphicsManager interfaces are now const
* Methods marked `virtual` but not inherited by any subclass have
  been de-virtualized
* Extra unnecessary calculations of hardware height in
  SurfaceSdlGraphicsManager have been removed
* Methods have been renamed where appropriate for clarity
  (setWindowSize -> handleResize, etc.)
* C++11 support improved with `override` specifier added on
  overridden virtual methods in subclasses (primarily to avoid
  myself accidentally creating new methods in the subclasses
  by changing types/names during refactoring)

Additional refactoring can and should be done at some point to
continue to deduplicate code between the OpenGL and SDL backends.
Since the primary goal here was to improve the coordinate mapping,
full refactoring of these backends was not completed here.
2017-10-15 13:24:20 -05:00
Colin Snover
b53020f704 BACKENDS: Fix some comment typos 2017-10-15 13:24:20 -05:00
Thierry Crozat
00bbb73ce5 SDL: Make sure we get the correct window size with SDL2
When updating or recreating the window, if we changed the window
size at the same time we also toggle between OpenGL and non
OpenGL mode, or toggle fullscreen mode, we may have a pending
SDL resize event with the wrong size. So we need to make sure to
append another one with the correct size to end up with the correct
size. This fixes bug #9971.
2017-07-27 21:05:44 +01:00
Thierry Crozat
a20d2172fa SDL: Respect OS setting for wheel scroll direction on SDL 2.0.4+
The setting was already respected on SDL < 2.0.4 (such as SDL1).
If the OS inverts the scrolling direction, this is reflected on the sign
of the y value of the SDL event. Since version 2.0.4 the SDL event
also had a flag to indicate if the direction is flipped and we were
using it to change back the y sign. That means the OS scrolling
direction setting was not respected. With this commit we now have
a consistent behaviour with all SDL versions (the OS scroll direction
setting is respected).

If our wheel events are used for something other than scrolling
however, we might want to get the actually wheel move direction
(i.e. use a Common::EVENT_WHEELDOWN when moving the wheel
down even if the OS scroll setting is to flip it). In such a case we
might want to revert this change and instead add an additional flag
to the event so that we know the scroll direction should be flipped
and use it in places where the event is used for scrolling.
2017-03-21 21:06:35 +00:00
rsn8887
12e226922d SDL: Always use sub-pixel joystick pointer resolution 2017-03-01 09:55:20 -06:00
rsn8887
58bbc0e887 SDL: fix pointer speed setting 8 (was too slow) 2017-02-27 19:59:18 -06:00
rsn8887
45bd7a8b75 SDL: Fix erratic analog pointer + control options
Fixes erratic speeds in analog pointer motion
Implemented option to set analog/keyboard pointer speed
and control the analog joystick deadzone. The deadzone option appears
only if the build supports analog joystick (via JOY_ANALOG define)
2017-02-22 16:52:09 -06:00
rsn8887
86c6c7c903 SDL: increase resolution of slow analog pointer motion 2017-02-18 19:22:04 -06:00
rsn8887
c0b095d793 SDL: Cleanup, replaced _km.multiplier with #define 2017-02-18 18:20:10 -06:00
rsn8887
75004c429c SDL: improved internal joystick event handling 2017-02-18 12:00:22 -06:00
rsn8887
09a6029781 SDL: slow analog ('modifier'+stick) made slower 2017-02-18 11:59:16 -06:00
rsn8887
613c6f4f7f SDL: More fixes to jerky analog joystick pointer
For some engines such as Dreamweb that a previous fix did not apply
to, this fixes bug 6996: Android: Mouse pointer control with
analog joystick is unusable
2017-02-17 17:55:09 -06:00
rsn8887
fb50d5934d SDL: Fix jerky/laggy analog joystick mouse control
This fixes bug 6996: Android: Mouse pointer control with
analog joystick is unusable
2017-02-14 23:05:34 +00:00
Eugene Sandulenko
641012a141 Merge pull request #777 from m-kiewitz/master
SDL: Fix keyboard on macOS, when using SDL2, fix directional keypad
2016-11-08 00:57:14 +01:00
Ori Avtalion
fc85eb461d SDL: Fix typo in function name 2016-10-18 19:24:51 +03:00
lubomyr
6ffc90412c SDL: mapKey changed as virtual function 2016-09-20 19:48:14 +03:00
Bastien Bouclet
a6efdf6422 SDL: Disable keycode remapping when building for WinCE
WinCE does not have MapVirtualKey.
2016-07-25 23:09:32 +02:00
Bastien Bouclet
914996b5a6 SDL: Fix Windows SDL1 keycodes to use the active keyboard layout 2016-07-25 13:10:51 +02:00
Martin Kiewitz
f5ed14e93d SDL: Fix keyboard on macOS, when using SDL2, fix directional keypad
This will hopefully fully fix keyboard issues for macOS / SDL2,
for example when pressing "alt-x".

Also reset .ascii to 0, when Num-Lock is NOT enabled and keypad
directional keys are pressed. This was fixed inside AGI+SCI
previously.

The latter shouldn't cause issues, but in case it does, the
affected engine should get fixed and use keycodes instead.
2016-07-03 20:36:27 +02:00
Martin Kiewitz
29c31f8308 Revert "SDL: Fix keyboard on macOS, fix directional keypad"
This reverts commit 9aa7174218983bb1cf6fd98325082ca7d37f50fb.

For now.
2016-07-03 19:43:56 +02:00
Martin Kiewitz
9aa7174218 SDL: Fix keyboard on macOS, when using SDL2, fix directional keypad
This will hopefully fully fix keyboard issues for macOS / SDL2,
for example when pressing "alt-x".

Also reset .ascii to 0, when Num-Lock is NOT enabled and keypad
directional keys are pressed. This was fixed inside AGI+SCI
previously.

The latter shouldn't cause issues, but in case it does, the
affected engine should get fixed and use keycodes instead.
2016-07-03 19:08:24 +02:00
Johannes Schickel
c925e5b35c SDL: Make TEXTINPUT handling more reliable for SDL2.
This reduces the likelihood of entering two characters per keypress in our guy
on Windows. In fact, during my brief testing with the filter widget in the
launcher I was not able to trigger the former behavior at all anymore.
2016-05-22 13:09:24 +02:00
Eugene Sandulenko
68ff933206 Merge pull request #657 from lordhoto/scumm-alt-x
ALL: Handle Alt-x internally in SCUMM.
2016-02-01 10:35:13 +01:00
Johannes Schickel
24c6d50301 SDL: Don't mix our key code with SDL's.
This case for F# keys was forgotten to update in 8530997fff7b5b9d558f7dd6a0d07c236e4de16f.
2016-02-01 02:23:55 +01:00
Johannes Schickel
94cd15bb3e SDL: Do not quit on Alt-x.
This was originally added in cbd867329e018d7eca12b3a8842e52b8db9f494d to
support this LucasArts game hotkey. However, Alt-x is used by other
engines as hotkey. Most notably AGI's Leisure Suit Larry in the Land of the
Lounge Lizards uses it to skip the age protection. Since we handle Alt-x
internally in SCUMM now there is no need to keep this around in our backend
code.
2016-01-29 23:19:08 +01:00
Bastien Bouclet
b9a1074999 PS3: Make use of an updated SDL2 version
This version, available at https://bitbucket.org/bgK/sdl_psl1ght, is based on SDL 2.0.3.
2015-12-15 20:10:19 +01:00
Johannes Schickel
86db21467e SDL: Slight formatting fixes. 2015-12-13 23:53:27 +01:00