[Windows Mobile Software Development] l3v5y:
LMT is a tool for the HD2 that launches a program when perform single touch or multitouch gestures on the screen. You can connect internal commands and external apps to any gesture LMT supports. See a video here.

Installation

Download the latest version, copy it to your HD2, start the cab via file explorer and install LMT on internal memory. After installation start LMT. You won’t see any GUI since LMT is a background process. Try at first the double swipe up gesture. If everything works fine, you’ll see the corresponding overlay and the foreground process will be closed (closeApp is the default action for double swipe up).

Gestures

SwipeRightDouble

SwipeLeftDouble

SwipeUpDouble

SwipeDownDouble

SwipeRightLeftDouble

SwipeLeftRightDouble

SwipeUpDownDouble

SwipeDownUpDouble

QuestionmarkDouble

SquareDouble

DiamondDouble

Square (start gesture top left cw)

Diamond (start gesture at the bottom cw)

Delete (start gesture top left)

Learning gestures

There are two ways to connect apps to gestures. The first one is to draw the “learn gesture” on the screen and afterwards the gesture, you want to connect the current foreground app with. This method is easy but has some limitations. You cannot assign process arguments or assign internal commands to gestures. The second way is to configure LMT via registry. Navigate with your preferred registry editor to HCKU\Software\LMT. Here you can see which commands are currently connected to a gesture and you can edit any gesture/app relation. To assign an external app to a gesture insert the full path to the process: [Full path to exe],[arguments]. E.g. "\Windows\tmail.exe,-RunInBKG". To assign an internal command to a gesture insert on of the following command strings.

Commands

“CloseLMT” -> close LMT

“CloseApp” -> close the foreground app

“Learn” -> activate learn mode

“Back” -> send back key

“Start” -> start menu

“Lock” -> lock phone

“Phone” -> start Phone app

“Up” -> send Dpad up

“Down” -> send Dpad down

“Left” -> send Dpad left

“Right” -> send Dpad right

“PrevApp” -> switch to previous app (Alt-Tab feature)

“NextApp” -> switch to next app (Alt-Tab feature)

“Home” -> switch to Homescreen

“Rotate” -> rotate screen

“Controller” -> activate the controller mode

Controller Mode

Use the controller as a generic gamepad for e.g. FPSEce, morphgear or flash games. The controller is multitouch capable and converts the touches to key events. You can define the keys to be sent via registry value "ControllerKeys": Down, up, left, right, 1, 2, A, B, C, D, X, Y. The button "R" toggles between portrait and landscape mode and partial and full screen lock. The button "X" deactivates the controller mode. The registry value "ControllerVibrate" defines the vibrate status: 0=off, 1=default, >1=time in ms. To quickly install and configure LMTs controller with FPSEce and morphgear I made a fpse.ini file and a registry file for morphgear. The howto:

FPSEce:

install FPSEce on internal memory

before first start replace the existing fpse.ini with the attached one

now start FPSEce

load a rom, start LMTs controller and have fun!

Morphgear:

install morphgear and e.g. the generator plugin on internal memory

start morphgear and close it again

import the attached registry file

now restart morphgear again

load rom, start LMTs controller and have fun!

These aren't the perfect settings since I only patched the key inputs to work properly with LMTs controller but it's a good base for further settings. If anyone has better settings, it would be nice if he could post them here... :-)

Settings

There are 3 blacklists available to exclude processes from taskswitching (BlackListSwitch), from the closeApp feature (BlackListClose) and to deactivate LMT when the process is the current foreground app (BlackListAll). Just add the full path to the process to the multistring. There is also 1 whitelist available: WhiteListBack. If Opera 9 is the current foreground app and you activate the internal command “Back”, LMT will send a special key to navigate back in Opera.

With the registry value “SingleTouchGestureSupport” you are able to activate or deactivate the single touch gestures (Square, Diamond and Delete) and with the registry value “TapAndHoldGestureSupport” you can activate a special feature where you can draw all dual touch gestures with one hand: Just tap with one finger somewhere on the screen and draw "one part" of the multitouch gesture with another finger. Then release the tapped finger and the gesture will be recognized.

Changelog 0.8

Fixed rotation feature

Controller button "R" now toggles between: Portrait (fg app touchable) -> Landscape (fg app touchable) -> Portrait (full screen lock) -> Landscape (full screen lock)

Added Mario feature in controller mode: The areas between A and B, C and D and X and Y will lead to both keyevents. When you e.g. run in Mario Bros. with button "C" and jump with button "D" you can run with "C" and then slide your finger right. Then "C" and "D" will be both pressed. Mario will run and jump... :-)

Fixed rotate and exit button in controller mode (no interference with fg app)

Added dword reg value "ShowOverlay": 0=overlays deactivated, 1=overlays activated with default time, >1=overlays activated with custom time (ms)

Optimized square gestures

Removed arrow gestures

Added 5 new mt gestures: Double Diamond and Swipe left/right, right/left, up/down, down/up

Added 1 st gesture: Diamond

Added \Windows\services.exe to BlackListClose

Set new defaults for gestures (see registry!)

LMT is now rotation arware and works also in landscape mode (only 270°)

Controller supports now real landscape mode (e.g. for flash games)

See full changelog in changelog.txt attached!