Commit Graph

96 Commits

Author SHA1 Message Date
Nathan Strong
5da1cd08ff Unify the HID driver architecture
== DETAILS
When I first implemented the Wii U HID architecture, I ended up
having to design my own implementation because, at the time, I did
not have a way to read the HID device string to allow the existing
code to successfully detect the gamepad.

After spending some time experimenting, I've figured out how to
do this. And that means I can better align the HID driver with other
platforms.

change summary:

- create a single state structure for all three sub-types of wiiu pads
  (kpad, wpad, and hid)
- eliminate confusing duplicate pad lists
- eliminate confusing duplicate HID pad drivers (ds3, gamecube
  adapter, etc)
- ensure the ds3 driver still works
2021-10-05 09:23:08 -07:00
gblues
78858a9474
Fix analog inputs on HID devices (#12991)
== DETAILS

File this one under "I'm not sure how this ever worked."

I mean, it did (in 1.8.8). I'm not sure what changed, but ultimately what I did was
a bunch of comparative testing against 1.8.8:

- I confirmed the packet data was still being read successfully
- I confirmed that the axis value being passed into pad->get_axis() had
  not changed
- I confirmed the work done in `gamepad_read_axis_data()` was working the same
  between 1.8.8 and master

With the only difference between 1.8.8 and current being the return value from
`gamepad_read_axis_data()`, I just rewrote the method to work properly, and
also fixed up the default axis mapping.

I tested this with a sixaxis controller and GCA, configuring the analog-to-digital
control override to use the right stick.
2021-09-15 03:30:05 +02:00
Nathan Strong
feb4f266fa WIIU: Fix L3/R3 buttons
== DETAILS
After a bisect, the culprit was changing the gamepad interface from
returing a single button (bool) to multiple (int16).

The issue is that the Wii U gamepad (and presumably the Pro controller too)
have more than 16 buttons, which means some buttons get lost. Notably, L3 (18)
and R3 (17).

The solution: use int32 instead of int16.

I did a test build and confirmed that this change restores L3/R3 functionality
with the gamepad. Don't have a pro controller to test, but it should work too.
2021-08-07 23:23:33 -07:00
twinaphex
2fbcc99b24 RARCH_LOG_BUFFER - doesn't need early return 2021-04-04 20:05:00 +02:00
twinaphex
76ddfa022e Get rid of RARCH_LOG in wayland_common - gets rid of warning/error 2021-03-22 23:35:14 +01:00
jdgleaver
3fa1166ec4 (udev/linuxraw/wayland) Fix return key keyboard input 2020-09-29 11:23:35 +01:00
twinaphex
a82bff2055 (Wayland) Fix serious warnings - input struct pointer was being passed
to function that requires gfx struct pointer
2020-08-31 19:56:03 +02:00
twinaphex
1c0f79442b Cleanups 2020-08-28 20:40:06 +02:00
twinaphex
7c61a6527f (Wayland) Reorder structs, alignment 2020-08-28 20:38:25 +02:00
twinaphex
5166eebcaf for loop cleanups - use space after 'for' 2020-08-19 03:06:22 +02:00
gblues
4555481863 WIIU: Fix touchscreen mouse emulation
== DETAILS
The way the mouse emulation worked was to simply return a 3rd axis from the
gamepad, which the polling code updates with the touch state in real time.

Well, the code that figures out if it's a positive or negative axis was
failing because it didn't see that 3rd axis as valid. So, I added values
which allow it to be seen as valid, and voila! the touch screen input
works again.

== TESTING
Tested locally using "Beneath a Steel Sky" in ScummVM.
2020-08-13 23:31:17 -07:00
twinaphex
c3d8c8661f Buildfixes for C89_BUILD --disable-menu 2020-08-06 03:04:21 +02:00
twinaphex
89567dae5d (input hid) Change back to original code 2020-07-28 12:42:33 +02:00
twinaphex
dc14f4150d Cleanup 2020-07-25 00:04:25 +02:00
twinaphex
d92280e20e Cleanups 2020-07-25 00:02:26 +02:00
twinaphex
b9cb8c8890 (device_null) Cleanups 2020-07-24 23:57:15 +02:00
twinaphex
9d76412715 (WiiU) Another buildfix 2020-07-24 23:55:06 +02:00
twinaphex
a49b5b7129 Cleanups 2020-07-24 22:23:52 +02:00
twinaphex
08776496ed Cleanups 2020-07-24 22:12:33 +02:00
twinaphex
0003074cfe (Input HID) Cleanups/buildfixes 2020-07-24 19:11:20 +02:00
twinaphex
1b24c37919 (WiiU) More build fixes 2020-07-24 19:01:35 +02:00
twinaphex
cd2d4f2248 Revert "Remove input_x11_common.c and merge into x11_input.c"
This reverts commit a0948c1d9d.
2020-07-20 01:46:03 +02:00
twinaphex
a0948c1d9d Remove input_x11_common.c and merge into x11_input.c 2020-07-20 01:39:55 +02:00
twinaphex
d97e590aaf Reimplement multi button state functions 2020-07-19 03:18:12 +02:00
twinaphex
08ad00f5d3 Start preparing for being able to grab multiple buttons at the same time 2020-07-18 19:51:14 +02:00
twinaphex
e8e9a7b1d3 Get rid of multiple definition of wayland show mouse function 2020-07-17 13:59:13 +02:00
twinaphex
748e3dccf2 (wayland) buildfixes 2020-07-14 16:20:15 +02:00
twinaphex
b7c2cbc6b2 Move flush_wayland_fd to input/common/wayland_common.c 2020-07-14 16:17:43 +02:00
twinaphex
3d4a13e5b7 (Wayland) Add missing header 2020-07-14 16:10:01 +02:00
twinaphex
3cb1b7b4bb (Wayland) Move more code 2020-07-14 16:09:13 +02:00
twinaphex
646d627a6c Move more Wayland code 2020-07-14 16:04:10 +02:00
twinaphex
1f4a27abba Split up wayland code 2020-07-14 15:56:52 +02:00
twinaphex
88f742894d Move wayland header to input/common 2020-07-14 14:32:37 +02:00
twinaphex
5790f13798 Add comments 2020-07-07 03:49:54 +02:00
twinaphex
74cd84399f Cleanups - Replace '== NULL' 2020-01-30 16:47:33 +01:00
jdgleaver
3057c31798 (Menu Input) Add mouse/touchscreen gesture support + full gesture support for XMB 2019-09-30 16:55:41 +01:00
Ash Logan
258b9391b7 hid: Uniquely name (more) symbols
5bf8293 missed a few, all good!
2019-05-28 09:06:31 +10:00
twinaphex
e5d13bd32a Rename input_common.c to input_hid_common.c 2019-05-27 15:01:36 +02:00
twinaphex
5bf829339d (HID) Uniquely name symbols 2019-05-27 14:32:40 +02:00
orbea
e062b98088 Remove trailing blank lines.
find . -type f -exec sed -i '${/^[[:space:]]*$/d;}' {} \+
2019-01-17 19:39:38 -08:00
orbea
bfc366decc Squeeze extra blank lines with cat(1).
Example:

find . -type f -iname '*.c' | while read -r i; do
  cat -s "$i" > "$i.new"
  mv "$i.new" "$i"
done
2019-01-08 11:04:58 -08:00
gblues
f378e2bfcf Fix WaveBird support for the Wii U GCA
== DETAILS
Thanks to JacobM at GBAtemp for helping me test this.

The WaveBird wasn't being properly picked up due to the port status byte
being different from normal GC controllers. (Why? who knows. Probably
so games could detect the WB and show WB-specific OSDs).

This implementation should be more future-proof, to handle any other
unexpected status bytes.
2018-04-25 21:28:33 -07:00
gblues
f6b33b1d30 missing file 2018-04-24 06:37:02 -07:00
gblues
1d84c0eca1 Fix analog for DS3, plus some cleanups
== DETAILS

- DS3 analog wasn't working mainly because I forgot to actually declare the
  axes in input/input_autoconfig.c when declaring the pad. Whoops.
- I also moved the axis decoding logic to a more central place, because it
  clearly is not Wii U specific.
- Removed some dead commented-out code

== TESTING

Can use analog inputs on both GCA and DS3. Tested in Mario 3 on Nestopia core.

Haven't tested with any actual analog games, but I did confirm via logging
that the correct ranges are produced.
2018-04-23 23:22:27 -07:00
gblues
f7135bcee6 Fix analog reading on GCA
== DETAILS
After a little trial and error, I got analog input working for the
Wii U GC adapter.

DS3 might work, but it's untested.
2018-04-22 23:47:07 -07:00
gblues
ed742c48e0 Fix hotplugging
== DETAILS
So, it turns out that there *is* a autoconfig disconnect handler. Took digging
through tasks/task_autodetect.c to find it!

So, I added a call to the handler when the pad gets disconnected.

This seems to solve the problem of the pad not disappearing from the menu.

(At the very least, the user's pad index reverts to "none" which is still
an improvement)

== TESTING
Tested manually, made sure it didn't crash or leak slots.
2018-04-22 17:34:20 -07:00
gblues
0c92fab0b9 Fix GameCube button detection
This should fix the issue where R/L buttons didn't register when doing
input detection.

This also brings the GC pad in line with the rest of the gamepads in
input_autodetect_builtin.c.

Also fixed a really stupid bug that was part of why analog inputs aren't
being read. Analog still isn't working, mind, but it's a lot closer to
working now that it's actually getting down into the pad driver level!
2018-04-20 00:00:33 -07:00
gblues
53738e4a0d Allow Wii U GCA to work without 2nd cable attached
=== DETAILS

So, the GCA has 2 USB connections; one is the data connection, and the
second is used to drive rumble.

Due to a driver bug, if the second cable wasn't attached, the pads wouldn't
get detected.

I fixed that bug.
2018-04-18 23:12:45 -07:00
gblues
4cd301bd92 Add pad unregistration
== DETAILS

I think this will fix the problem with duplicate pads--pads weren't properly
de-initializing and registering as disconnected. When a pad is disconnected,
the slot should properly release now.
2018-04-14 21:30:44 -07:00
gblues
6ab91a422e Small cleanup to adapt to upstream code changes
retro_bits_t turned into input_bits_t and there were parts of my
code that needed to update.

== TESTING
No idea if upstream changes broke anything, but it compiles cleanly
now.
2018-04-14 14:34:13 -07:00