summaryrefslogtreecommitdiffstats
path: root/src/input_common (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-01-08input_common: Handle errors on TAS scriptsgerman771-7/+24
2022-01-07input_common: Fix udp motion not automapping to both sidesgerman771-8/+16
2022-01-07yuzu: Add controller hotkeysgerman773-4/+7
2022-01-07input_common: Use accelerometer data for mappinggerman771-2/+10
2021-12-17[input_common] Move variable declaration closer to usagevperus1-2/+2
MSVC supplied with VS2022 generates "warning C4189: 'CALIBRATION_THRESHOLD': local variable is initialized but not referenced" which is treated as an error. Circumvent it by moving constexpr variable directly into body of lambda function.
2021-12-14input/SDL: Update SDL hintsValeri1-3/+4
SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED is no longer needed thanks to new default in SDL 2.0.18. SDL_HINT_JOYSTICK_HIDAPI_XBOX is reported to cause conflicts with native driver Xbox driver on Linux, and Xbox controllers don't benefit from hidapi anyways.
2021-12-14common/input: Avoid numerous large copies of CallbackStatusLioncash2-35/+51
CallbackStatus instances aren't the cheapest things to copy around (relative to everything else), given that they're currently 520 bytes in size and are currently copied numerous times when callbacks are invoked. Instead, we can pass the status by const reference to avoid all the copying.
2021-12-14input_poller: Add missing override specifiersLioncash1-20/+19
2021-12-14input_mapping: Amend specification of parametersLioncash1-14/+14
param tags are supposed to specify the parameter name without any quoting. Silences several -Wdocumentation warnings.
2021-12-14input_poller: Remove several unnecessary @param tagsLioncash1-106/+106
Silences quite a bit of -Wdocumentation warnings, given the @param tag is only intended to be used to identify function parameters, not what it contains.
2021-12-13tas_input: Avoid minor copies in Read/WriteCommandButtons()Lioncash1-2/+2
We don't need to copy the whole pair
2021-12-13tas_input: Remove unnecessary semicolonLioncash1-1/+1
Resolves a -Wextra-semi warning
2021-12-13tas_input: Execute clear() even if emptyLioncash1-3/+2
clear() when empty is simply a no-op, so we can get rid of the check here and let the stdlib do it for us.
2021-12-13tas_input: Remove unnecessary includesLioncash1-2/+2
Gets rid of indirect includes and includes only what the interface needs.
2021-12-13tas_input: std::move strings into vectorLioncash1-21/+24
While we're in the same area, we can also avoid performing std::stoi in a loop when it only needs to be performed once.
2021-12-13tas_input: Use istringstream over stringstreamLioncash1-2/+2
This is only using the input facilities, so we don't need to use the fully-fleged stringstream.
2021-12-13tas_input: Use u8string_view instead of u8stringLioncash2-6/+7
Same behavior, but without the potential for extra allocations.
2021-12-13tas_input: Remove unused std::smatch variableLioncash1-2/+0
This also means we can get rid of the dependency on <regex>
2021-12-13tas_input: Amend -Wdocumentation warningsLioncash2-28/+30
Parameters shouldn't have the colon by their name.
2021-12-13tas_input: Make TasAxes enum an enum classLioncash2-5/+14
Prevents these values from potentially clashing with anything in other headers.
2021-12-13input_engine: Fix typo in TriggerOnAxisChange() parameter nameLioncash1-1/+1
2021-12-13input_engine: Simplify PreSet* family of functionsLioncash2-24/+14
We can make use of try_emplace() to insert values only if they don't already exist.
2021-12-13input_engine: Avoid redundant map lookupsLioncash1-16/+24
We can use iterators to avoid looking up into maps twice in the getter functions. At the same time we can also avoid copying the ControllerData structs, since they're 264 bytes in size.
2021-12-13input_engine: Remove left-over namespace qualifiersLioncash1-3/+3
These types are part of the InputCommon namespace.
2021-12-13input_engine: Iterate by reference rather than by value where applicableLioncash1-10/+10
Avoids creating copies of several object instances (some of which being over 100 bytes in size).
2021-12-13input_engine: Take BasicMotion by const reference with SetMotion() and TriggerOnMotionChange()Lioncash3-6/+7
Copies the BasicMotion instance once instead of twice.
2021-12-13input_engine: std::move InputIdentifier in SetCallback()Lioncash1-1/+1
Allows avoiding std::function allocations.
2021-12-13input_engine: Pass LedStatus by const referenceLioncash2-2/+2
Avoids copies where reasonably applicable
2021-12-13input_engine: Pass VibrationStatus by const reference in SetRumble()Lioncash6-8/+10
Avoids creating copies of the struct where not necessary.
2021-12-13input_engine: std::move engine name where applicableLioncash15-29/+29
We can allow the name to be moved into, allowing allocations to be avoided.
2021-12-13input_engine: Remove callback clearing in constructorLioncash1-3/+1
The callback map is a member variable, so this will always be empty on initial construction.
2021-12-13input_engine: Remove unnecessary semi-colonsLioncash1-6/+6
Silences -Wextra-semi warnings
2021-12-13input_engine: Remove unnecessary returnLioncash1-3/+1
This is a void function, so it doesn't need this.
2021-11-30input_common: Fix error with thread nameNarr the Reg1-2/+1
2021-11-29Revert of b01aa72vperus1-35/+39
Caused worker_thread to be stuck in Stage1Completed state until job's destruction.
2021-11-29[input_common] Add completion test for CalibrationConfigurationJobvperus1-8/+13
2021-11-26input_common: Fully implement UDP controllersNarr the Reg5-35/+334
2021-11-25input_common: Move button names to the frontendgerman7710-49/+55
2021-11-25input_common: Fix SDL controller with inverted axisgerman772-24/+8
2021-11-25kraken: Address comments from reviewgerman7712-26/+14
Fix compiler bug
2021-11-25core/hid: Improve accuary of mouse implementationgerman772-8/+14
2021-11-25core/hid: Fully implement native mousegerman772-6/+32
2021-11-25input_common: Allow keyboard to be backwards compatiblegerman776-26/+84
2021-11-25core/hid: Improve accuracy of the keyboard implementationgerman774-4/+68
2021-11-25input_common: Fix motion from 3 axisgerman771-0/+2
2021-11-25core/hid: Prevent Emulated controller from flapping with multiple inputs devicesgerman772-23/+12
2021-11-25core/hid: Fully emulate motion from buttongerman772-1/+22
2021-11-25second commit lion reviewgerman777-21/+21
2021-11-25settings: Fix Debug controller type optionsgerman775-49/+52
2021-11-25kraken: Address comments from reviewgerman7715-223/+254
start lion review
2021-11-25input_common: Revert deleted TAS functionsgerman772-18/+19
2021-11-25input_common: Fix GC adapter initializationgerman771-12/+12
Fix GC controller
2021-11-25input_common: Fix UDP uuidgerman772-1/+11
2021-11-25input_common: Add multiple vibration curvesgerman771-14/+19
2021-11-25core/hid: Rework battery mappingsgerman772-4/+37
2021-11-25input_common: Add manual update options to input devicesgerman773-0/+37
2021-11-25settings: Fix mouse and keyboard mappingsgerman774-1/+22
2021-11-25kraken: Address comments from reviewgerman774-5/+9
review fixes
2021-11-25service/hid: Fix gesture inputgerman772-2/+29
2021-11-25configuration: Migrate controller settings to emulated controllergerman771-0/+10
2021-11-25core/hid: Fix rumble too strong at 1%german771-1/+19
2021-11-25core/hid: Only signal when neededgerman775-23/+84
2021-11-25kraken: Fix errors from rebase and format filesgerman7710-27/+24
2021-11-25core/hid: Add output devicesgerman7711-29/+117
2021-11-25input_common: Rewrite main and add the new driversgerman772-49/+330
2021-11-25input_common: Remove obsolete filesgerman775-444/+0
2021-11-25input_common: Rewrite SDLgerman776-1757/+950
2021-11-25input_common: Rewrite udp clientgerman775-441/+54
2021-11-25input_common: Rewrite tas inputgerman775-840/+2
2021-11-25input_common: Rewrite gc_adaptergerman778-827/+848
2021-11-25input_common: Rewrite touchgerman773-0/+99
2021-11-25input_common: Rewrite mousegerman777-751/+217
2021-11-25input_common: Rewrite keyboardgerman776-488/+53
2021-11-25input_common: Move touch and analog from button. Move udp protocolgerman7710-132/+172
2021-11-25input_common: Create input poller and mappinggerman776-0/+1305
2021-11-25input_common: Create input_enginegerman772-0/+585
2021-10-23Revert "input_common: Fix data race on GC implementation"Fernando S2-120/+115
2021-10-20input_common: Fix VS2022 compilation errorsameerj1-39/+35
2021-10-11input_common/sdl: Fix joystick rangegerman771-3/+4
2021-09-24general: Update style to clang-format-12ameerj1-2/+2
2021-09-18UI: Relocate tas menu and add brief descriptiongerman773-55/+83
2021-09-18input_common/tas: Document the main classgerman773-3/+112
2021-09-18input_common/tas: Add swap controllergerman773-18/+74
2021-09-18input_common/tas: overwrite file dialoggerman772-19/+6
2021-09-18input_common/tas: Fallback to simple updateMonsterDruide12-73/+33
2021-09-18config: Move TAS options to it's own menugerman773-91/+130
2021-09-18core: Hacky TAS syncing & load pausingMonsterDruide12-93/+107
To keep the TAS inputs synced to the game speed even through lag spikes and loading zones, deeper access is required. First, the `TAS::UpdateThread` has to be executed exactly once per frame. This is done by connecting it to the service method the game calls to pass parameters to the GPU: `Service::VI::QueueBuffer`. Second, the loading time of new subareas and/or kingdoms (SMO) can vary. To counteract that, the `CPU_BOOST_MODE` can be detected: In the `APM`-interface, the call to enabling/disabling the boost mode can be caught and forwarded to the TASing system, which can pause the script execution if neccessary and enabled in the settings.
2021-09-18input_common/tas: Base playback & recording systemMonsterDruide17-0/+722
The base playback system supports up to 8 controllers (specified by `PLAYER_NUMBER` in `tas_input.h`), which all change their inputs simulataneously when `TAS::UpdateThread` is called. The recording system uses the controller debugger to read the state of the first controller and forwards that data to the TASing system for recording. Currently, this process sadly is not frame-perfect and pixel-accurate. Co-authored-by: Naii-the-Baf <sfabian200@gmail.com> Co-authored-by: Narr-the-Reg <juangerman-13@hotmail.com>
2021-09-10input_common: Enable steam controllers and 8 player supportgerman772-7/+7
2021-09-07input_common: Add alternative string for joyconsgerman771-2/+16
2021-08-12input_common: Disable sdl raw input modegerman771-0/+3
2021-08-08input_common: Improve SDL joystick and hide toggle optiongerman773-28/+68
2021-08-07input_common: Fix data race on GC implementationRodrigo Locatti2-115/+120
2021-07-20input/sdl_impl: fix rumble support on DualSense. (#6683)Nicolas Jallamion1-2/+2
- value return can be different 0, is not error is normal, error is only -1.
2021-07-17input_common: Fix mouse panning behaivourgerman771-1/+1
2021-07-16sdl_impl, emu_window: Remove clang ignorelat9nq1-8/+0
Fixed upstream by libsdl-org/SDL@25fc40b0bd44c484051064bc6b945ea9943f88dd
2021-07-16input_common: Make button threshold customizablegerman771-3/+3
2021-07-15input_common: Support SDL toggle buttonsgerman771-4/+51
2021-07-11input_common: Fix build with sdl disabledgerman771-2/+2
2021-07-09configure_input: Use u8 for mouse sensitivityameerj1-1/+1
2021-07-08general: Code formatting improvementslat9nq1-2/+2
Slight improvements to readability. Dropped suggestions for string_view (settings.h:101), pass by value (settings.h:82), reverting double to a float (config.cpp:316), and other smaller ones, some out of scope. Addresses review feedback. Co-authored-by: Ameer J <52414509+ameerj@users.noreply.github.com>
2021-07-06CMakeLists: Treat -Wsign-compare as an error on GCC/ClangMorph1-3/+0
Treats (un)signed comparison mismatches as errors to be consistent with MSVC
2021-07-05input_common: Add missing modifier callback to analog from buttongerman771-0/+1
2021-06-29core, input_common: Miscellaneous fixeslat9nq1-1/+2
bcat: Fix settings access telemetry_session: Fix settings accesses So this is what I get for testing with the web service disabled. touch_from_button: Fix settings access for clang
2021-06-28general: Make most settings a BasicSettinglat9nq3-5/+5
Creates a new BasicSettings class in common/settings, and forces setting a default and label for each setting that uses it in common/settings. Moves defaults and labels from both frontends into common settings. Creates a helper function in each frontend to facillitate reading the settings now with the new default and label properties. Settings::Setting is also now a subclass of Settings::BasicSetting. Also adds documentation for both Setting and BasicSetting.
2021-06-28input_common: Remove #pragma warning directives for external headersMorph2-14/+0
2021-06-28input_common: Enforce C4242Morph1-12/+4
2021-06-24Add missing includes (#6521)Chloe2-0/+3
* Add missing includes * Add array
2021-06-22input_common/mouse_input: Fix data raceRodrigo Locatti2-12/+10
Fix data race using std::jthread and std::stop_token.
2021-06-03cmake: General improvements to libusb linkinglat9nq1-2/+1
Delegates libusb external communication to externals/CMakeLists.txt Ensures an interface library `usb` for every pathway input_common just links to the `usb` library now externals/libusb/CMakeLists.txt sets variables to override SDL2's libusb finding Other minor cleanup
2021-05-30input_common: Analog button, use time based position instead of frequent updatesgerman772-73/+123
2021-05-23input_common: Add dual joycon supportgerman772-60/+258
2021-05-15input_common: Implement SDL motiongerman774-3/+159
2021-05-15input_common: Fix crash when controller disconnectsgerman771-1/+3
2021-05-15input_common: Rewrite sdl analog mappinggerman771-25/+25
2021-05-13input_common: Sanitize motion datagerman771-0/+23
2021-05-03input_common: Release mouse buttons on out of focusgerman772-1/+16
2021-04-27input_common: Reset GC sticks center by measuring multiple packetsgerman772-2/+7
2021-04-24hid: Implement SevenSixAxis and ConsoleSixAxisSensorgerman771-2/+8
2021-04-18general: Ignore implicit-fallthrough for SDL.hlat9nq1-0/+10
SDL 2.0.14 introduces an incompatibility with Clang, causing it to trigger -Wimplicit-fallthrough even though it is marked. Ignore it for now, with a comment mentioning why this is needed.
2021-04-18cmake: Use SDL 2.0.14 and fix CMake scope issuelat9nq1-1/+1
Forces using SDL 2.0.14. Upgrades the SDL external to that version. Adds a message when switching to the external. Fixes an error where input_common only links to SDL when SDL2_FOUND is set, but externals/CMakeLists cannot set that variable to the required scope. Switch to using ENABLE_SDL2, which we can use since we now include the SDL source.
2021-04-15common: Move settings to common from core.bunnei10-428/+7
- Removes a dependency on core and input_common from common.
2021-03-31Use a single connection for UDP server, make connection test longer and check all pads instead of only the first onegerman772-95/+96
2021-03-31InputCommon: Name properly xbox 360 and one controllers, Fix mappings for Nintendo Pro controllersgerman772-6/+24
2021-03-06Enable mouse toggle buttonsgerman774-10/+63
2021-03-06Enable button toggle for keyboard in the modifier buttongerman1-3/+26
2021-03-01inputCommon: Use an unique client id for each socket instancegerman2-13/+19
2021-02-28inputCommon: Mouse fixesgerman772-8/+15
2021-02-18Revert "Port citra-emu/citra#5123: "SDL: Disable hidapi drivers due to compatibility problems with certain controllers""Morph1-7/+0
2021-02-14Improve mouse panninggerman1-5/+21
2021-02-09udp: Silence unused member variable warningsLioncash1-2/+2
Simply mark them as unused for now.
2021-02-09udp/client: Define ClientData constructor/destructor in cpp fileLioncash2-0/+7
Prevents compilation errors on clang 12 due to incomplete types within a unique_ptr member.
2021-02-08hid: Implement GC controllergerman1-0/+1
2021-02-08Add mouse panninggerman3-3/+39
2021-02-06Add SL SR vectors, change dual joycon view, add missing raw data from keyboard/mousegerman2-0/+14
2021-02-06Make settings controller image change with controller inputgerman2-0/+20
2021-01-30analog_from_button: Fix update_thread.join exceptionameerj1-5/+9
This commit aims to address an exception that occurs when trying to join the Analog object's update_thread. By using an atomic bool for the status of the update thread, we ensure its value is consistent across the threads accessing it.
2021-01-23sdl_impl: Set the maximum vibration duration to 1 secondMorph1-2/+6
2021-01-15Always initialize keyboard inputgerman1-10/+8
2021-01-15Add mutitouch support for touch screensgerman3-17/+14
2021-01-15Allow to return up to 16 touch inputs per enginegerman5-92/+116
2021-01-02general: Fix various spelling errorsMorph4-9/+9
2020-12-31Port citra-emu/citra#5509german1-2/+45
2020-12-27udp client: process packets only for the correct padgal201-0/+5
2020-12-27Allow to invert analog axis with right clickgerman3-17/+62
2020-12-08Disable analog joystick from buttons by defaultgerman1-1/+21
2020-12-03mouse_poller: Remove unused includesLioncash1-3/+1
2020-12-03mouse_input: Invert conditional in UpdateYuzuSettings()Lioncash1-4/+6
Allows the struct to be constructed in place.
2020-12-03mouse_input: Remove two casts and amend some formattingLioncash1-11/+14
Removes the use of two static casts and improves the readability of some vectors slightly.
2020-12-03mouse_input: Resolve a -Wdocumentation warningLioncash1-1/+1
2020-12-03mouse_input: Remove unused includesLioncash2-7/+3
2020-12-01Fix implicit conversion in mouse inputgerman1-6/+8
2020-11-26Implement full mouse supportgerman9-242/+697
2020-11-26Add multiple udp server supportgerman4-100/+149
2020-11-26input_common: ignore some Clang warnings after 5c4774e8ce1dJan Beich1-2/+2
error: unknown warning option '-Werror=unused-but-set-parameter'; did you mean '-Werror=unused-parameter'? [-Werror,-Wunknown-warning-option] error: unknown warning option '-Werror=unused-but-set-variable'; did you mean '-Werror=unused-const-variable'? [-Werror,-Wunknown-warning-option]
2020-11-24input_common: Fix typo in gc_poller.cpp with [[maybe_unused]].bunnei1-2/+2
2020-11-24input_common: Add more missing [[maybe_unused]] from #4927.bunnei3-4/+6
2020-11-22input_common: Treat warnings as errorsLioncash7-9/+22
Migrates over warnings as errors for input common to match how the common library treats warnings as errors.
2020-11-19Modify rumble amplificationgerman772-4/+3
2020-11-16sdl_impl: Pump SDL Events at 1000 HzMorph1-1/+1
2020-11-16sdl_impl: Revert to the "old" method of mapping sticksMorph1-32/+13
Not all controllers have a SDL_GameController binding. This caused controllers not present in the SDL GameController database to have buttons mapped instead of axes. Furthermore, it was not possible to invert the axes when it could be useful such as emulating a horizontal single joycon or other potential cases. This allows us to invert the axes by reversing the order of mapping (vertical, then horizontal).
2020-11-16controllers/npad: Remove the old vibration filterMorph1-15/+0
Previously we used a vibration filter that filters out amplitudes close to each other. It turns out there are cases where this results into vibrations that are too inaccurate. Remove this and move the 100Hz vibration filter (Only allowing a maximum of 100 vibrations per second) from sdl_impl to npad when enable_accurate_vibrations is set to false.
2020-11-16input_common: Add VibrationDevice and VibrationDeviceFactoryMorph9-46/+159
A vibration device is an input device that returns an unsigned byte as status. It represents whether the vibration device supports vibration or not. If the status returns 1, it supports vibration. Otherwise, it does not support vibration.
2020-11-16configure_input: Add per-player vibrationMorph1-0/+3
Allows for enabling and modifying vibration and vibration strength per player. Also adds a toggle for enabling/disabling accurate vibrations. Co-authored-by: Its-Rei <kupfel@gmail.com>
2020-11-16controllers/npad: Add heuristics to reduce rumble state changesMorph1-29/+25
Sending too many state changes in a short period of time can cause massive performance issues. As a result, we have to use several heuristics to reduce the number of state changes to minimize/eliminate this performance impact while maintaining the quality of these vibrations as much as possible.
2020-11-16configure_input_player: Change "Defaults" button behaviorMorph1-8/+0
RestoreDefaults() now restores the selected devices' mappings using UpdateMappingWithDefaults(). This allows us to move the keyboard mapping from RestoreDefaults() to UpdateMappingWithDefaults().
2020-11-16udp/client: Reduce testing period to 5 secondsMorph1-1/+1
2020-11-16configure_input_player: Implement input exclusivity and persistenceMorph1-3/+3
With this, the "Input Devices" combobox should accurately reflect the input device being used and disallows inputs from other input devices unless the input device is set to "Any".
2020-11-15motion_input: Mark constructor as explicitLioncash1-1/+1
2020-11-15motion_input: Mark member functions as [[nodiscard]] where applicableLioncash1-10/+11
2020-11-10fix minor clang errorgerman1-1/+1
2020-11-08Allow to dial any angle with digital joystickgerman1-19/+103
2020-10-29Add hotplug, rumble and fix 3rd party adapters for the GC adaptergerman3-303/+433
2020-10-21sdl_impl: Fix controller reconnection issuesMorph1-85/+84
It turns out that after a controller is disconnected, there is a chance that events from the previous controller are sent/processed after it has been disconnected. This causes the previously disconnected controller to reappear as connected due to GetSDLJoystickBySDLID() emplacing this controller back to the map. Fix this by only returning an SDLJoystick if and only if it exists in the map.
2020-10-20configure_input_player: Fix modifier buttonsMorph1-2/+0
Fix them for real this time, now they finally work.
2020-10-16udp/client: Make use of designated initializers in TestCommunication()Lioncash1-2/+5
Same behavior, but makes the callback list nicer to look at.
2020-10-16udp/client: Take std::function by const reference with TestCommunication()Lioncash2-5/+5
Avoids redundant copies.
2020-10-16sdl_impl: Erase the SDLJoystick entry after removing a controllerMorph1-15/+13
Previously, disconnecting a controller still leaves a null SDLJoystick entry within the vector of SDLJoysticks mapped by GUID. When a DirectInput device of the same GUID is reconnected, it adds that device to a new port causing non-detectable input. Furthermore, opening the "Configure" menu would cause yuzu to crash since it first tries to resolve the name of a null SDLJoystick entry that was not removed. Resolve this by properly erasing the SDLJoystick entry from the vector.
2020-10-16input_common/CMakeLists: Make some warnings errorsLioncash16-191/+237
Makes the input_common code warnings consistent with the rest of the codebase.
2020-10-05Address commentsgerman2-40/+40
2020-10-04Add compatibility with only accelerometer and auto calibrate for driftgerman2-12/+106
2020-09-30Reduce the "shake" requirements when configuring UDP.Lukas Senionis1-2/+6
2020-09-29First implementation of controller rumblegerman1-1/+38
2020-09-26Add random motion input to keyboardgerman4-0/+65
2020-09-26Add random motion input to SDLgerman5-5/+230
2020-09-18Add automap feature for GC adaptergerman3-1/+103
2020-09-15gc_adapter: Disable MSVC nonstandard extension warning on libusb.hReinUsesLisp1-0/+9
Pragma disable zero-sized array nonstandard extension warning on MSVC.
2020-09-07gc_adapter: Make DeviceConnected() a const member functionLioncash3-9/+9
This doesn't modify instance state, so it can be made const.
2020-09-05Minor cleanupgerman1-19/+16
2020-09-05Add cemu hook changes related to PR #4609german6-137/+426
2020-09-05Remove RealMotionDevicegerman4-7/+25
2020-09-05Include HID and configuration changes related to motiongerman3-1/+33
2020-09-02input_common/motion_input: Make use of Common::PI constantMorph2-4/+9
Also amend the copyright notice to yuzu's instead of Dolphin's, which was mistakenly copy-pasted from another file.
2020-08-30sdl_joystick: disable the use of the hidapi drivers due to many problems caused by them.Vitor Kiguchi1-0/+7
The main problem is the loss of compatibility with some controllers, but there are also unwanted changes to the behaviour of PS4 controllers (hardcoded lightbar color).
2020-08-30Address second batch of reviewsFearlessTobi3-6/+2
2020-08-29Address review comments and fix code compilationFearlessTobi3-6/+11
2020-08-29yuzu: Add motion and touch configurationFearlessTobi5-0/+88
2020-08-29sdl_impl: Reduce allocations in GetButtonMappingForDevice()Lioncash1-31/+37
These maps can be constexpr arrays of std::pair.
2020-08-29sdl_impl: Make use of std::move on std::string where applicableLioncash1-3/+3
Avoids redundant copies.
2020-08-29sdl_impl: Make use of insert_or_assign() where applicableLioncash1-14/+18
Avoids churning ParamPackage instances.
2020-08-29sdl_impl: Prevent type truncation in BuildAnalogParamPackageForButton() default argumentsLioncash1-1/+1
We need to add the 'f' suffix to make the right hand side a float and not a double.
2020-08-29sdl_impl: Simplify make_tuple callLioncash1-1/+1
The purpose of make_tuple is that you don't need to explicitly type out the types of the things that comprise said tuple. Given this just returns default values, we can simplify this a bit.
2020-08-29sdl_impl: Mark FromEvent() as a const member functionLioncash1-2/+2
This doesn't modify internal member state, so it can be marked as const.
2020-08-29input_common/main: Remove unnecessary headersLioncash3-5/+11
2020-08-29input_common/main: Remove unimplemented prototypeLioncash1-3/+0
I forgot to remove this in the rebase when removing most of the global variables within the input common codebase.
2020-08-28Fix orientation errors and improve drift correctiongerman2-14/+31
2020-08-28Address commentsgerman2-85/+65
2020-08-28Implement a basic class for motion devicesgerman3-0/+249
2020-08-27input_common: Eliminate most global stateLioncash2-153/+227
Abstracts most of the input mechanisms under an InputSubsystem class that is managed by the frontends, eliminating any static constructors and destructors. This gets rid of global accessor functions and also allows the frontends to have a more fine-grained control over the lifecycle of the input subsystem. This also makes it explicit which interfaces rely on the input subsystem instead of making it opaque in the interface functions. All that remains to migrate over is the factories, which can be done in a separate change.
2020-08-27input_common/main: Add "/Mouse" to the display nameMorph1-1/+1
2020-08-26input_common: Fix directional deadzone valuesMorph2-2/+2
The hardware tested value is 0.5 which translates to SHRT_MAX / 2
2020-08-26Address feedbackMorph5-44/+32
2020-08-26Project Mjölnir: Part 1Morph11-102/+798
Co-authored-by: James Rowe <jroweboy@gmail.com> Co-authored-by: Its-Rei <kupfel@gmail.com>
2020-08-26gc_poller: Resolve compilation warnings on MSVCLioncash1-3/+5
We just need to make our intentional implicit truncations explicit.
2020-08-13General: Tidy up clang-format warnings part 2Lioncash1-4/+2
2020-08-10Remove UI changesameerj2-2/+2
This PR is now only the Analog devices handling the range value defaulting at 100%
2020-08-10Add range slider functionality for gc adapterameerj1-7/+7
2020-08-10undo unnecessary newlines, slider range 50-150Ameer1-1/+1
2020-08-10Add range slider for analog sticksAmeer1-11/+14
2020-07-26GCAdapter: only join worker thread if running & joinableBrian J. Tarricone1-1/+3
2020-07-25udp/client: Remove unused boost includeLioncash1-1/+0
Also silences a deprecation warning from boost on Clang/GCC.
2020-07-25gc_adapter: Resolve C++20 deprecation warningLioncash1-1/+1
2020-07-25gc_poller: Resolve -Wsign-compare warningLioncash1-1/+2
2020-07-25gc_poller: Resolve -Wredundant-move warningLioncash1-2/+1
2020-07-19Fix axis thresholding while pollingameerj1-5/+2
axes were very sensitive when mapping controls.
2020-07-17std::size_t where appropriate, make error message more clear if can't readameerj1-3/+4
2020-07-16Refactor adapter codeAmeer2-179/+44
2020-07-14Fix crash if gc configured but adapter not connectedAmeer2-15/+25
2020-07-14input_common: drop unused libusb.h includeAmeer1-1/+0
Remnant of an early implementation.
2020-07-13input_common: make libusb private to gc_adapterJan Beich3-3/+7
2020-07-12udp: Silence a C++20 deprecation warningLioncash1-1/+1
C++20 deprecates using the = lambda capture to implicitly capture the this pointer. Instead, we must specify it explicitly.
2020-07-12gc_poller: Mark GCButtonFactory::GetNextInput() as constLioncash2-2/+2
This doesn't modify class instance state.
2020-07-12gc_poller: Get rid of undefined behavior in Create()Lioncash1-0/+4
Ensures that the function always has returns in all control paths.
2020-07-12gc_poller: Silence sign conversion warningsLioncash1-1/+1
2020-07-12gc_adapter: Remove deprecated usage of = in lambda capturesLioncash1-1/+1
It's deprecated in C++20 to use = to capture the this pointer. Instead, we can simply pass this as an argument to the thread constructor.
2020-07-12gc_adapter: Silence sign conversion warningsLioncash2-7/+7
2020-07-10Break out of scan loop if can't find adapter on first runAmeer1-0/+3
2020-07-09cmake: pass libusb include directory as wellJan Beich1-0/+1
In file included from src/input_common/gcadapter/gc_adapter.cpp:8: src/./input_common/gcadapter/gc_adapter.h:11:10: fatal error: 'libusb.h' file not found #include <libusb.h> ^~~~~~~~~~
2020-07-08Address comments for better clarity/signed dev countAmeer1-11/+15
2020-07-08Add more libusb error checksAmeer1-3/+18
2020-07-07Address PR feedback, fix axis button thresholdingAmeer3-58/+22
2020-07-07input_common/gcadapter: add missing C++11 header required by libc++Jan Beich1-0/+1
In file included from src/input_common/gcadapter/gc_adapter.cpp:8: src/./input_common/gcadapter/gc_adapter.h:77:10: error: no template named 'unordered_map' in namespace 'std' std::unordered_map<int, bool> buttons; ~~~~~^ src/./input_common/gcadapter/gc_adapter.h:78:10: error: no template named 'unordered_map' in namespace 'std' std::unordered_map<int, u16> axes; ~~~~~^
2020-07-07Brace the code! Fix compile error due to class member construction orderAmeer2-15/+31
2020-07-07Recalibrate reconnected controllersAmeer1-0/+5
2020-07-07Save origin state of GC controller analog features, compare against origin for input detectionAmeer3-28/+72
2020-07-04Fix for always firing triggers on some controllers, trigger threshold more universalAmeer2-5/+5
2020-07-03Address lioncash feedback: Log formatting, extern const PadButtonArray, little touch upsAmeer3-24/+32
2020-07-02Fix unnecessary diffsAmeer3-3/+3
2020-07-02Add LR triggers as axes, half press to initiate a press, add GC axis id in config, clarify some code blocks for better readabilityAmeer2-10/+34
2020-07-01Reset adapter state on init, fixes errors relating driver hang from unexpected unplugAmeer2-0/+9
2020-06-30Address feedback regarding increments, const vars, and general cleanupAmeer2-24/+21
2020-06-30fix implicit conversion of size_t type to intAmeer1-1/+1
2020-06-27left const auto&, comment punctuation.Ameer J1-2/+2
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
2020-06-26const& to button in button arrayAmeer J1-2/+2
Co-authored-by: VolcaEM <63682805+VolcaEM@users.noreply.github.com>
2020-06-26Stop reading loop if error is encounteredAmeer1-4/+4
2020-06-24padbutton enum class and struct initiailizationAmeer3-36/+32
2020-06-23cleanup check access, read, and factory GetNextInput funcs. Use size rather than magic numberAmeer4-151/+101
2020-06-23Fix deallocation of GC AdapterAmeer3-4/+10
2020-06-23std::array and const reference passing of non-trivial objectsAmeer2-14/+13
2020-06-22Update src/input_common/main.cppameerj1-1/+1
Co-authored-by: LC <mathew1800@gmail.com> update libusb submodule (hopefully windows build error fixed)
2020-06-22Tidy up the pointers, use pair over tuple where appropriateAmeer4-24/+22
2020-06-22fix for sleep using stlAmeer1-1/+3
2020-06-22shared_ptr for the GC adapter class, constexpr constantsAmeer5-66/+52
2020-06-22std::arrays where appropriate, clear q in adapter class, other touch upsAmeer5-27/+15
2020-06-22fix include threadAmeer1-0/+1
2020-06-22Singleton GC Adapter class, remove globals, fix naming conventionAmeer7-202/+259
Fix clang formatting Manual fix for configure_input_player formatting Add missing lib usb cmake command
2020-06-21Clang FormattingAmeer6-77/+99
2020-06-21Cleanup after linterAmeer9-167/+98
2020-06-21GC Adapter ImplementationAmeer15-100/+1039
2020-06-19input_common/motion_emu: Remove redundant moveMerryMage1-1/+1
Named return value optimization automatically applies here.
2020-06-19input_common/keyboard: Remove redundant moveMerryMage1-1/+1
Named return value optimization automatically applies here.
2020-05-02input_common: fix build when SDL2 is disabledFearlessTobi1-0/+6
2020-04-16input_common: Use the CMake target instead of the variable.Markus Wick1-1/+1
2020-04-16CMakeLists: Specify -Wextra on linux buildsLioncash1-0/+1
Allows reporting more cases where logic errors may exist, such as implicit fallthrough cases, etc. We currently ignore unused parameters, since we currently have many cases where this is intentional (virtual interfaces). While we're at it, we can also tidy up any existing code that causes warnings. This also uncovered a few bugs as well.
2020-03-18input_common/udp: Fix clang build issuesReinUsesLisp1-1/+2
2020-03-17input_common/udp: Fix Linux build by using a backwards compatible way of error checkingFearlessTobi1-1/+1
Should fix https://github.com/yuzu-emu/yuzu/issues/3487. error_code::failed is a function which has been introduced in Boost 1.69. This version of boost hasn't landed in most major distros yet.
2020-03-04input/udp - Add minor error handling to prevent bad input from crashingJames Rowe1-4/+13
2020-03-04input/udp - Dont log on invalid packet receivedJames Rowe1-1/+0
2020-02-18analog_from_button get direction implementationCJBok1-0/+14
2020-02-03input_common/udp: Ensure that UDP is shut down within Shutdown()Lioncash1-0/+1
Previously the UDP backend would never actually get shut down.
2020-02-03input_common/udp: Add missing override specifiersLioncash1-2/+2
Prevents trivial warnings and ensures interfaces are properly maintained between the base class.
2020-02-03input_common/udp: std::move SocketCallback instances where applicableLioncash1-2/+2
std::function is allowed to heap allocate if the size of the captures associated with each lambda exceed a certain threshold. This prevents potentially unnecessary reallocations from occurring.
2020-02-03input_common/udp: std::move shared_ptr within Client constructorLioncash1-1/+1
Gets rid of a trivially avoidable atomic reference count increment and decrement.
2020-02-03udp/client: Replace deprecated from_string() call with make_address_v4()Lioncash1-2/+2
Future-proofs code if boost is ever updated.
2020-02-03input_common/udp: Silence -Wreorder warning for SocketLioncash1-4/+3
Amends the constructor initializer list to specify the order of its elements in the same order that initialization would occur.
2020-02-03input_common/udp: Remove unnecessary inclusionsLioncash4-8/+4
2020-02-03input_common/udp: Add missing header guardLioncash1-0/+2
2020-01-23Address second part of review commentsFearlessTobi3-13/+17
2020-01-23Address review commentsFearlessTobi4-65/+72
2020-01-23Input: UDP Client to provide motion and touch controlsfearlessTobi8-4/+846
An implementation of the cemuhook motion/touch protocol, this adds the ability for users to connect several different devices to citra to send direct motion and touch data to citra. Co-Authored-By: jroweboy <jroweboy@gmail.com>
2020-01-15Moved analog direction logic to sdl_implCJBok1-0/+16
2019-06-03input_common/sdl/sdl_impl: Correct logging string in SDLState constructorLioncash1-1/+1
If this path was ever taken, a runtime exception would occur due to the lack of a formatting specifier to insert the error code into the format string.
2019-06-03input_common/sdl/sdl_impl: Move documentation comments to header where applicableLioncash2-7/+6
Places the documentation comments with the rest of SDLState's member function documentation.
2019-06-03input_common/sdl/sdl_impl: Amend names for axes for SDLAnalogPollerLioncash1-13/+13
Adds another underscore to clearly indicate the axis names.
2019-06-03input_common/sdl/sdl_impl: Mark variables const where applicableLioncash1-10/+11
Make it explicit that these aren't modified elsewhere (either through functions by reference, or by other operations).
2019-06-03input_common/sdl/sdl_impl: Mark SDLEventToButtonParamPackage() as staticLioncash1-1/+1
Its prototype declared at the top of the translation unit contains the static qualifier, so the function itself should also contain it to make it a proper internally linked function.
2019-06-03input_common/sdl/sdl_impl: Convert reinterpret_cast into a static_castLioncash1-2/+4
It's valid to static_cast a void pointer back into its proper type.
2019-06-03input_common/sdl/sdl_impl: Use insert_or_assign() where applicableLioncash1-3/+3
Same behavior, but without a potential need to unnecessarily default construct a value.
2019-06-03input_common/sdl/sdl_impl: Simplify SDL_Joystick deleter handlingLioncash1-15/+14
The deleter can just be set in the constructor and maintained throughout the lifetime of the object. If a contained pointer is null, then the deleter won't execute, so this is safe to do. We don't need to swap it out with a version of a deleter that does nothing.
2019-06-03input_common/sdl/sdl_impl: Resolve two sign conversion warningsLioncash1-10/+16
Silences the final two warnings in SDL code.
2019-06-03input_common/sdl: Remove unused header includes and forward declarationsLioncash3-11/+5
Gets rid of a few unnecessary inclusion dependencies. It also uncovered a few indirect inclusion dependencies being relied upon.
2019-06-03input_common/sdl/sdl_impl: Use nested namespace specifiers where applicableLioncash1-5/+2
2019-05-31input_common/sdl/sdl_impl: Silence sign conversion warningsLioncash1-3/+3
Makes the conversions explicit, as opposed to implicit.
2019-04-01general: Use deducation guides for std::lock_guard and std::unique_lockLioncash3-21/+23
Since C++17, the introduction of deduction guides for locking facilities means that we no longer need to hardcode the mutex type into the locks themselves, making it easier to switch mutex types, should it ever be necessary in the future.
2019-03-18input_common/sdl: Correct return values within implementations of GetPollers()Lioncash2-2/+6
In both cases, we weren't actually returning anything, which is undefined behavior.
2019-03-18input_common/sdl: Use a type alias to shorten declaration of GetPollersLioncash3-11/+9
Just makes the definitions a little bit more tidy.
2019-03-17input_common/sdl_impl: Make lambda capture more specific in SDLState constructorLioncash1-1/+1
We don't need to universally capture by reference. We specifically just need to capture the this pointer.
2019-03-17input_common/sdl_impl: Remove unnecessary std::chrono::duration constructionLioncash1-1/+1
Specifying the time unit itself is sufficient here.
2019-03-17input_common/sdl_impl: Remove unused variable in SDLState constructorLioncash1-1/+0
2019-03-02fixup! Joystick: Allow for background events; Add deadzone to SDLAnalogB3n301-6/+17
2019-03-02input/sdl: lock map mutex after SDL callWeiyi Wang1-11/+17
Any SDL invocation can call the even callback on the same thread, which can call GetSDLJoystickBySDLID and eventually cause double lock on joystick_map_mutex. To avoid this, lock guard should be placed as closer as possible to the object accessing code, so that any SDL invocation is with the mutex unlocked
2019-03-02Input: Remove global variables from SDL InputJames Rowe7-800/+201
Changes the interface as well to remove any unique methods that frontends needed to call such as StartJoystickEventHandler by conditionally starting the polling thread only if the frontend hasn't started it already. Additionally, moves all global state into a single SDLState class in order to guarantee that the destructors are called in the proper order
2019-03-02Input: Copy current SDL.h/cpp files to implJames Rowe2-0/+680
This should make reviewing much easier as you can then see what changed happened between the old file and the new one
2019-02-27common/math_util: Move contents into the Common namespaceLioncash1-2/+2
These types are within the common library, so they should be within the Common namespace.
2019-02-27common/vector_math: Move Vec[x] types into the Common namespaceLioncash1-11/+11
These types are within the common library, so they should be using the Common namespace.
2019-02-27common/quaternion: Move Quaternion into the Common namespaceLioncash1-4/+4
Quaternion is within the common library, so it should be using the Common namespace.
2018-09-11Port #4141 from citra: Joystick hotplug support (#1275)Tobias4-88/+322
* Joystick hotplug support (#4141) * use SDL_PollEvent instead of SDL_JoystickUpdate Register hot plugged controller by GUID if they were configured in a previous session * Move SDL_PollEvent into its own thread * Don't store SDLJoystick pointer in Input Device; Get pointer on each GetStatus call * Fix that joystick_list gets cleared after SDL_Quit * Add VirtualJoystick for InputDevices thats never nullptr * fixup! Add VirtualJoystick for InputDevices thats never nullptr * fixup! fixup! Add VirtualJoystick for InputDevices thats never nullptr * Remove SDL_GameController, make SDL_Joystick* unique_ptr * fixup! Remove SDL_GameController, make SDL_Joystick* unique_ptr * Adressed feedback; fixed handling of same guid reconnects * fixup! Adressed feedback; fixed handling of same guid reconnects * merge the two joystick_lists into one * make SDLJoystick a member of VirtualJoystick * fixup! make SDLJoystick a member of VirtualJoystick * fixup! make SDLJoystick a member of VirtualJoystick * fixup! fixup! make SDLJoystick a member of VirtualJoystick * SDLJoystick: Addressed review comments * Address one missed review comment
2018-08-03input_common: Use std::move where applicableLioncash2-5/+6
Avoids unnecessary atomic reference count increments and decrements
2018-08-03input_common: Add missing override specifiersLioncash3-14/+2
2018-07-03Rename logging macro back to LOG_*James Rowe1-3/+3
2018-04-27input_common: Move old logging macros over to fmt-capable onesLioncash1-3/+3
2018-04-20math_util: Remove the Clamp() functionLioncash1-2/+3
C++17 adds clamp() to the standard library, so we can remove ours in favor of it.
2018-01-21Format: Run the new clang format on everythingJames Rowe1-1/+2
2018-01-18CMakeLists: Derive the source directory grouping from targets themselvesLioncash1-19/+12
Removes the need to store to separate SRC and HEADER variables, and then construct the target in most cases.
2018-01-18input_common/sdl: Silence a -Wpessimizing-move warningLioncash1-1/+1
2018-01-16Adding meumart's Citra SDL Joystick support. Citra PR #3116muemart4-1/+248
2017-08-22motion_emu: fix initialization orderwwylele1-1/+4
2017-08-19motion_emu: no need to include thread in headerwwylele2-2/+7
2017-08-13Fix Spelling/English mistakesDave Leaver1-1/+1
2017-08-11move MotionEmu from core/frontend to input_common as a InputDevicewwylele5-2/+226
2017-08-11Fix some spelling mistakesdanzel1-1/+1
2017-05-28CMake: Define an interface target for SDL2 definitionsYuri Kunde Schlesner1-2/+1
2017-05-28CMake: Correct inter-module dependencies and library visibilityYuri Kunde Schlesner1-3/+3
Modules didn't correctly define their dependencies before, which relied on the frontends implicitly including every module for linking to succeed. Also changed every target_link_libraries call to specify visibility of dependencies to avoid leaking definitions to dependents when not necessary.
2017-04-17input_common/sdl: add support for binding button to axiswwylele1-4/+53
2017-03-17citra-qt: release all buttons when render window focus is lostwwylele2-0/+13
credit to @Hawkheart for the original idea
2017-03-01InputCommon: add SDL joystick supportwwylele4-0/+241
2017-03-01InputCommon: add AnalogFromButtonwwylele5-0/+113
2017-03-01InputCommon: add Keyboardwwylele5-0/+202