|
||||||||||||||
Touchscreen implementation progressWhy?Several upcoming targets feature a touchscreen as their main input method, and some of these have no (useful) physical buttons at all. The Rockbox UI needs to be adapted to make use of the touchscreen on these ports. The touchscreen is currently used as a 3x3 grid of emulated "buttons". This allows screens' keymappings to be defined in the usual manner, thus providing access to most Rockbox functionality. While this method does work (and may have advantages for some users) it is not an intuitive way to use a touchscreen, and does not allow the full potential of these devices to be used. Users have the option to switch to "Absolute Point" mode, which is our name for a "real touchscreen" mode. This page discusses progress towards making Rockbox usable in this mode. The goal is for all screens to work in either grid or absolute mode, without forcing the user into a particular touchscreen mode. NOTE: "Absolute Point" mode is a poor name, other suggestions are welcome!What needs to be doneUnfortunately, every screen in rockbox will need some amount of reworking/fiddling to make it work, and there are lots of screens in rockbox, so this will take a while. Each button loop needs to be fixed so if the returned action from action_get() is ACTION_TOUCHSCREEN it needs to figure out where the user pressed so it can decide which action the user wanted to do. On most screens this shouldnt be too hard, but some will be very tricky, (my goal is to be able to use the images on the WPS as the buttons, so they would be themeable)Screens adaptedSo, im going to try to keep this page updated instead of putting this on the tracker because it wont be ready for svn for ages. Here are the screens which currently work with the mouse (and some help on the screen "points")
Screens NOT yet adaptedThe following is a list of some of the screens that still need to be adapted:
PluginsCurrently the plugin loader forces the user into 3x3 grid mode (without any warning) before entering a plugin, and restores the user's preference on exit. This is far from ideal, since the user should not have to adjust to 3x3 grid mode to navigate a plugin's menu.... One solution would be to remove this 'forced switch' on plugin entry, so that the user's preference is maintained as far as possible (especially while browsing menus). Each plugin that goes "full screen" should be modified to explicitly set Grid or Absolute mode as appropriate, but when returning to a menu the user's preference should always be restored.WPSA description of the touchscreen WPS tags can be found on the CustomWPS page. A version of the CabbieV2 WPS in SVN (cabbiev2.320x240x16.mrobe500.wps) contains an example of how to use the touchscreen tags. There is a separate question of creating a default WPS for touchscreen targets. This is particularly a problem on the Cowon D2, where CabbieV2 uses a font that is too small to be useful on its 320x240 touchscreen.How to helpPick a screen to adapt, then remember to upload the patch to FlySpray. look at apps/gui/list.c for a full example on how to fix a screen, but quickly...if (action == ACTION_TOUCHSCREEN) { int x,y,button; get_action_statuscode(&button); x = (button_get_data()&0xffff0000)>>16; // 0 is left y = (button_get_data()&0xffff); // 0 is top // figure out what the user pressed action = ACTION_STD_? } Changes
Comments?
r19 - 02 Apr 2021 - 20:46:07 - UnknownUser
Copyright © by the contributing authors.
|