Not able to get the absolute axis values?

We’ve noticed something strange when using axis events on the Apple TV remote.  

Wherever we initially touch the touchpad becomes the 0, 0 point of the touch coordinates. For example, if I begin touching the touchpad in the top left corner, that will be where x = 0  and y = 0. However if I then let go, and then start a new touch in the bottom right corner, the 0, 0 point of the touch is now moved to there. 

This is fine when I want to use normalized values to determine which way the touch is being moved etc (especially now that overly sensitive key events have been removed from the dpad). However there doesn’t seem to be a way to get the ABSOLUTE xy position that was touched on the touchpad.  

This would be useful because it means we can directly map an object position on screen to the position that was touched on the dpad (i.e. if you touch the top left corner our UI element would appear in the top left corner of the game, and if you touched the bottom right corner it would appear in the top right). 

A member of our team is at an Apple event in London today, and has been asking someone from Apple a few questions about tvOS and the remote.

The person from Apple has said: “There are 2 modes for the dpad, relative and absolute. If you are not getting absolute values then perhaps reportsAbsoluteDpadValues has been set to false”.  

Is this something we can turn on ourselves?

No, engineering will have to do it. I think it’s something they are looking to add fairly soon.

Rob

Thank you for your feedback. Because Siri Remote uses trackpad for axis input it doesn’t have physical centre. You don’t want to force users to try to tap into middle of it for neutral axis position. This is why default behaviour is when you begin your gesture, virtual joystick window is created with neutral position where touch started. This control scheme is consistent through all UI in tvOS. Note how menus and scrolling work in iTunes, springboard etc. Cases when you actually may use absolute coordinates are extremely rare.

We are working on improving our support of tvOS. Features you requested was already in progress but we planned to release them with some other improvements. But since you requested, I put them in. You can use device.reportsAbsoluteDpadValues or device.allowRotation in latest (2807) daily build. Beware, that if you’re using absolute values, user experience must be consistent with other tvOS apps. It is always good idea to consult apple’s guides on the matter.

I see, so you are saying that we have to use one method OR the other, not both?  

I had assumed that Apple would have the remote return both the virtual and absolute values, so we could use the virtual one to keep the UI experience the same but still use the absolute value where needed.

That’s a bit of a pain, but I’m sure we can make the absolute values perform in the same way as the virtual values. At the moment I’m just checking “did the value increase or decrease” in order to move up/down menus, so using the absolute values shouldn’t cause a problem with that.

Thanks for adding those properties for me!

I still can’t imagine why would one need absolute values, but yes, this is consistent with Apple’s implementation. If you can explain why do you need absolute touchpad values, instead of virtual d-pad, may be I can suggest some other way to achieve wanted result.

No, engineering will have to do it. I think it’s something they are looking to add fairly soon.

Rob

Thank you for your feedback. Because Siri Remote uses trackpad for axis input it doesn’t have physical centre. You don’t want to force users to try to tap into middle of it for neutral axis position. This is why default behaviour is when you begin your gesture, virtual joystick window is created with neutral position where touch started. This control scheme is consistent through all UI in tvOS. Note how menus and scrolling work in iTunes, springboard etc. Cases when you actually may use absolute coordinates are extremely rare.

We are working on improving our support of tvOS. Features you requested was already in progress but we planned to release them with some other improvements. But since you requested, I put them in. You can use device.reportsAbsoluteDpadValues or device.allowRotation in latest (2807) daily build. Beware, that if you’re using absolute values, user experience must be consistent with other tvOS apps. It is always good idea to consult apple’s guides on the matter.

I see, so you are saying that we have to use one method OR the other, not both?  

I had assumed that Apple would have the remote return both the virtual and absolute values, so we could use the virtual one to keep the UI experience the same but still use the absolute value where needed.

That’s a bit of a pain, but I’m sure we can make the absolute values perform in the same way as the virtual values. At the moment I’m just checking “did the value increase or decrease” in order to move up/down menus, so using the absolute values shouldn’t cause a problem with that.

Thanks for adding those properties for me!

I still can’t imagine why would one need absolute values, but yes, this is consistent with Apple’s implementation. If you can explain why do you need absolute touchpad values, instead of virtual d-pad, may be I can suggest some other way to achieve wanted result.