Commit Graph

4514 Commits

Author SHA1 Message Date
zoltanvb 6a85844b41
Pointer sanitization - x11, udev (#17281)
Adapt the sanitized pointer handling, discussed at #17196 :

X11 driver specific changes:

    make sure pointer position is always within [-0x7fff,0x7fff] by using the confined wrapper
    remove extra "inside" checks, general simplification
    enable pointer offscreen reporting

Udev driver specific changes:

    remove custom calculation and use common viewport translation
    unify pointer query instead of separate _x and _y
    enable pointer offscreen reporting

Other changes:

    more tuning of pointer conversion in video_driver.c for edges
    lightgun button ID conversion moved to input_driver.c
2024-12-24 07:08:58 -08:00
libretroadmin 442b9bc3da Syntax style nits 2024-12-23 05:44:40 +01:00
zoltanvb 072d949346
Pointer handling sanitization - wayland and libretro.h changes (#17277)
Adapt the sanitized pointer handling, discussed at #17196:

Wayland driver specific changes:
- make sure pointer position is always within [-0x7fff,0x7fff]
  by using the confined wrapper
- enable lightgun to report -0x8000 if pointer is really offscreen
- remove extra "inside" checks
- report same pointer/lightgun coordinates for all ports
- simplify pointer and lightgun handling

Other changes:
- unify "offscreen" condition through input_driver.c
- slight tuning of pointer conversion in video_driver.c
- update libretro.h with explanation and pointer offscreen value
- small fixes on remote retropad test screen
2024-12-21 13:28:27 -08:00
sonninnos dc7e8e1811
Prevent stuck Game Focus dupe keyboard event (#17273) 2024-12-20 09:38:01 -08:00
zoltanvb 30a656738b
Introduce video_driver_translate_coord_viewport_wrap clamping variant. (#17196)
Add another version of the coordinate translation that will not
report -0x8000 for offscreen values, but instead map the position
to the respective edge (0x7fff/-0x7fff). Not yet in use.

Udev driver updated to use the wrapper, as all other input drivers do.
2024-12-19 13:30:43 -08:00
libretroadmin 17fc55c762 fill_pathname_parent_dir_name - small cleanups 2024-12-19 21:05:43 +01:00
Jesse Talavera d682917e44
Add Linux support for illuminance sensors (#17208)
* First crack at light sensor support for Linux

* Add light-sensor support to most Linux input drivers

* Fix a compiler error

- Whoops, forgot to declare `sdl`

* Refactor linux_illuminance_sensor_t

- Allow the poll rate to be specified
- Poll the sensor on a separate thread
- Open a file handle each time we poll the sensor, since sysfs doesn't update the contents of an existing handle

* Set the `done` flag when closing the light sensor

- Whoops

* Avoid a division by zero when updating the poll rate of an existing sensor

* Don't try to open illuminance sensors from ".", "..", or hidden files

* Never mind

* Fix some silly mistakes

* Skip hidden files, ".", and ".."

* Cancel the sensor poll thread mid-sleep when closing it

- POSIX says it's fine

* Add to CHANGES.md

* Address feedback given on PR

* Use libretro-common's file system instead of stdio
2024-12-17 05:49:39 -08:00
Eric Warmenhoven 7e49b3d3d3 overlay: fix crash on null pointer 2024-12-16 15:59:32 +01:00
zoltanvb 5cfaf09f55
Support for analog L2/R2 values when a DS3 controller is used with PS Vita. (#17261) 2024-12-15 09:24:13 -08:00
redenvelope2000 7be52caff8
Update input_driver.c to improve the classic toggle turbo function (#17252)
Changed the logic of the classic toggle turbo mode code such that the pressing order of the turbo button and the button to enable/disable does not matter.
2024-12-15 09:23:59 -08:00
Eric Warmenhoven 48f156fefe
Fix uninitialized variable (#17256) 2024-12-13 09:55:38 -08:00
Eric Warmenhoven cf986c0424
overlay: don't rely on menu entry, it can be misleading (#17247) 2024-12-10 22:32:15 -08:00
Eric Warmenhoven f83841df38
probably fix crash setting overlay (#17243) 2024-12-09 20:47:29 -08:00
Eric Warmenhoven 99c2676efa
Add option to load overlay based on system name (#17233) 2024-12-07 23:58:33 -08:00
libretroadmin 2809421d4e Revert "static variables are initialized to '0' automatically as per C rules"
This reverts commit 2a0984b6e4.
2024-11-19 03:03:13 +01:00
libretroadmin 82e4504968 Revert "(pt. 2) static variables are initialized to '0' automatically as per C rules"
This reverts commit 47410df7a3.
2024-11-19 03:03:05 +01:00
libretroadmin 47410df7a3 (pt. 2) static variables are initialized to '0' automatically as per C rules 2024-11-18 15:59:46 +01:00
libretroadmin 2a0984b6e4 static variables are initialized to '0' automatically as per C rules 2024-11-18 15:33:34 +01:00
Bernhard Schelling c039576441
Fix quick shift key presses getting ignored on dinput driver (#17185)
Because shift keys were ignored in the event message  and only issued during polling, a quick key press and release between polling would get ignored.
This change also fixes left alt up key events getting issued (and sent to the core) twice.
2024-11-14 13:44:41 -08:00
sonninnos c27075d9d6
Ignore other hotkeys with menu toggle (#17165) 2024-11-06 00:19:00 -08:00
zoltanvb d5dd3689fc
Support for lightgun in Wayland input driver (#17152) 2024-11-03 18:14:41 -06:00
Joe Osborn fbf2c70e0d
replay format extended to support external tools (#17042)
- replays now start each frame with the number of key events (8 bit
unsigned int, then key events) and the number of input events (16 bit
unsigned int, then the input events)
- this makes it possible to parse replay files without any core
loaded, and makes replays more portable if cores change their polling
strategies
- external tools can now parse replay files
- old (vsn 0) replays will still play back, but new (vsn 1) replays
will not play on old RA
- replay files grow faster now, with each input poll now taking 8
bytes instead of 2
2024-10-04 12:47:34 -07:00
sonninnos 5e2409471a
Dinput: Mouse pointer send proper return value instead of flag value (#17067) 2024-10-01 17:36:49 -07:00
Viačasłaŭ 3019b926c2
Fix typos (#17068) 2024-10-01 17:36:33 -07:00
Joe Osborn abe7d01e74
Report replay frame number for active_replay stdout api (#17039)
This changes the replay movie's frame_ptr (a 20-bit number used to
point to a log of file offsets) into a frame counter, which is masked
against the 20-bit pattern for use in the file offset log but also
functions as a time index into the replay.  Right now that is reported
in `GET_CONFIG_PARAM active_replay` but in the future it could be used
to show how far into the replay we are during playback or how long the
replay is during recording.
2024-09-27 14:37:31 -07:00
Colin Kinloch ee55623678
wayland: Check for relative_pointer support (#17029) 2024-09-23 08:50:34 -07:00
Eric Warmenhoven b557bc9523
Fixing compiler warnings (#17001) 2024-09-14 13:11:20 -07:00
Eric Warmenhoven 801a4af6f2
tvOS: better handling of siri remote (#16991) 2024-09-11 19:31:58 -07:00
zoltanvb 4e063934fd
Add option to disable analog stick menu navigation (#16743)
Two new settings added to Settings / Input / Menu Control:
- disable left analog stick in menu navigation
- disable right analog stick in menu navigation

Since the corresponding logic is already a distinct logic flow in
input driver, no change was necessary to analog-to-digital settings
or the like.
2024-09-10 18:13:31 -07:00
Emanuel Haupt 7a0d568f04
Incorporate FreeBSD port patches (#16221)
This commit imports a series of patches from the FreeBSD port of RetroArch to
improve build compatibility and address specific issues encountered in the
FreeBSD environment. These patches, sourced from the FreeBSD Ports collection
(https://cgit.freebsd.org/ports/tree/games/retroarch/files), have been adapted
and tested to ensure they integrate seamlessly with the current build process.
2024-09-10 18:11:40 -07:00
libretroadmin 8ba57c77e0 (winraw_input) Simplify code 2024-09-10 18:18:26 +02:00
Eric Warmenhoven cfbfd01f38
iOS: Last bits of iOS 12 support, including loading an older MoltenVK library (#16982) 2024-09-09 21:27:29 -07:00
libretroadmin 55f737195e (Winraw) Use flags 2024-09-09 19:06:43 +02:00
libretroadmin e675ea7e29 Variable cleanups - add TODO/FIXME notes for spurious variable sizes 2024-09-09 15:22:08 +02:00
libretroadmin 2be58b470d BUildfix 2024-09-09 05:51:20 +02:00
libretroadmin b8391e233f * PATH_MAX_LENGTH redefined from 4096 to 2048
* Massive reduction in heap space allocation, going from settings struct
264kb to 119Kb
* Use NAME_MAX_LENGTH for base paths/names, etc
* Use DIR_MAX_LENGTH for directory sizes
2024-09-09 05:47:32 +02:00
Eric Warmenhoven d228c9d469
iOS: More fixes to enable running on iOS 12 (#16978) 2024-09-08 03:10:30 -07:00
Eric Warmenhoven 4503b3989f
iOS: Better mouse grab (#16933) 2024-08-27 01:53:18 -07:00
Eric Warmenhoven 800be5530f
iOS: Better handling of physical mice/magic keyboard trackpad (#16911) 2024-08-22 12:11:16 -07:00
Eric Warmenhoven fdf2faaf59
macOS: Don't include video/input drivers when compiling with SDL2 (#16865) 2024-08-10 17:56:03 -07:00
Eric Warmenhoven c579033abf
macos: fix hid driver crash on disconnecting controller second time (#16860) 2024-08-10 07:38:56 -07:00
zoltanvb e5e7e66199
Add sensor function placeholders for all joypad drivers. (#16812)
In some cases, set_sensor_state and get_sensor_input are
more related to the joypad driver, e.g. in desktop platforms
where sensors are associated rather with the joypad.

If input driver supports the sensors, it is still preferred.
Placeholder inserted for all input drivers, no functionality
added yet.
2024-07-24 15:13:16 -07:00
libretroadmin 3c45d78a95 Buildfix 2024-07-20 19:49:31 +02:00
libretroadmin afc9cb509a CXX_BUILDFIX buildfixes 2024-07-20 19:42:45 +02:00
libretroadmin e543aa25ae Silence some warnings 2024-07-20 15:46:26 +02:00
zoltanvb 7db9a2de60 Test input driver and sensor test screen
A new input driver (test_input), similar to test joypad driver.
Takes its inputs from a json file provided in options. Supports
keyboard input and sensor input (accelerometer, gyroscope,
illuminance).

Remote Retropad extended with a sensor test screen.
2024-07-06 13:55:55 -05:00
zoltanvb 286d65b42e [X11] Support for mouse buttons 4 and 5
Support added for extra mouse buttons. Since these buttons were
not returned by XQueryPointer(), some additional logic was needed
which fit best to scroll wheel handling.
2024-06-25 08:18:51 -05:00
schellingb e7c6d1df84 Fix keyboard events missing RETROKMOD_NUMLOCK or RETROKMOD_SCROLLOCK
- Add missing numlock mod to dinput
- Add missing scrolllock mod to x11
- Add missing capslock, numlock, scrolllock and meta mods to android
- Add missing scrolllock mod to sdl
- Add missing capslock, numlock, scrolllock and meta mods to switch
- Add missing numlock mod to winraw
- Add missing numlock mod to uwp
2024-06-25 08:18:29 -05:00
zoltanvb 3b21273858 [Wayland] Support for mouse buttons 4&5 and horizontal wheel 2024-06-19 18:40:15 -05:00
Joseph C. Osborn 6104a9ad86 change some replay file seeks to seek+truncates in record mode 2024-06-18 13:13:59 -05:00
libretroadmin 54a24dc9d5 input_config_get_bind_string - do proper character
counting now, avoid strlcats, and have functions return
size_t value indicating how many chars were written
2024-06-16 18:07:30 +02:00
That One Seong 4220ad0b7c udev mouse buttons 4/5 fixed
According to evdev docs, mouse side buttons are simply `BTN_4/BTN_5`?
2024-06-14 19:48:33 -05:00
libretroadmin 3e2e53ba7f snprintf - if no formatting is required then use strlcpy 2024-06-13 06:48:50 +02:00
hunterk 65e8871250 restore some relative pointer stuff 2024-06-10 07:35:24 -05:00
hunterk c72f8613d8 revert abcd42777f
since it appears to be involved with a variety of input issues: https://github.com/libretro/RetroArch/issues/15757
2024-06-10 07:35:24 -05:00
zoltanvb 49aeeee1f7 Cosmetical fix (xvfk -> xfvk), #16631 2024-06-08 11:17:42 -05:00
zoltanvb a9968e9e86 Controller device reservation / preference.
For each player, 2 new options are added:
- a reservation type (no reservation, preferred, reserved)
- a reserved device name

When handling port - player assignments, reserved devices
will be assigned to the respective player port. If reservation
type is "reserved", no other device can take that port
automatically.

Reservation config option and matching function lifted from:
PatrickStankard https://github.com/libretro/RetroArch/pull/16269

Test joypad driver was extended for more tests.

Co-authored-by: Patrick Stankard <me@patrickstankard.com>
2024-06-05 18:17:54 -05:00
Reilly Brogan 7f3de64ef8 wayland: Fix Wayland appId 2024-05-30 22:54:50 -05:00
Eric Warmenhoven 52413260de iOS: default audio sync on again, also more mfi logging 2024-05-26 21:32:55 +02:00
Eric Warmenhoven 79b71179a5 macOS/iOS/tvOS: enable text-to-speech using AVSpeechSynthesizer.
Fixes #16532.
2024-05-22 13:29:48 -07:00
zoltanvb 198656eb20
Add support for multimedia keys (#16502)
Extended RETROK_ values with 18 new items, commonly found on
"multimedia" keyboards.

Mapping added for SDL, X11, Wayland, dinput, winraw keymaps.

Keyboard tester function of Remote Retropad extended to cover new keys.

One fix in Android mapping for #12986
2024-05-11 17:06:54 -07:00
zoltanvb 28189a04a4
Analog button and keyboard tester. (#16390)
Added analog button indication for those buttons that may have use for it
- primarily L2/R2, but support was added for all buttons where at least
one controller is known to support it. Added also core option to hide
mismatching inputs where analog value is not sent (like keyboard
hotkeys assigned to retropad buttons). Analog button inputs are not
set up for remote transmission, only for local test.

Analog axes have now also dynamic coloring.

Added a keyboard tester screen which includes a standard 102-key PC
keyboard + extra blocks for all RETROK_ values present in the code.
Screen adapted from DOSBox-Pure onscreen keyboard with permission.
Keyboard button A+B switches between the two screens. Keyboard
inputs are not set up for remote transmission, only for local test.
Core option added to select start screen.

Other small improvements: core reset will take new option values,
input driver applies received values more carefully.
2024-05-04 00:33:25 -07:00
Eric Warmenhoven 217c83d893
apple: improved Nintendo Switch Online controller support through mfi (#16477) 2024-04-29 18:30:34 -07:00
Barry Rowe 26a824caff
Revert of AI service changes (#16428) 2024-04-12 16:17:24 -07:00
Eric Warmenhoven 3229d645d6
Improvements to mfi rumble. (#16431)
Fixes https://github.com/libretro/RetroArch/issues/15300 and https://github.com/libretro/beetle-psx-libretro/issues/891
2024-04-11 16:48:02 -07:00
libretroadmin d36f15a867 Buildfix for CLI 2024-04-06 20:15:54 +02:00
libretroadmin a4212061d4 Cleanup some unused variables 2024-04-06 20:12:15 +02:00
Colin Kinloch cdd6aed8ec
wayland: Ignore configure events during splash (#16398)
These were causing the gl/vk surfaces to be created with the wrong size.
2024-04-02 17:55:02 -07:00
Eric Warmenhoven ecb1a638dd
Fix #16402, don't add magic mfi combination bindings (#16404)
These "support" bindings made sense in older versions of iOS/mfi
controllers that didn't have full support for L3/R3 but now just get
in the way of the ones that do.
2024-04-02 00:06:40 -07:00
Eric Warmenhoven ed33eb70a6
mfi: left/right pressure sensitive triggers (#16385) 2024-03-28 12:58:26 -07:00
Patrick Stankard 5452999b2a
Fix mouse grab behavior on Android (#16203)
* Add grab_mouse interface for Android
Makes mouse grabbing and 'Game Focus' work on Android with a real mouse
Properly handle relative mouse motion events on Android (SDK 28 and newer)

* Enable workflow_dispatch on CI Android

* Update android_mouse_calculate_deltas callsites

* Add RETRO_DEVICE_MOUSE to android_input_get_capabilities

* Use Handler to trigger UI events (toggle mouse, immersive mode) with 300ms delay

* Enable input_auto_mouse_grab by default for Android

* Handle RARCH_DEVICE_MOUSE_SCREEN in Android input driver

* Add android.hardware.type.pc to manifest

* Don't attempt to set pointer speed via scaling in android_mouse_calculate_deltas

* Keep x/y values within viewport resolution for screen mouse

* Use video_driver_get_size to get width/height

---------

Co-authored-by: Bernhard Schelling <14200249+schellingb@users.noreply.github.com>
2024-03-19 05:33:02 -07:00
zoltanvb b27233b3b8
Test input joypad driver (#16370)
* Test driver for joypad inputs

Add a new joypad input driver:
- hide driver behind #ifdef and enable it in config_params.sh
- add a new config parameter to specify the test input file
- add aux files: additional config files that cancel out any binds
  that may be present in RA config, autoconfig profile for
  test joypads, test input file that matches controller test
  sequence

* Fixes and comments for test input driver.
2024-03-18 12:07:36 -07:00
neil4 5306da72ce
Minor updates to Overlay Mouse and Lightgun (#16366) 2024-03-17 09:40:50 -07:00
neil4 cc97df732c
Add Overlay Mouse, Lightgun, and Pointer (#16343)
- When enabled, any touch inputs not in a hitbox are used to create pointing device input for the core.
- Mouse: 1-, 2-, 3-touch inputs are LMB, RMB, and MMB
- Lightgun: allows input from overlay buttons or multi-touch mappings
2024-03-16 01:56:30 -07:00
zoltanvb 89c6e23f5f
Fixes for linuxraw driver (#16330)
Triggered by #16320, a few things are adjusted:
- device name is shown correctly (this was preventing config save)
- driver name fixed in autoconfig related calls
- hotplug reconnect was not working
- some logging added
2024-03-06 09:08:21 -08:00
Bobby Smith e1cc4fb14d
Add a new "Classic (Toggle)" turbo mode (#16239) 2024-02-18 08:24:05 -08:00
sonninnos 6e6a4d8b6d
RETROK_UNKNOWN fixes and cleanups (#16250) 2024-02-18 08:23:05 -08:00
Patrick Corrigan 066a0629ff Fix actual parameter for mouse y in translate coord 2024-02-14 15:31:56 +01:00
sonninnos e8956418a8
Fix input state combos and empty binds (#16233) 2024-02-13 16:16:39 -08:00
Viačasłaŭ Chalikin 997c7453a8
Fix narrator modes (#16179)
* Fix narrator

* Refactor accessibility
2024-02-08 21:14:23 -08:00
Bobby Smith 7c3d07bf6d
Tweaks to how the "Analog to Digital Type" setting is saved (#16187) 2024-02-02 12:53:24 -08:00
sonninnos 8ad8b6bdad
Input state overflow band-aid (#16168) 2024-01-26 09:44:48 -08:00
sonninnos 8f77938767
Fix ghost input when setting RETROK_UNKNOWN (#16163) 2024-01-25 02:46:48 -08:00
sonninnos 266d3ed150
Add option for merging 'Hotkey Enable' device types (#16152) 2024-01-21 18:13:17 -08:00
Eric Warmenhoven e6eadecabd
Disable mFI secondary_joypad behavior (#16129)
Some controllers show up as both HID and mFI. In that case we probably
want to let the user pick which driver to use, rather than balance
across them.

This fixes issues with the analog stick moving in the wrong direction
on the y axis.
2024-01-18 09:33:16 -08:00
Colin Kinloch a2057d6069
input/wayland: Use unaccelerated pointer motion (#16074)
This fixes small mouse movements being rounded down to 0.

Fix "Mouse cursor appears to have a deadzone on Wayland" (#16015)
2024-01-04 15:30:47 -08:00
hunterk 6513a023b8
Add a setting to allow turbo d-pad directions (#16006)
* Add option to allow turbo d-pad inputs

* fix macro tab and update comment
2023-12-13 18:36:09 -08:00
zoltanvb fd04c8ca57
Rebase of wakira's wp_fractional_scale_v1 support (#15965)
A rebase of earlier PR https://github.com/libretro/RetroArch/pull/15355
No changes added (except for one log).
2023-11-30 03:29:38 -08:00
Eric Warmenhoven d8c444d44d
iOS - Default to not enabling keyboard gamepad (#15340) (#15955) 2023-11-26 19:34:45 -08:00
revvv f188b7a824
Wii/Wii U: Fix 3 USB controllers. See #7015 (#15938)
Fixes commit a4b934b which did not update all array indices.
2023-11-22 08:49:12 -08:00
zoltanvb c42498e531
Warning fixes. (#15877) 2023-11-06 00:04:17 -08:00
Andrew Gorbaty c9de6e5932
fix (#15874) 2023-11-05 15:31:43 -08:00
Joe Osborn 862bebf687
(Emscripten) Modularize the JavaScript and clean up the web build (#15688)
* Increase emscripten stack size and decrease path size to fix emscripten builds broken since de45fc2

* use modularize flags for better-behaved javascript output

* makefile and loader changes

* use specialHTMLTargets to support modular access to canvas

* bind key events to canvas, not document

This way focus means focus and we can have multiple RA instances in
one page.

* Work around an emscripten bug in strict mode

* (Emscripten) Use console.error() for error messages

* increase asyncify stack size

* Fix `-lm` flag-related compile warnings in emscripten

---------

Co-authored-by: Rob Loach <robloach@gmail.com>
2023-11-02 13:25:50 -07:00
Eric Warmenhoven dfeeb031fe
Fix mouse support for melondsds on osx (#15837) 2023-10-30 15:33:17 -07:00
GavinDarkglider 5356afc750
Minor fixes to udev input drivers. Add support for canary builds to lakka updater stuff (#15818)
* Input: Udev: Fix touch support building against older kernel headers

* Input: Udev: Fix Touch Deep Debug compile issues

* Input: Joypad: Udev: Joypad: Add Change detection for udev events

This is handy with controllers like the Nintendo Joycons that have a daemon
app in the background to handle combining them into one controller(Joycond)

Since the device was already added, but joycond clamped permissions on evdev
retroarch was never updating the controller input change, this fixes that issue.

Note: Needs a patch in joycond as well, to send change uevent.

This shouldnt cause any issues with other controllers, as the kernel probably
will never send change events for these device types.

* Lakka: Add canary builds to updater
2023-10-25 08:19:00 -07:00
Mike Erickson 7df3ca3064
fix:xinput disconnect lost gamepad (#15819)
Co-authored-by: ChenX <maple6@vip.qq.com>
2023-10-24 00:28:10 -07:00
Joe Osborn 2baf9ec7e0
Enqueue replay record/playback until next frame (#15751)
* Enqueue replay record/playback until next frame

This fixes a bug where stdin commands activated via polling would
trigger replay record/playback in the middle of a frame, then input
checking would pull from them before the next frame came around---it
only makes sense to change the active replay in between frames, not
during them.

* fix comment syntax
2023-10-04 00:53:51 -07:00
sonninnos ea86be0a2b
Fix menu analog stick navigation (#15740) 2023-09-26 05:30:15 -07:00
sonninnos cf2ee94c9f
Correction for not showing mouse cursor with overlay (#15687) 2023-09-11 17:28:33 -07:00
sonninnos ea1bdade61
Allow more keyboard actions with menu osk (#15662) 2023-09-01 15:48:55 -07:00