All notable changes to stick will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Controlleris nowSendListeneris nowSend
- Mappings for Flydigi Apex 2 (thanks to zeddidragon!)
- Generic
gamepadcontroller type (thanks to zeddidragon!) Event::ActionWheelXandEvent::ActionWheelY(thanks to zeddidragon!)
- Support for buttons on Flydigi Apex 2 (thanks to zeddidragon!)
- Support for KEY_MENU event on Linux.
- A joystick mapping for wireless XBox controller
- A bug in xtask bytecode generation for some events.
- Support for KEY_BACK and KEY_FORWARD events on Linux.
- You can now import your own mappings at runtime with
Remap - Default evdev id guessing
- Windows support (thanks to dparnell!)
- Support adjusting left and right rumble separately.
focus()for enabling events (enabled by default).unfocus()- for disabling events when window is not in focus.- New variants to
Event
- Database now stored as data rather than control flow in resulting binary (lowering bloat)
- Offload serde dependency to xtask pattern to improve compile times
- Database TOML is simplified
- Some
Eventnames
- Controllers from sdl controller db (it assumes everything is a gamepad, which not all controllers are - stick will only include semantically correct mappings from now on by default). You may add them back with the new "gcdb" feature.
- Cleaned up database (fixing inconsistencies).
- Inconsistent freezing issues on Linux
- Dummy implementation not compiling (started using GitHub Actions so hopefully this won't happen again).
Controller::listener()to replaceHub.
Padrenamed toController.
Hubtype, useController::listener()instead.
- The controller database is now sorted (thanks to iRaiko!)
- Incorrect mapping for Xbox One wired controller
Thanks to everyone who contributed to make this version of stick possible!
- Support for XBox and Steam controller Grip Buttons / Paddles:
Event::PaddleRight(bool)Event::PaddleLeft(bool)Event::PaddleRightPinky(bool)Event::PaddleLeftPinky(bool)
- Support for all of the gamepads and joysticks in SDL_gamecontrollerdb by creating a database of gamepads (using a TOML format), as well as others that weren't in the database (pads stick supported before, plus the Thrustmaster Warthog).
Eventvariants:ActionC(bool)JoyZ(f64)CamZ(f64)AutopilotToggle(bool)LandingGearSilence(bool)PovUp(bool)PovDown(bool)PovLeft(bool)PovRight(bool)MicUp(bool)MicDown(bool)MicLeft(bool)MicRight(bool)MicPush(bool)Slew(f64)Throttle(f64)ThrottleL(f64)ThrottleR(f64)ThrottleButtonL(bool)EngineFuelFlowL(bool)EngineFuelFlowR(bool)Eac(bool)RadarAltimeter(bool)Apu(bool)AutopilotPath(bool)AutopilotAlt(bool)FlapsUp(bool)FlapsDown(bool)EngineLIgnition(bool)EngineLMotor(bool)EngineRIgnition(bool)EngineRMotor(bool)PinkyForward(bool)PinkyBackward(bool)SpeedbrakeForward(bool)SpeedbrakeBackward(bool)BoatForward(bool)BoatBackward(bool)ChinaForward(bool)ChinaBackward(bool)Dpi(bool)MouseX(f64)MouseY(f64)MousePush(bool)WheelX(f64)WheelY(f64)WheelPush(bool)
- Renamed
PorttoHub - Renamed
GamepadtoPad id()now returns a[u16; 4]instead of au32for gamepad ID.- Renamed
Eventvariants:Accept(bool)->ActionA(bool)Cancel(bool)->ActionB(bool)Common(bool)->ActionH(bool)Action(bool)->ActionV(bool)Up(bool)->DpadUp(bool)Down(bool)->DpadDown(bool)Left(bool)->DpadLeft(bool)Right(bool)->DpadRight(bool)Back(bool)->Prev(bool)Forward(bool)->Next(bool)L(bool)->BumperL(bool)R(bool)->BumperR(bool)Lt(f32)->TriggerL(f64)Rt(f32)->TriggerR(f64)MotionH(f32)->JoyX(f64)MotionV(f32)->JoyY(f64)CameraH(f32)->CamX(f64)CameraV(f32)->CamY(f64)MotionButton(bool)->JoyPush(bool)CameraButton(bool)->CamPush(bool)ExtL(u8, bool)->Action(u16, bool)ExtR(u8, bool)->Action(u16, bool)Quit->Home(bool)
Eventis now marked#[non_exhaustive], so you will alway have to match for_.
- Randomly crashing
- All clippy lints
- No longer does
dbg!()prints constantly.
Thanks to everyone who contributed to make this version of stick possible!
- Support for a lot of different kinds of joysticks.
ExtLandExtRvariants ofEventenum for buttons that aren't on the W3C standard gamepad.
- Update documentation/examples to use pasts 0.4
- Remove unneeded
(&mut )in example/documentation. LzandRzvariants onEventare renamed toLtandRt
Thanks to everyone who contributed to make this version of stick possible!
-
Thanks to everyone who helped test joysticks at #5!
- Async/await support
- Haptic support with
.rumble()onGamepad. - Linux implementation of
.name()onGamepad. Eventenum.
- Renamed
DevicetoGamepad. - Back to an event-based API with
Event.
Btnenum, useEventinstead.
- Panic on drop (joystick disconnected)
Thanks to everyone who contributed to make this version of stick possible!
- Not compiling for 32-bit architecture.
poll()method to block until an event is received from any controller.- Asynchronous support.
- Multi-threaded support.
count()to get the number of plugged in controllers.- Implementation of default for
Port. CONTROLLER_MAXconstant, set to 64 controllers.
- Pan separate from camera Y.
- Mods
update()is now renamed topoll()and is asynchronous. It's now recommended to put your input on it's own thread and callpollwhich blocks.- There's now a limit of 64 joysticks, because it makes multi-threaded joystick support easier and faster.
- Joystick Ids are now
u8instead ofu16.
- L & R triggers without buttons requiring mods to be treated as buttons.
Device.lrt()function to get left & right trigger values.
- Can only extract
Device.joy()values once.
- Full support for 4 joysticks
- New API with
Port,DeviceandBtn - API to detect whether or not joystick features are supported (not complete).
ControllerManager&Input
- Input is now received through function calls like
joy()instead of theInputEnum
- Crash on specific hardware running Linux.
- Fake Windows support.
Button- Now incorporated intoInput.
- Added
ControllerManagerto simplify API
- Removed
Throttlestruct andJoystickstruct
- Remapping
- Use evdev instead of js0
- Linux Support