Skip to content

Commit 77fc241

Browse files
Analog button should have values from 0.0 to 1.0 instead of only digital value. (#134)
https://www.w3.org/TR/gamepad/#dom-gamepadbutton-value value attribute For buttons that have an analog sensor, this property MUST represent the amount which the button has been pressed. All button values MUST be linearly normalized to the range [0.0 .. 1.0]. 0.0 MUST mean fully unpressed, and 1.0 MUST mean fully pressed. For buttons without an analog sensor, only the values 0.0 and 1.0 for fully unpressed and fully pressed respectively, MUST be provided. Co-authored-by: Ganesh prasad Sahu <GaneshPrasad_Sahu@comcast.com>
1 parent 0a4a335 commit 77fc241

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

include/wpe/gamepad.h

+15
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ struct wpe_gamepad_provider_client_interface {
140140
struct wpe_gamepad_client_interface {
141141
void (*button_changed)(void*, enum wpe_gamepad_button, bool);
142142
void (*axis_changed)(void*, enum wpe_gamepad_axis, double);
143+
void (*analog_button_changed)(void*, enum wpe_gamepad_button, double);
143144

144145
/*< private >*/
145146
void (*_wpe_reserved1)(void);
@@ -358,6 +359,20 @@ void wpe_gamepad_set_client(struct wpe_gamepad*, const struct wpe_gamepad_client
358359
WPE_EXPORT
359360
const char* wpe_gamepad_get_id(struct wpe_gamepad*);
360361

362+
/**
363+
* wpe_gamepad_dispatch_analog_button_changed:
364+
* @gamepad: opaque gamepad object.
365+
* @button: the analog button that changed its value.
366+
* @value: the new analog @button value.
367+
*
368+
* Method called by application (gamepad implementator). It reports to
369+
* WPEWebkit a change in the value of analog @button.
370+
*
371+
* Since: 1.16
372+
*/
373+
WPE_EXPORT
374+
void wpe_gamepad_dispatch_analog_button_changed(struct wpe_gamepad*, enum wpe_gamepad_button, double);
375+
361376
/**
362377
* wpe_gamepad_dispatch_button_changed:
363378
* @gamepad: opaque gamepad object.

src/gamepad.c

+7
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,13 @@ wpe_gamepad_get_id(struct wpe_gamepad* gamepad)
161161
return "Unknown device";
162162
}
163163

164+
void
165+
wpe_gamepad_dispatch_analog_button_changed(struct wpe_gamepad* gamepad, enum wpe_gamepad_button button, double value)
166+
{
167+
if (gamepad && gamepad->client_interface && gamepad->client_interface->analog_button_changed)
168+
gamepad->client_interface->analog_button_changed(gamepad->client_data, button, value);
169+
}
170+
164171
void
165172
wpe_gamepad_dispatch_button_changed(struct wpe_gamepad* gamepad, enum wpe_gamepad_button button, bool pressed)
166173
{

0 commit comments

Comments
 (0)