259 Commits

Author SHA1 Message Date
zoltanvb
ab3b175848
Restore missed absolute mouse conversion. (#17343) 2025-01-05 03:50:47 +01:00
zoltanvb
fe1575bc54
Input sanitization, wayland enhancement and overlay (#17308)
Adapt the sanitized pointer handling, discussed at #17196 :

Overlay "driver" specific changes:

- make sure pointer position is always within [-0x7fff,0x7fff] by using the confined wrapper
- enable pointer offscreen query
- report -0x8000 for lightgun if pointer is at the edge
- align lightgun offscreen reporting and button ID conversion with other drivers

Android 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
- report same value for all ports when querying mouse and lightgun
- fill missing lightgun support, with fixed button map

Udev and X11 driver specific changes:

- simulate max. 3 touches instead of 1 using different mouse buttons

Wayland driver specific changes:

- integrate touch input better to the overall handling (enabling overlay usage with mouse)
- simulate max. 3 touches instead of 1 using different mouse buttons
2024-12-29 18:57:27 +01:00
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
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
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
Viačasłaŭ
3019b926c2
Fix typos (#17068) 2024-10-01 17:36:33 -07: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
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
sonninnos
6e6a4d8b6d
RETROK_UNKNOWN fixes and cleanups (#16250) 2024-02-18 08:23:05 -08:00
zoltanvb
c42498e531
Warning fixes. (#15877) 2023-11-06 00:04:17 -08: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
libretroadmin
e407d9a7b2 (Udev) style nits/cleanups 2023-08-16 15:45:50 +02:00
sonninnos
b92540b24d (udev) Log mouse devices in info level 2023-06-18 19:43:38 +02:00
Grisly Glee
4202f8650d
Fix trivial signedness warnings (#15377)
* Fix trivial signedness warnings

* Followup on trivial signedness warnings
2023-06-14 04:43:11 +02:00
anaximan
bd59d35498 Fixed the corner tapping toggle 2023-06-01 15:56:09 +02:00
anaximan
d7a4ee6918 Added clarification for the trackball and auto reloading to VMouse options. 2023-06-01 15:56:09 +02:00
anaximan
e301ddf29f Compilation fixes when UDEV_TOUCH_SUPPORT is undefined 2023-06-01 15:56:09 +02:00
anaximan
516de17de0 Added touch-related options to RetroArch Input settings menu. Added trackball mode. 2023-06-01 15:56:09 +02:00
anaximan
59651914cd Fixed some typos, code cleanup, and C89 compatibility 2023-06-01 15:56:09 +02:00
anaximan
42c0c7ee2b First working version of udev driver with touchscreen support and gestures. 2023-06-01 15:56:09 +02:00
Nicolas Adenis-Lamarre
7e2e87ad4a
fix udev guns input when id_mouse is not id_joystick (#15026)
the commit cfe9d60f5100d3d0a1d6119d156b91dd66ae8195
introduces an issues on guns inputs for drivers udev, dinput, winraw and x11.
A local variable called "port" is redefining the function argument variable and
is causing bad calls in subsequent function calls.

In short, functionnally, if you have only 1 gun and 1 pad on your system, all works.
As soon as you use several pads or several guns, you may have issues,
because subsequent calls use the joystick port instead of the device port as argument.

IMPORTANT NOTE : this fix was done originally for the batocera project which uses only the udev driver,
this is why it is focused on udev only.
The same thing must be done and tested for dinput, winraw and x11.
I've not the ability to test them.

Signed-off-by: Nicolas Adenis-Lamarre <nicolas.adenis.lamarre@gmail.com>
2023-02-26 15:52:20 +01:00
libretroadmin
7ebab640d7 Cleanups/style nits 2023-02-23 13:15:14 +01:00
libretroadmin
963bb92f95 (Input) Style nits/code simplifications 2023-02-19 06:30:14 +01:00
neil4
b98c53ddb7
Improve haptic feedback for input overlays (#14517)
Repurpose vibrate_on_keypress to enable device's standard keypress feedback on overlay key/button state changes

- Add keypress_vibrate function ptr to input_driver_t (only implemented on Android for now)
- (Android) Remove APP_CMD_VIBRATE_KEYPRESS
- (Android) Add doHapticFeedback, called directly to avoid latency
2022-10-16 09:58:09 +02:00
LibretroAdmin
d0c6dfee0b Cleanup bitmask setting 2022-10-05 18:43:58 +02:00
StormedBubbles
53d0e161e1
Fix lightgun scaling on Y axis 2022-06-16 22:16:32 -04:00
Dystopian
0afdb2a0cf
Improve udev logging (#13549) 2022-01-29 10:57:38 +01:00
arpruss
e5e6f343ac
convert abs mouse from screen to viewport coordinates; fix relative m… (#13258)
* convert abs mouse from screen to viewport coordinates; fix relative mouse code to work in screen mode

* C89 compatibility

* revert accidental include
2021-12-18 17:52:27 +01:00
Jean-André Santoni
6a99832a4d
Lakka: Patch to fix keyboard typing
Upstream of patch used by Lakka at build time
1943ad296e/packages/libretro/retroarch/patches/retroarch-01-xkb-fix.patch
2021-11-18 00:36:11 +01:00
twinaphex
619398bbe4 Backport parts of 73c0760236 2021-11-09 23:12:57 +01:00
grant2258
1ae36ee9a7
udev fix dolphinbar and safeguard against not adding devices with no mouse or touch buttons detected (#13143)
* udev fixes

* updates

* small updates

* fix condition

Co-authored-by: grant2258 <you@example.com>
2021-11-05 23:59:17 +01:00
Jamiras
088aa7dcb9
add github action for c89 build (#13186)
* add retroarch.yml

* fix c89 errors

* attempt to add dependencies

* update comments
2021-11-05 00:05:13 +01:00
gblues
1ef78d3e3d
Any pad can control the menu (#13173)
* Any pad can control the menu

== DETAILS
I am not sure I've quite got it so that any pad can *open* the
menu, but I do have it so any pad can control it.

- split out the input processing into a separate method
- track down and squish some hairy bugs that boiled down to
  bad pointer math
- it looks like `menu_driver.c` has a mix of line endings, so I
  ran it through `dos2unix` so it has consistent line endings
  again.
- verified that this change did not impact actual cores

* optimize out cumulative_bits

* Incorporate PR feedback

Many thanks to @jdgleaver for providing these optimizations.

* apply one more optimization
2021-11-03 16:32:15 +01:00
grant2258
6e8a3945d5 add extra abs check for dolphinbar 2021-10-18 03:43:49 +01:00
grant2258
1fca7507dc cleanup 2021-10-16 19:36:35 +01:00
grant2258
a68e5205bd add relative left mouse button when pointer device is not abs 2021-10-16 19:26:40 +01:00
grant2258
a327fdb6fe
add mouse relative check and set appropiatley to fix issue (#12994)
* re add this after failed rebase

* update

* temp fix for device friendly naming as it is for testing

* add device friendly names in the appropiate place

* add/remove hotplug dev to ra input mouse port list

Co-authored-by: grant2258 <you@example.com>
2021-09-24 18:31:20 +02:00
jdgleaver
12f787547c
Add workaround to fix keyboard input when using x11+udev (#12981) 2021-09-13 18:02:40 +02:00
grant2258
88b15c1b1d this function is called more than once dont use static 2021-09-12 20:58:49 +01:00
Ryan C. Gordon
9a6faa3ddd
udev_input.c: Look for "ID_INPUT_KEY", not "ID_INPUT_KEYBOARD"
This fixes programs using /dev/uinput to create a virtual keyboard failing
to be detected on startup. Usual symptom is some sort of GPIO-based
controller that looks like a keyboard to the OS and can control
EmulationStation, but fails to work in-game unless you restart the program
while the game is running (in which case udev_input.c's hotplug code, which
was using the correct key, would pick it up).
2021-08-19 16:00:57 -04:00
sonninnos
bd3533f05d Friendly names for mice where available 2021-08-06 00:21:17 +03:00
amtz
d0612f906d Limit udev device scan to subsystem 'input'
This change makes the call to 'udev_enumerate_scan_devices' much faster.
In particular, for some bluetooth devices, this function may implicitly
read its battery's virtual file 'uevent', e.g.

/sys/devices/*/usb1/1-1/*/bluetooth/hci0/*/power_supply/hid-*-battery/uevent

Reading this file may (for unknown reasons) block up to 10 seconds.
Since udev_enumerate_scan_devices is called 4 times (for keyboard,
mouse, touchpad, and joypad) during startup this may cause a
considerable delay.

Limiting the scan to subsystem 'input' yields the same devices but makes
the scan faster and does not read 'uevent' of the input controller's
power_supply.
2021-08-02 13:17:00 +02:00
Grant
d6a1c21fe1 udev fixes] 2021-06-26 23:09:47 +01:00
Grant
c73592d379 skip mouse with no button errors and keep the rest 2021-06-22 23:00:50 +01:00
Grant
4ba0ba4c70 fix up logging that can confuse users 2021-06-22 22:06:19 +01:00
Autechre
bd937eb49f
Merge pull request #12536 from grant2258/udev
only add mouse if it has buttons and add vebose device friendly names
2021-06-22 17:23:19 +02:00
Autechre
6986caed5b
Merge pull request #11388 from pjft/dual-lightgun
Change udev driver for dual lightgun support in X11
2021-06-21 18:06:35 +02:00
Grant
6e2709d62a cleanup 2021-06-19 08:47:35 +01:00
Grant
eef86d5f72 fix game focus mode 2021-06-19 07:59:06 +01:00
Grant
863aaa5b9d Revert "fix game focus mode on udev as well"
This reverts commit 54eed6341862be97e1a40ba19984bc666f368592.
2021-06-19 07:44:02 +01:00