[Touch Pro2, Tilt 2 Themes and Apps] thx1200:
Overview

The Zoom Bar is the little strip at the bottom of your Touch Pro 2's screen that is used in a handful of applications on your device. Wouldn't it be nice if you could use it in every application? Customized to fit your needs? That's where ZoomBarPlus comes in! You can map keystrokes for tapping, double tapping, long tapping, and swiping left/right. Default zoom functionality is also retained for all applications that are already Zoom Bar aware.

This app was developed because I wanted to have a virtual D-Pad of sorts. The default actions are swipe-right sends the down arrow, swipe-left the up arrow, double tap the action (center) button, long tap is backspace (which is "back" in Total Commander CE, which I use a lot). You can set it up any way you want!

ZoomBarPlus is a TRUE Windows Mobile service, so it does NOT use one of the precious few 32 slots available for processes. You can find more information about services here.

PLEASE NOTE THAT THIS APP IS DESIGNED TO WORK ONLY ON THE TOUCH PRO 2 (AKA RHODIUM / TILT 2) AND DIAMOND 2 (AKA TOPAZ / PURE) AND RELATED DEVICES. It has also been successfully tested on the HTC Imagio (aka Whitestone) and HTC Mega (aka Touch 2). If I'm missing any zoombar phones here that it works on or needs to be tested on, please let me know.

CodePlex

ZoomBarPlus development is hosted at Microsoft CodePlex! http://www.codeplex.com/ZoomBarPlus

License

Ms-RL

Tip Jar

Like this app? Want more like it or quicker updates? Tip a buck (or Euro or Pound or whatever) or two to help the author out! Click here to make a safe donation via PayPal.

Current features

- This is a BETA release, so it should be treated as possibly being unstable!

- Assign keycodes to tap, double tap, long tap, swipe left, and swipe right gestures on the zoom bar.

- Swipe gestures can repeat keystrokes when held, which is good for simulating holding down a D-Pad button, for example.

- Use a registry editor to change configuration settings (a config app will come soon).

- Disables itself if the user is using an application that handles the ZoomBar natively.

- Option to disable itself if the user is on a MessageBox (dialog), so as to not accidentally confirm an "are you sure" notification.

- VERY low resources used -- runs as a TRUE service and uses as close as 0% CPU as is possible by an app like this.

Future features

- Configuration app (.Net CF 3.5 required).

- New gestures: tap and swipe (with hold). Default will be D-Pad Left and D-Pad Right.

- AppToDate support

- New registry location for settings (for safety): HKCU\Software\Avian Waves\ZoomBarPlus

- Per-Window Class settings: ignore (default ZoomBar), or custom gesture settings

- Screen orientation aware (optional landscape flip swipe gestures)

Latest ChangeLog

- Fixed bug: if the active window changed while you were in the middle of a single tap delay, long tap delay, or swipe-repeat, it would continue repeating, even if the new foreground window class was one of the classes that handles the ZoomBar natively, leading to unexpected results.

- You can now specify whether you want ZBP to deactivate when the MessageBox class is in the foreground. This is useful for disabling ZBP when a confirmation message appears. In particular, with Total Commander CE, it was very easy to try to "tap" to activate a file and accidentally click the DELETE button simultaneously, leading to a Delete->Confirm Yes situation. Needless to say, it led to bad results when a lot of stuff you didn't want to delete was, in fact, deleted. :-( Now, it can't happen because ZBP will (by default) deactivate when the confirmation box appears.

Video

See it in action! Thanks to PocketNow for the great review!

http://pocketnow.com/tweaks-hacks/zoombarplus-use-touch-pro2-diamond2-zoom-bar-as-a-d-pad

Registry

All apps listsed in HKLM\Software\HTC\SmartTouch are ignored so that ZBP doesn't interfere with built-in zoom functionality of those apps.

Settings for ZBP are in HKLM\Services\ZoomBarPlus. Setting any keycode to zero disables the feature.

The service needs to be restarted (use DotFred's task manager) or the device soft reset for changes to take effect. This will get easier after this app is out of beta. :-)

Tap = Keycode sent to focused window when the zoom bar is tapped once.

DoubleTap = Keycode sent to focused window when the zoom bar is tapped twice in succession.

LongTap = Keycode sent to focused window when the zoom bar is pressed and held.

SwipeRight = Keycode sent to focused windows when the zoom bar is swiped to the right (repeated for each 'segment' you pass).

SwipeLeft = Keycode sent to focused windows when the zoom bar is swiped to the left (repeated for each 'segment' you pass).

DoubleTapInterval = Time in ms that ZBP will wait for the second tap in a double tap.

LongTapInterval = Time in ms that ZBP will wait before executing the long tap action.

SwipeDoRepeat = Should the swipe gesture automatically repeat if you hold your finger down?

SwipeRepeatAfter = Number of ticks of a swipe before doing the swipe repeat.

SwipeRepeatIntervalFirst = First delay (in ms) before doing a swipe repeat.

SwipeRepeatIntervalRate = Interval (in ms) between each swipe repeat action.

VibrateInterval = Length of time to vibrate for haptic feedback.

VibrateSwipe = Provide vibration (haptic feedback) on a swipe action?

VibrateTap = Provide vibration (haptic feedback) on a tap action?

DisableOnMessageBox = Do not process ZBP command when the current in-focus window is a Message Box (dialog)?

The default settings are:

Tap = Do nothing! (0x00)

DoubleTap = Center "action" button - VK_TACTION (0x0D)

LongTap = Backspace - VK_BACK (0x08)

SwipeRight = Down Arrow - VK_TDOWN (0x28)

SwipeLeft = Up Arrow - VK_TUP (0x26)

DoubleTapInterval = 350

LongTapInterval = 650

SwipeDoRepeat = 1 (Yes)

SwipeRepeatAfter = 5

SwipeRepeatIntervalFirst = 350

SwipeRepeatIntervalRate = 100

VibrateInterval = 25

VibrateSwipe = 0 (No)

VibrateTap = 1 (Yes)

DisableOnMessageBox = 1 (Yes)

Notes

I would recommend NOT setting a keycode for single tap. The reason being that the zoombar seems to have its sensitivity bleed into the bottom part of the screen. So what tends to happen is you will tap a button that's on the bottom of the screen (such as a menu) and the zoombar single-tap action will activate as well. I cannot adjust the zoombar sensitivity, so I cannot work around the sensitivity in code. I found that double-tapping on the zoombar becomes intuitive if you are trying to achieve a D-Pad of sorts, which is why I developed this app. :-)

Download

CAB Installer: http://zoombarplus.codeplex.com/releases

Source Code: http://zoombarplus.codeplex.com/SourceControl/list/changesets