Search Unity

Rewired - Advanced Input for Unity

Discussion in 'Assets and Asset Store' started by guavaman, Sep 25, 2014.

  1. S_Darkwell

    S_Darkwell

    Joined:
    Oct 20, 2013
    Posts:
    320
    *facepalms* Apologies for not including that information in my initial post. I had just woken up for the day.

    Rewired: v1.0.0.78.U5
    OS: Microsoft Windows 10 Enterprise
    Unity: v5.3.1f1 Personal

    Thank you!
    - S.
     
  2. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    It's not a bug -- it was intentional.

    When you're in Webplayer build target in the editor, Rewired no longer uses the native input sources because Webplayer cannot access them and falls back to Unity input. It was a decision to allow Webplayer build target to accurately represent the true input capabilities available to the Webplayer build while in the editor. All platforms used to do this so as to not give a false impression of target platform input capabilities (having gamepad vibration or being able to use a HOTAS system on Android for example), but because of mass confusion on the part of developers (even though there was a console warning logged for the other platforms), I changed it so the editor would always use the best native input sources available to the editor regardless of the build target _except_ in Webplayer mode. I'm probably going to change this too because everyone gets confused by differing input capabilities depending on the build target.

    It seems to me having XInput-enabled input in the editor for all platforms will just lead to more confusion when the final build will ultimately not be able to use it and will show the above artifacts you mention, but I don't really have any better ideas.
     
    Last edited: Dec 20, 2015
  3. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    This is a bug. Thanks! Change the inspector to Debug mode and change this value in Config Vars if needed.
     
    Last edited: Dec 20, 2015
  4. S_Darkwell

    S_Darkwell

    Joined:
    Oct 20, 2013
    Posts:
    320
    @guavaman: Ahh. Thank you for the explanation! That makes sense now. :)

    Out of curiosity, is there a preferred way of treating an Xbox One's triggers as separate buttons that is more compatible cross-platform?

    Glad I could help with the Steam fix!

    Be well!
    - S.
     
  5. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    The reason it's like that is the limitations of Unity input, and more specifically, the security restrictions of Webplayer preventing the use of XInput. There is no workaround for it otherwise I would have implemented it. (While Unity Input does map both the unified and split triggers, the implementation is flawed, where sometimes the split triggers cease to work depending on the id the joystick is assigned so I chose not to rely on these intermittent axes in the Unity fallback implementation.)

    This isn't even an issue on OSX, Linux, or Windows Standalone if you have XInput enabled. If you don't have XInput enabled or you're forced to fall back to Unity input like in Webplayer, there is no solution. It's Microsoft's doing.

    Oh, and Windows 10 changed the driver for the Xbox One controller so it has separate triggers even without XInput. But not the 360 controller. You don't have to even think about treating the triggers differently however as Rewired's mapping system takes care of it all. It's already cross-platform. The only caveat is that on Windows if not using XInput, both triggers if pressed will cancel each other out.
     
    Last edited: Dec 20, 2015
    S_Darkwell likes this.
  6. S_Darkwell

    S_Darkwell

    Joined:
    Oct 20, 2013
    Posts:
    320
    @guavaman: Understood! Thank you again for the fantastic asset and excellent support. :)

    - S.
     
    guavaman likes this.
  7. Quatum1000

    Quatum1000

    Joined:
    Oct 5, 2014
    Posts:
    889
    Hi,

    I would love to have MIDI over USB. Means I can plug a Midi Keyboard to USB and receive the controller values from the Keyboard in Unity. And for sure so send them back to the keyboard if possible.

    That would make it possible to build great audio and music systems with Unity.

    Kind regards, Q
     
  8. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    This sounds like beyond the scope of what Rewired is designed for. Rewired is for input and not midi input and output.

    Have you talked to Unity3D about your interests in midi? There was an old thread on this subject below that be might more beneficial.

    http://forum.unity3d.com/threads/official-integrated-midi-support.253317

    These two projects look more to what you would be interested in. Have you seen these before?

    https://github.com/keijiro/unity-midi-bridge

    https://github.com/keijiro/MidiJack
     
    Quatum1000 likes this.
  9. Quatum1000

    Quatum1000

    Joined:
    Oct 5, 2014
    Posts:
    889
    Hi,

    Thanks a lot.
    Not seen before, I will check that. For any reason this stuff does not work, mostly...
    But, this is what I'm searching for.

    Kind regards, Q


     
  10. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    I am only a fan of Rewired so I cannot give you an official answer. @guavaman is the author of Rewired so he can give you the official answer.

    The author of two midi applications (unity-midi-bridge and MidiJack) is Keijiro Takahashi works for Unity Japan. He is a software engineer and also a musician (see his bio: http://keijiro.github.io )

    A few people have requested midi output for MidiJack (see https://github.com/keijiro/MidiJack/issues/3 ) already. You can add your vote to the list.
     
  11. Quatum1000

    Quatum1000

    Joined:
    Oct 5, 2014
    Posts:
    889
    Unfortunately it's all closed 7 days ago and I think Keijiro doesnt have the time communicate.
    If you see a comment like "lets see later" you can be assured it takes long long long time, or perhaps ever.
    So its better to contact a senior programmer and pay for, so you get the result you require.
    But thanks anyway..
     
  12. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    Actually it is issue #5 that is closed because it is a duplicate #3. But paying for custom programming work for midi in/out seems like the best solution in your case.
     
  13. mattrified_

    mattrified_

    Joined:
    Jul 17, 2013
    Posts:
    32
    Apologies if this is already in this thread, but has there been any testing with Rewired on Xbox One using peripherals such as arcade sticks like the Razor Atrox or the Hori R.A.P.? Does Rewired do something extra? By default, these joysticks are not recognized at all or with InControl.
     
  14. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    The author of Rewired (@guavaman ) can give you an official answer.

    This seems to be first time I have heard someone ask for arcade fighting sticks in this thread. Do not know anything about XBOX ONE support in Rewired. But this is what I see in terms of documentation on XBOX-ONE support.

    http://guavaman.com/projects/rewired/docs/SpecialPlatformSupport.html

    What happens when these devices get plugged into a XBOX ONE do they display their own unique controller name or they just show up as a normal XBOX-ONE compatible gamepad?
     
  15. mattrified_

    mattrified_

    Joined:
    Jul 17, 2013
    Posts:
    32
    As of right-now, any Unity3D games built for Xbox One will NOT recognize these devices at all. My game and both ClusterPuck99 (which I believe was made w/ Unity3D) doesn't recognize fightsticks at all. Thought maybe Rewired would, but I built and tested the 8-player example and it didn't seem to work, :\ I think it's something on Unity's side, and tbh, the Xbox One treats sticks strangely as well. Unless the Xbox One uses XInput, which I doubt, it doesn't seem possible atm.
     
  16. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    Rewired uses Unity's XboxOneInput class for handling input on the Xbox One platform. So unfortunately, if UnityEngine.XboxOneInput cannot see the devices, Rewired will not either.

    XInput can only be used on Windows Standalone.
     
  17. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    Support will be unavailable until December 28 due to the Christmas holiday. All emails will be answered, but in the mean time, have a Merry Christmas!
     
  18. libra34567

    libra34567

    Joined:
    Apr 5, 2014
    Posts:
    62
    Love the plug-in!, Got it working on single player, is there any tutorial for multiplayer ? Or could you pls show me where the docs for multiplayer are? Thank you!
     
  19. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    Have you looked at this example?

    Assets\Rewired\Examples\EightPlayers
     
  20. aL0nerWolf

    aL0nerWolf

    Joined:
    Apr 8, 2014
    Posts:
    46
    I have a 2d sidescroller shooter and want to use and xbox controller. I can use the right trigger for shooting, but I need the trigger presses to respond like regular button presses and not like an axis. Is this possible with rewired?
     
  21. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    XBOX controller? Do you mean XBOX-360 controller or XBOX One controller? Is your game on the Windows PC platform?
     
  22. libra34567

    libra34567

    Joined:
    Apr 5, 2014
    Posts:
    62
    I got it working already!, but thx anyway, i will take a look into the example!
     
  23. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    Call player.GetButton or player.GetButtonDown on the Action you assigned to the L/R trigger instead of calling GetAxis.
     
  24. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    Longroadhwy is correct. The 8-player demo shows you everything you need to know.
     
  25. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    Did you file bug reports with Unity for these devices?

    Do you know if other developers have the same issue with Mad Catz arcade fight sticks on XBOX-ONE platform?

    http://store.madcatz.com/platforms/xbox-one

    Since Mad Catz has several controller devices (i.e. wheel, guitar, drums, and two different arcade fight sticks) on XBOX-ONE platform it would seem it would be most likely that they should work.
     
  26. UltimateWalrus

    UltimateWalrus

    Joined:
    Jul 19, 2014
    Posts:
    10
    This plugin looks genius. It's about time somebody fixed Unity's broken, embarrassing input system.

    I have a question about the plugin, though. Is Rewired capable of giving an exact timestamp of when a button was pressed or released? In order for this to happen, I assume Rewired would have to have some type of system callback that happens on a separate thread from Unity; either that or the native input data you are reading would have to come with a timestamp.
    EDIT: I suppose it's also possible Rewired knows about the irregularity of FixedUpdate and corrects for it already?

    My reason for wanting this is as follows: my dream is to be able to make Unity games on a fixed timestep (a foolish dream I know). Ideally even twitch-based games where input happens as fast as possible. I'm religiously against running game logic on a variable timestep, for reasons I won't go into here. When writing an engine from scratch, it's relatively easy to code using fixed updates; just prioritize the fixed timestep and have rendering "peer into" the game world when there is time. However, Unity's FixedUpdate isn't exactly fixed.

    If Update is slowing the framerate down, then FixedUpdate will pay the price. FixedUpdate is simply called as fast as possible over and over again to catch up with Update; it isn't actually called at fixed time intervals. It's true there are performance benefits to this. If this were a screensaver or something, it wouldn't be a problem, since we won't see the results until the next Update anyway. But when dealing with input, this becomes a problem.

    I always though my issues with input lag/loss were related to Input's polling being synced to Unity's variable timestep. But even if it was constantly up-to-date, there wouldn't be much difference, because the actual times FixedUpdate gets called at are irregular. If I had a timestamp for each button event, I could check it against the time each FixedUpdate was supposed to happen, and update my game world very accurately.
     
    Last edited: Dec 29, 2015
    LogicFlow likes this.
  27. MrG

    MrG

    Joined:
    Oct 6, 2012
    Posts:
    368
    Wouldn't you just need to cache all input in Update() and only process the most recent inputs in LateUpdate() if a certain amount of real world time has elapsed since the last processing, effectively 'levelling' the play against fast/slow hardware / network / etc. ?
     
  28. UltimateWalrus

    UltimateWalrus

    Joined:
    Jul 19, 2014
    Posts:
    10
    I'm not looking to level the playing field by slowing down input. I want faster input so that it can be done in FixedUpdate, thereby allowing input to be processed correctly and in a deterministic fashion.

    Look at it this way: suppose I'm playing a bullet hell shooter requiring very small adjustments to the player position. I hold the "right" key for 1/30 of a second, which, when the game is running at 60fps, would move me 2 pixels to the right, let's say. However, right at that moment, the framerate stutters to 15fps. This means I can't get another Update() and can't poll Input to see the key is up until 1/15 of a second after I started holding down the key. Unity will now think the key is held down for 1/15 of a second, and move 4 pixels instead of the 2 pixels it really should have moved.

    This is how Unity works normally, even if you use variable timestep like you're "supposed to." A home-rolled engine running on a proper fixed timestep would be able to handle this scenario correctly.
     
    LogicFlow likes this.
  29. MrG

    MrG

    Joined:
    Oct 6, 2012
    Posts:
    368
    @UltimateWalrus I'm going to back out of the discussion and point you here so this thread doesn't get hijacked.
     
  30. UltimateWalrus

    UltimateWalrus

    Joined:
    Jul 19, 2014
    Posts:
    10
    Thanks, but the reason I was asking for input timesteps is because I already knew FixedUpdate is called sporadically. If Rewired can give me that or something similar then it would be very useful for creating fixed timestep games that don't follow Unity's kludgy variable timestep paradigm, which is the reason FixedUpdate doesn't work how people might think.
     
  31. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    Do you have an enterprise agreement with Unity with access to the source code? That seems like the only real method to have full access to the entire event pipeline to get what you need with regards to timestamps, etc.

    Actually I am curious why you are using Unity for this type of application. It seems like this would be a cheaper to hire a team of engineers who know hard real-time constraints to write the application/engine for you.
     
  32. UltimateWalrus

    UltimateWalrus

    Joined:
    Jul 19, 2014
    Posts:
    10
    Cheaper to hire a team of engineers than to do something on my own or pay $50 for Rewire? o_o I'm afraid I don't follow...

    All things considered, there are a lot of really great features in Unity and I wouldn't be using it if I thought it wasn't worth the shortcomings. I just wanted to ask if Rewire has the capability to help me overcome one of those shortcomings. It's not unreasonable to think it's potentially possible using a native plugin, without having access to the entire Unity source.

    I'm not the only one to want this capability... this post details a potential method for faster input, though I think the conclusion was that OnGUI isn't called as immediately as one might hope (and it doesn't work for gamepads).
     
  33. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    It certainly looks to me to be beyond the scope of what Rewired currently provides or what Rewired is intending to provide with regards to feature set. I know I have asked for my share of "feature requests" (many in this thread) of Rewired that are beyond the scope too.

    Judging from the other post (that you linked) there are several interested parties who want such a custom Unity plugin. You should get all of those parties together, write a requirements document, IP ownership document, statement of work, contract and project management plan. Then hire a team to create the custom Unity plugin for all the interested parties. If you have many interested parties the cost should not be that high to get a custom plugin written. You might have enough technical experts among the interested parties to just write directly without having to hire a separate team to create it.
     
  34. UltimateWalrus

    UltimateWalrus

    Joined:
    Jul 19, 2014
    Posts:
    10
    I could definitely write a custom plugin, or even assemble a team, but I don't have time for that sort of thing. Maybe if @guavaman wanted me to take a crack at the Rewired source, I'd try. Otherwise, it'd probably just be easier just to optimize the hell out my games so they're very unlikely to dip below 60fps, avoiding the problems with Unity's variable input.

    In any case, I will probably get Rewired anyway. It sounds like a better fit for my project than cInput which is what I currently use.
     
  35. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    Rewired has definitely set the standard for native input that works so well. I am so thankful to not have to spend my time fighting the Unity input system.

    Seems easier to optimize your game in other areas and set higher minimum system requirements for your game.
     
  36. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624

    It is not capable of this at the present time. I had plans to do this in the past, but the amount of work/time required to implement it across all platforms for keyboard, mouse, joysticks, and touch is just prohibitive. This requires writing full native input handling of all device types on about 20 platforms. It would also require a huge number of changes to the shared code and the public API to handle it. Because of how few developers have requested this feature (count them on one hand), the investment of time required simply makes it not sensible to pursue.

    I have considered making only limited parts of the system multi-threaded on certain platforms (for example, Windows, Raw Input and XInput only, only for joysticks), but having such uneven capabilities across platforms and even across device types on the same platform would be confusing to customers and difficult to explain. It would also not help in some of the most common use cases for PC gaming such as keyboard/mouse control, which would require a complete native keyboard implementation to go alongside the current native joystick and mouse implementations.

    That said, if I were to decide to go down this road (as I do think about it from time to time and have made an alpha implementation for joysticks in Raw Input in the past), I would probably focus only on Windows, then perhaps OSX, and the last would be Linux and maybe Windows Universal, skipping all the mobile platforms and consoles.
     
    Last edited: Dec 30, 2015
  37. UltimateWalrus

    UltimateWalrus

    Joined:
    Jul 19, 2014
    Posts:
    10
    Thanks for answering my question! Maybe you could avoid confusing customers by organizing all related methods under a class with the word "Advanced" in it.

    I know it's probably a rare request, so it might not be worth it for you to spend time on it. But it's important enough to me that I may be willing to put in some time pro-bono getting just Windows working for you, if you were interested. I'm an expert programmer well-versed in C++ and DirectX (though I haven't used it since 9.0c). Can't guarantee anything obviously but let me know if you're interested.
     
  38. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    Hi,

    Thanks for your offer to help! Unfortunately, Rewired is closed source software and I do not give access to the source code. In addition, without a deep knowledge of how Rewired works internally, it would be very difficult and time consuming to add this feature.

    As far as not confusing customers, I wasn't referring to the API. I was referring to how to get across in marketing materials that only certain device types on certain platforms support framerate independent input. You can't really advertise support for it when it only works for Windows joysticks.
     
  39. UltimateWalrus

    UltimateWalrus

    Joined:
    Jul 19, 2014
    Posts:
    10
    Totally understandable. Anyway thanks for answering my questions, Rewired still looks great! I'll have to try it out when I have time to un-shelf my multiplayer game.
     
    guavaman likes this.
  40. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    guavaman likes this.
  41. Justin-Wasilenko

    Justin-Wasilenko

    Joined:
    Mar 10, 2015
    Posts:
    104
    Just a quick question on the PS4 controller support. I'm developing for android for google cardboard and GearVR. When I connect over Bluetooth the buttons are mapped incorrectly, I haven't had a chance to try USB too see if it works that way (But my otg cable is on the way). But Bluetooth is important because the USB port is taken up in the GearVR.

    The question I have is, in the game Dead Trigger 2 which uses Unity, the PS4 controller works perfectly over Bluetooth. Why doesn't it work correctly with Rewired?

    Everything else I have done with the plugin is awesome so far :)
     
  42. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    R
    Refer to the supported controllers page:

    Android:
    DS4 Wired - Supported
    DS4 Bluetooth - Not Supported

    I have found no way to even detect the DS4 on Bluetooth on any Android device I've tested with except the Amazon Fire TV. It simply does not show up. Further, if you're actually able to get the DS4 to connect and show up via Bluetooth, if it's mapping is wrong, it means the device has a different mapping in wired vs Bluetooth mode as it also does in Windows when using Unity fallback. Because Unity only gives you the name string to work with ("Wireless Controller"), there's no way to differentiate a wired connection from a wireless connection, so it's only possible to support one of the two connection mode through automatic device recognition. I created the Android definition based on the wired connection's layout because I could not get a BT connection to work.

    I cannot speak for Dead Trigger 2 as I did not program it. If they use UnityEngine.Input, then the controller would be recognized only with either Wired or Wireless and not both. If using the other connection mode, the controls would have to be remapped manually.

    Bluetooth controllers designed for Android are a far better option.
     
    Last edited: Jan 2, 2016
  43. Justin-Wasilenko

    Justin-Wasilenko

    Joined:
    Mar 10, 2015
    Posts:
    104
    I have no problems connecting my DS4 controller over Bluetooth to my Samsung S3, works no problem, turn on Bluetooth hit pair and done. and like I said it works in Dead trigger and other games.
    So it sounds like a mapping problem, maybe I'll have to look into it a bit more and see if I can create my own template for the PS4 as a wireless controller on android. Still learning Rewired.
    But seems like a strange decision to support the wired version instead of the wireless, but if you didn't get it to work on your device I understand that. Thanks for the reply.
     
  44. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    Without knowing what kind of input system these games are using, it doesn't really say anything whether these other games work or not with the DS4 on bluetooth. If they're using UnityEngine.Input, that's one thing, but if they're using a native Android input implementation, that's a different story.

    You won't be able to make a new definition because it can only support one single definition that matches the "Wireless Controller" string Unity returns for the DS4. Unity cannot tell you whether the DS4 is wireless or wired. If you want it to support wireless, you're going to have to change the existing definition for DS4 on Android to match the wireless button layout. That is the only way.

    There was no way I could make the DS4 appear to Unity, which is the input source Rewired uses on Android for all input. I used 3 different Android devices, all with different OS versions. (The 4th was Amazon Fire TV, which worked, but has a modified button layout vs Android stock anyway.) It was the only decision possible based on testing with the devices I have available. Perhaps things have changed in later versions of Unity since I created the DS4 definition. If that's the case, I will update the DS4 definition to use the BT button layout instead. But realize that if I do that, when a player connects a DS4 with a wire, it won't work right anymore because the button layout will be off now for the wired connection. It's a limitation of not having access to more detailed data about the attached devices.
     
    Last edited: Jan 3, 2016
  45. Justin-Wasilenko

    Justin-Wasilenko

    Joined:
    Mar 10, 2015
    Posts:
    104
    Cool, thanks for the info. Interested to see if it has something to do with the newer version of Unity, I'm using 5.3.1 on a Samsung S3 with Android 5.1 as my platform, have an S6 on the way. Would be happy to have the PS4 work wireless instead :)
     
  46. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,735
    I'm looking into rewired hoping it would solve the following problem:

    We have a user on Android trying to use Logitech WingMan Cordless RumblePad with our game. On android we ask the users to map their controllers by prompting them to press the buttons we show them, so we can have support for whatever weird mapping

    With that particular controller L1, L2, R1, R2 and Z (one of the extra face buttons) just refuse to be recognized by our game.

    Our theory is that somehow the controller/driver is asking for button 20+ that Unity simply does not support.

    Can rewired help with this problem?
     
  47. kenshin

    kenshin

    Joined:
    Apr 21, 2010
    Posts:
    940
    Hi,

    I need to create a non-game app that work on a big touch screen, is your asset useful for this type of works?

    Do you provide any pre-made scripts for basic touch camera controls (orbit, pitch-zoom, ecc...) or gestures?

    Do you support TUIO protocol?

    Thanks in advance!
    Kenshin
     
  48. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    No. Rewired uses UnityEngine.Input as the input source on Android. Unity maps all "legacy" controllers (Raw Input/Direct Input controllers which includes older gamepads, all flight controllers and racing wheels, etc.) map button 0 starting at button 15, so there are only 5 entries for buttons. Most "legacy" controllers will not work properly on Android because of this. See the Supported Controller List for the list of controllers that work on Android with notes on ones that only partially work.

    See the Rewired website for the list of platforms that use native input.
     
    Last edited: Jan 3, 2016
  49. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,624
    Rewired works for anything that needs input.

    No. Rewired does not provide any game-logic scripts or wrappers for UnityEngine.Input.touch.

    No. Rewired does not interpret touch controls in any way by itself. Touch is available through UnityEngine.Input and can only be used with Rewired by creating a script that feeds a Custom Controller to make touches/gestures the input values for elements in that controller which can then be mapped to Rewired Actions. Rewired does not replace plugins that read touch input/gestures, but it can be used with those plugins with some scripting.

    See the Rewired website for the list of features.
     
    kenshin likes this.
  50. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,735
    That's consistent with what we'be been told (5 face buttons work and nothing else).

    So is there really no way around this? That's disappointing.