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>
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
* convert abs mouse from screen to viewport coordinates; fix relative mouse code to work in screen mode
* C89 compatibility
* revert accidental include
* 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
* 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>
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).
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.