Commit graph

84 commits

Author SHA1 Message Date
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 9aa7174218.

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 8530997fff.
2016-02-01 02:23:55 +01:00
Johannes Schickel
94cd15bb3e SDL: Do not quit on Alt-x.
This was originally added in cbd867329e 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
Johannes Schickel
c4317a8da1 SDL: Fake key events for unassociated TEXTINPUT events. 2015-03-05 20:08:35 +01:00
Johannes Schickel
26fb7b2c8f SDL: Remove TEXTINPUT events we associate with KEYDOWN. 2015-03-05 20:08:34 +01:00
Johannes Schickel
627d766325 SDL: Add basic abstraction class for the SDL window. 2015-02-16 01:03:29 +01:00
Johannes Schickel
8530997fff SDL: Add experimental support for SDL2.
This is based upon skristiansson's change set to make ScummVM work with SDL2.
2015-01-25 20:23:25 +01:00
Johannes Schickel
3a2db0135d SDL: Refactor WM specific functionality into SdlGraphicsManager. 2015-01-25 18:57:38 +01:00
Joel Teichroeb
ee9b60676a SDL: Warn if the selected joystick does not exist 2015-01-04 09:39:55 -08:00
Johannes Schickel
63304ee9ec SDL: Make GPL headers consistent in themselves. 2014-02-18 02:39:38 +01:00
Johannes Schickel
53f9c0d69b SDL: Send EVENT_SCREEN_CHANGED after receiving SDL_VIDEORESIZE when necessary.
This fixes some ugly crashes when resizing the window in OpenGL mode.
2013-10-19 22:17:42 +02:00
Eugene Sandulenko
f59512c47e RECORDER: Implement Events Recorder 2013-05-17 00:18:09 +03:00