I have a couple of app already and now I reading the feedback. Most of the user are confused by the fact that the app behave like a desktop app on their tablet or behave like a tablet on a desktop.
Especially for app that are designed for touch and traditional keyboard/mouse and xbox controller.
Worst, on one submission over two, I have rejection from certification because the app is not working on tablet, but in fact it is, it was certified the version before (had to resubmit), after that it changes of tester, who understood that there is options
menu to change the input.
From a developer point of view, here the issues with Windows RT API
1) There is no mean to detect if the computer is a tablet or a desktop computer
By not having this, it is not possible to automatically adjust the UI to user and proposing correct input like mouse, keyboard or joystick.
2) On a tablet, there is no mean to detect if a keyboard is connected (no, KeyboardIsPresent is not reliable)
By not having this, it is not possible to automatically change the UI to keyboard back to touch in real time.
Note: That windows RT uses some undocumented function to detect it: You can see on Windows Surface, if you detach the keyboard, it shows the virtual keyboard.
3) It is not possible to display the virtual keyboard programmatically
A collateral issue since you can't either detect if a keyboard is connected. Especially some D3D games where, for example, you need to type your name.
Here the workaround I found, but looking for better options:
1) Try to detect that the app is running on a tablet (but it is not accurate) by detecting if an accelerometer is present. This might works at 99%, but you need to have accelerometer always active.
2) Increase the friction by spamming the user to confirm the input chosen like: "Are you sure to use TOUCH control ? This won't work on a desktop computer" , etc.., each time before starting a game.
3) Create own Virtual Keyboard (some time to develop), and propose a button to show.
Any other ideas to address those outstanding issues?
PS: This thread is in C++, because it is related to non XAML C++ apps. Issue about keyboard not present was at lot discussed without proper answer, as well as tablet vs desktop solution. This thread aggregates and sums up all the issues.