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.
Controller
is nowSend
Listener
is nowSend
- Mappings for Flydigi Apex 2 (thanks to zeddidragon!)
- Generic
gamepad
controller type (thanks to zeddidragon!) Event::ActionWheelX
andEvent::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
Event
names
- 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
.
Pad
renamed toController
.
Hub
type, 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).
Event
variants: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
Port
toHub
- Renamed
Gamepad
toPad
id()
now returns a[u16; 4]
instead of au32
for gamepad ID.- Renamed
Event
variants: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)
Event
is 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.
ExtL
andExtR
variants ofEvent
enum for buttons that aren't on the W3C standard gamepad.
- Update documentation/examples to use pasts 0.4
- Remove unneeded
(&mut )
in example/documentation. Lz
andRz
variants onEvent
are renamed toLt
andRt
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
. Event
enum.
- Renamed
Device
toGamepad
. - Back to an event-based API with
Event
.
Btn
enum, useEvent
instead.
- 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_MAX
constant, 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 callpoll
which blocks.- There's now a limit of 64 joysticks, because it makes multi-threaded joystick support easier and faster.
- Joystick Ids are now
u8
instead 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
,Device
andBtn
- 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 theInput
Enum
- Crash on specific hardware running Linux.
- Fake Windows support.
Button
- Now incorporated intoInput
.
- Added
ControllerManager
to simplify API
- Removed
Throttle
struct andJoystick
struct
- Remapping
- Use evdev instead of js0
- Linux Support