Do some custom actions on hardware keys based on running app - Windows Mobile Development and Hacking General

Hi
I'm currently watching a transcoded broadcast of my TV by running VLC on the PC and watching it with CorePlayer on the PPC.
I also have a web page I can access on the PC to change the channels, using EvenGhost.
But in order to change the channel I have to switch from CorePlayer to Pocket IE, switch channel, and go back in coreplayer.
I looked at AEButton Plus but as the dev says, it's not contextual, meaning the actions done on the hardware keys won't change given the running app.
That's a shame, as it would be exactly what I need - run the "channel up" url on the arrow up key, and channel down on arrow down.
Anyone knows of another app or workaround that could do it? Thanks a bunch

you could use the double or triple click feature of AEButton

Well, you can try creating a mortscript that would check what app is active and perform an action depending on that, and bind that mortscript to a hardware button of fTouchFlo gesture.
See this tread foe some mortscript examples:
http://forum.xda-developers.com/showthread.php?t=289197
Even better solution is FtouchSL: it has an interesting option to bind different actions to gestures depending on active app built-in, Available gestures are: up/down/left/right strokes + holding stylus in one of screen corners = eight possible customizable actions in each program plus default action executed in programs where default action is not defined. But ftouchSL it's not free. However it's not that expensive and might be a good solution for you.

Related

Which function you use the most in smartskey

Hi, would like to know what do you think about smartskey.
The softkey remap adding both Start Menu and Close functionality is really what brings real convienience to using my K-JAM.
The other features are nice, but I rarely use them.
When using OmapClock, I prefer to add my own startup and notifcation events.
Edit: the "alternate" startmenu key function is brilliant! I now use GSPocketMagic and it works great!
First of all, thank you very much for this great piece of work.
Softkey remap is used most often. Volume key remap is the next most used.
This is a wonderful bit of work. I use the dpad mapping about 98% of the time I use the phone. I also use the close with right soft key mapping fairly frequently and the volume key mapping to disable the today screen volme control (safety first!) and for scrolling within apps. Postal and Paypal gratitude forthcoming.
New function to close screen and block buttons
Hi,
I think it will be very very usefull to have a button which blocks all the buttons and toggle off the screen. It would make the program almost perfect!
water said:
Hi, would like to know what do you think about smartskey.
Click to expand...
Click to collapse
there sholud be checkboxes instead of radioboxes in this poll. i'd check all options besides volume key remapping, because i prefer it to stay with its original function. if i could suggest anything new, it would be some piece of GUI placed in Settings window for configuring smartskey. editing smartskey.ini every time after installing new version is not quite convenient way, mostly when it's unicoded in some strange way and not every text editor can handle it (gedit in GNOME - for example - can't).

Simulate touchscreen tap, or add ShortCut key.

Hello,
I have such a problem. But first I will explain why I have that problem.
In company we are using a PocketPC with Windows Mobile 2002. And have only one apllication for work.
When connecting to Server we need to tap the left bottom corner of the screen.
Many of workers tap with diferent objects like cutters, pens, not with Stylus, so the left bottom corner become bad in 1-2 months, till the time I can't do nothing, just changing the screen.
So. There is a posibility to implement somehow a ShortCut to that menu, to avoid taping that part of screen? (Because after that in program we use only buttons.)
(Note: I have no source code for tha app.)
Any kind of help will be apreciate.
Thank you much!
It's easy to simulate screen tap by code.
Do you have experience programming in C/C++?
If so all you have to do is write a little app that does the following:
Code:
HWND hWnd; //window handle
hWnd = FindWindow(L"BUTTON", L"Connect to server"); //this text is just an example
SendMessage(hWnd, WM_LBUTTONDOWN, 0, MAKELPARAM(5, 5)); //actually simulates the click
Then you can assign this app to a hardware button using device settings or put a shortcut to is in the start menu.
I don't know of any ready apps to just simulate a click, but there was a thread around here somewhere on a virtual mouse app for PPC. It's free so try searching for that. (Sorry, don't remember the link).
Good luck.
Thank you man.
I'll try this...
levenum said:
It's easy to simulate screen tap by code.
Do you have experience programming in C/C++?
If so all you have to do is write a little app that does the following:
Code:
HWND hWnd; //window handle
hWnd = FindWindow(L"BUTTON", L"Connect to server"); //this text is just an example
SendMessage(hWnd, WM_LBUTTONDOWN, 0, MAKELPARAM(5, 5)); //actually simulates the click
Then you can assign this app to a hardware button using device settings or put a shortcut to is in the start menu.
I don't know of any ready apps to just simulate a click, but there was a thread around here somewhere on a virtual mouse app for PPC. It's free so try searching for that. (Sorry, don't remember the link).
Good luck.
Click to expand...
Click to collapse
So I have not so many experience in C++ and nor in Visual Studio.
Can you provide me with full c++ code for Visual Studio 2005?
Thank you in advance.
Here is another way. Just create a simple project in vis studio ( I am not using 2005 so I cant tell you what its called, if all else failes use the "hello world" option). Open the main .cpp file and after the includes delete everything. Paste this in....
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_ABSOLUTE,61439,1638,0,NULL);
return 0;
}
Then build the exe. Make a shortcut to the exe on your device and place it in the windows\start menu folder. When the user taps the shortcut the cordinates specified will get a mouse down message, not all ppc programs will rspond to this message but most bought software I have do.
As it is, this will hit the close button on a 240*320 display. To vary the target location see this from the documentation:
If MOUSEEVENTF_ABSOLUTE value is specified, dx and dy contain normalized absolute coordinates between 0 and 65,535. The event procedure maps these coordinates onto the display surface. Coordinate (0,0) maps onto the upper-left corner of the display surface, (65535,65535) maps onto the lower-right corner.
...So you may need to play with it to hit the spot.
If that fails then just replace the
mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_ABSOLUTE,61439,1638,0,NULL);
with levenum's code putting the name of the window you are talking about in instead of "Connect to server" to send the normal WM_LBUTTONDOWN message to that window.
OdeeanRDeathshead, your method seems to work. I did it and application works proprely on my Magician.
But now the question is: I need that program for a PocketPC 2002 platform. How to do this in VS2005, can explain me anyone?
Thank you in advance.
Actually, you can't write apps for WM2002 using VS2005.
You need eMbedded Visual C++ 3. It is available free from Microsoft, just search the site. You will also need to install Pocket PC 2002 SDK. (also free on MS site)
levenum said:
Actually, you can't write apps for WM2002 using VS2005.
You need eMbedded Visual C++ 3. It is available free from Microsoft, just search the site. You will also need to install Pocket PC 2002 SDK. (also free on MS site)
Click to expand...
Click to collapse
Ok.. all this I installed.
I will try to do the program there. But problem become more complicated.
My PDA's are not HTC. They are modified by SYMBOL company. So.. I realized that i have no HARD BUTTON.
In start menu I can't let the application, only because START is not accessible. The only program is that for work and it's full screen.
The PDA have a keyboard.
The question is: it is possible to do in program a HOT_KEY combination, and run MOUSEEVENTF_LEFTDOWN only when HOT_KEY combination was pressed.
I understand that program must remain in memory to intercept that.
Do you mean that there are no buttons on your device, only a keyboard?
Doesn't matter really because as far as windows is concerned keystrokes from device buttons and full keyboard are handled the same.
Sorry I am not really familiar with setting up hot keys, I think your app window needs to have input focus for that to work.
There is a function called SetWindowsHookEx that lets you hook all keyboard events so they will pass through your function. You can then have a small app in background (without UI) that will monitor any key combination you want and simulate the tap when necessary.
levenum said:
Do you mean that there are no buttons on your device, only a keyboard?
Click to expand...
Click to collapse
Yeah.... it looks like this http://www.symbol.com/PDT8100
I do not know if you can throw some cash at your problem but SKScHeMa from www.s-k-tools.com can wait for an application to start then execute a script. In the script you can simulate both tap and tap and hold actions.
Hope that helps.
Regards cjb.
One of those buttons must correspond to the buttons on the normal ppc. It would be overkill too write an app to run constantly just to redirect one tap. Do you have the opportunity to ever start the unit without the fullscreen program running, if so you could experiment with the button assignments to find the correct one. If the author of the custom software on the thing was half good they could have disabled those buttons assignments while its running, but if they didn't thats the best solution.
If that fails perhaps a program to run after powerup and ask if the user wants to connect to the server could work. It could show for 10 seconds then end. There was a thread here somewhere about programs starting on powerup but I can't seem to find it now.
edit:
I read the specs and it has two "side scan keys", I bet they are your buttons waiting to be reassigned!
OdeeanRDeathshead said:
One of those buttons must correspond to the buttons on the normal ppc. It would be overkill too write an app to run constantly just to redirect one tap. Do you have the opportunity to ever start the unit without the fullscreen program running, if so you could experiment with the button assignments to find the correct one.
Click to expand...
Click to collapse
No one of that buttons corespond to CALENDAR or CONTACTS or CAMERA or RECORD button.
I can start the device without work program. Also I don't need to simulate tap, because I own my PDA and have knoweledge how to use it.
Users don't know much... for that i disables all. Only Work program in fullscreen mode without START MENU.
I read the specs and it has two "side scan keys", I bet they are your buttons waiting to be reassigned!
Click to expand...
Click to collapse
This is a PDA with barcode scanner. That 2 buttons named "side scan keys" are only for SCANNER and are not programable.
TO ALL: Thank you for your support![/quote]
cjb said:
I do not know if you can throw some cash at your problem but SKScHeMa from www.s-k-tools.com can wait for an application to start then execute a script. In the script you can simulate both tap and tap and hold actions.
Hope that helps.
Regards cjb.
Click to expand...
Click to collapse
Thanks for help.
I can't do any investitions in that.
More of that it's not the same I need. I need to simulate this not only at start, also during work.
Yes, so make the prgram asking if a connect is needed run when the power button is pressed. If the user needs to connect they press off then on then the window comes up asking if a simulated tap is needed (I do not mean reset). If the full off is not desireable then dose your unit change the brightness when the power button is held down? If so, and if it is using the standard name for the named event to signal brigtness changes then you could make the tap simulate program run all the time in a loop but waiting for the brigtness change event. Waiting will take up almost no processor time and the program is so small it takes up almost no memory! The user just has to hold the power button for several seconds and the your window will pop up. The down side is that your app will also have to save then restore the brigtness settings so the user dose not need to manualy reset the brigtness level.

[APP][Feb 12, 2009] X1BC (X1 Button Controller) v1.1 Released

X1BC v1.1
X1 Button Controller
Feb 12, 2009
By Jonathan King​
Description
This program is released open source. Contact me if you would like a copy of the source. The program is capable of capturing both short and long presses of panel key, ok key, L/R softkeys, up/down volume keys, and the win key on the slide out KB. The camera half and full press can also be captured and fully configured for short and long half press, as well as short and long full press. Also, the camera key will be ignored while the camera program is open. Capturing each key is all optional. They can be switched by the registry keys detailed in the next post. By default, if the reg keys are not there, none are captured. You can capture the long press only, short and long press, or leave the key alone. Fn key presses are also detected for A, S, D, F, G, Z, X, C, and V keys. Registry strings are used to specify what happens when the key is pressed. You can choose to open execute anything from a program exe to a mortscript to an mp3. You may also configure it to send a character or special key. This allows maximum flexibility.
The program can also make the win key or tab key a ctrl key. There are two modes of operation for each key. For the win key: Short press mode (short press to enable ctrl then press a letter), Long press mode (press letter while holding ctrl). With the tab key, it is still possible to send a tab character: Short press mode (short press to enable ctrl then press a letter; long press sends tab chr), Long press mode (press letter while holding ctrl; short press sends tab chr).
The program also supports vibrate feedback for a press and hold event. The duration is configurable or this can be disabled. Also configurable is the duration you must hold a key for the long press to occur.
To start the key hook, just launch X1BC.exe. If it is already running, launching X1BC.exe again will end the program and restore the keys to default.
Notes
While the panel key is captured, on the ROM I run with no panels installed I still get a popup saying could not find panelmanager.exe. I am not sure what would happen on a ROM with panels installed. To prevent this all together delete the whole registry key HKLM\Software\Sony Ericsson\PanelManager. You may want to back it up first but there is not harm in deleting it. You do need this key if you want to use panels though. But if you do use panels you dont want to remap the panel key anyway.
Capturing the win key on the slide out KB is tricky, but I think I have done it in a way that wont cause problems. It works well as a ctrl key and I havent had problems with it, but I still think the tab key makes a better ctrl key because it behaves like a regular key and is therefore easier to manipulate.
Disclaimer, use at your own risk. I have tested and debugged in the emulator and on my X1. I dont do anything that I think could really cause any harm or data loss. Has never crashed on me at any point during dev. The program does not make any changes to the system. It just runs in the background. If terminated everything works as it did before the program was started. Try it out.
Registry settings:
The following are DWORD values:
HKCU\SOFTWARE\JKing\X1BC\CapturePanel
HKCU\SOFTWARE\JKing\X1BC\CaptureOK
HKCU\SOFTWARE\JKing\X1BC\CaptureLeft
HKCU\SOFTWARE\JKing\X1BC\CaptureRight
HKCU\SOFTWARE\JKing\X1BC\CaptureVolumeUp
HKCU\SOFTWARE\JKing\X1BC\CaptureVolumeDown
HKCU\SOFTWARE\JKing\X1BC\CaptureLWIN
Here are the possible choices:
0 - Leave the key alone
1 - Capture long press only
3 - Capture long and short press
The default if the value does not exists is 0
The following is also a DWORD but the format is different:
HKCU\SOFTWARE\JKing\X1BC\CaptureCamera
The possible choices are:
0 - Leave the key alone
1 - Capture long and short for half press only
2 - Capture long and short for full press only
3 - Capture long and short for both half and full press
The default if the value does not exists is 0
The following are string values:
HKCU\SOFTWARE\JKing\X1BC\PanelShortAction
HKCU\SOFTWARE\JKing\X1BC\PanelLongAction
HKCU\SOFTWARE\JKing\X1BC\OKShortAction
HKCU\SOFTWARE\JKing\X1BC\OKLongAction
HKCU\SOFTWARE\JKing\X1BC\LeftShortAction
HKCU\SOFTWARE\JKing\X1BC\LeftLongAction
HKCU\SOFTWARE\JKing\X1BC\RightShortAction
HKCU\SOFTWARE\JKing\X1BC\RightLongAction
HKCU\SOFTWARE\JKing\X1BC\VolumeUpShortAction
HKCU\SOFTWARE\JKing\X1BC\VolumeUpLongAction
HKCU\SOFTWARE\JKing\X1BC\VolumeDownShortAction
HKCU\SOFTWARE\JKing\X1BC\VolumeDownLongAction
HKCU\SOFTWARE\JKing\X1BC\LWINShortAction
HKCU\SOFTWARE\JKing\X1BC\LWINLongAction
HKCU\SOFTWARE\JKing\X1BC\HalfCamShortAction
HKCU\SOFTWARE\JKing\X1BC\HalfCamLongAction
HKCU\SOFTWARE\JKing\X1BC\FullCamShortAction
HKCU\SOFTWARE\JKing\X1BC\FullCamLongAction
HKCU\SOFTWARE\JKing\X1BC\Fn_A_Action
HKCU\SOFTWARE\JKing\X1BC\Fn_S_Action
HKCU\SOFTWARE\JKing\X1BC\Fn_D_Action
HKCU\SOFTWARE\JKing\X1BC\Fn_F_Action
HKCU\SOFTWARE\JKing\X1BC\Fn_G_Action
HKCU\SOFTWARE\JKing\X1BC\Fn_Z_Action
HKCU\SOFTWARE\JKing\X1BC\Fn_X_Action
HKCU\SOFTWARE\JKing\X1BC\Fn_C_Action
HKCU\SOFTWARE\JKing\X1BC\Fn_V_Action
Each action key can be one of three types: Execution of a file, sending of a character, or sending of a special key.
To execute a file, the string should contain the full pathname of the file to run. This can be an exe, mscr, lnk, mp3, doc, whatever. Enclose the path and file name in quotes, followed by a space, then any parameters if you desire if it is an executable. For instance:
Code:
"\Program Files\App\My App.exe" -p
To send a character, the string must begin with a # symbol followed by the character to send. For instance, to send a "$" character, they value of the string should be:
Code:
#$
To send a special key, the string must begin with a & symbol followed by the identifier of the special key to send. Here are the special keys:
W - Windows key
R - Rotate screen
Q - Send left softkey event
E - Send right softkey event
What other special keys would you like?
For instance, to send a windows key event, they value of the string should be:
Code:
&W
The following are DWORD values:
HKCU\SOFTWARE\JKing\X1BC\LongKeyTimeout
Delay for long key press in milliseconds. The default if the value does not exists is 500.
HKCU\SOFTWARE\JKing\X1BC\LWINCtrlMode
Here are the possible choices:
0 - Do not use as ctrl
1 - Short press mode (short press to enable ctrl then press a letter)
2 - Long press mode (press letter while holding ctrl)
HKCU\SOFTWARE\JKing\X1BC\TabCtrlMode
Here are the possible choices:
0 - Do not use as ctrl
1 - Short press mode (short press to enable ctrl then press a letter; long press sends tab chr)
2 - Long press mode (press letter while holding ctrl; short press sends tab chr)
(Note, you may use either LWIN or TAB for ctrl. Not both at the same time. If both of these keys are non zero, the tab key will be used. I recommend the tab key. It is more reliable.)
HKCU\SOFTWARE\JKing\X1BC\SupportMultipleKeyHooks
Here are the possible choices:
0 - OFF
1 - ON
The default if the value does not exists is 0. (Please leave as 0 for now. It does not work.)
HKCU\SOFTWARE\JKing\X1BC\HoldFeedbackDuration
Duration of vibration feedback for a long key press. Set to zero to disable. The default if the value does not exists is 35.
HKCU\SOFTWARE\JKing\X1BC\LandscapeOrientation
Set which landscape orientation the "R" special key will switch to. Choices:
0 - Left handed (correct orientation for the keyboard)
1 - Right handed
The default if the value does not exists is 0.
Known Issues:
-Does not support multiple key hooks (not really a problem as this is an OS limitation but see this post for details)
-LWIN long ctrl mode does not work
Changelog:
v1.1 [2/12/09]
-Added special key (&R) for screen rotation
-Added special keys (&Q and &E) for left and right softkeys
-Fixed bug that cause crash if Fn key was assigned to non existent file
-Will now prevent camera app from opening if you reassign camera button
-Changed format of reg settings for camera button
v1.0 [2/11/09]
-Improved WIN ctrl key support
-Added tab key short and long ctrl modes and registry setting
-Added key hold vibration feedback and registry duration setting
-Added capability to capture fn keys. Registry settings added
-Added capability to send character strokes and special keys
-Added capability to capture half and full camera button press. Registry settings added
-Changed default registry values to reflect correct installation directory for other languages
v0.4 [1/10/09]
-Fixed bug that caused extra long key press in one circumstance
-Fixed bug that caused crash during startup if registry strings were not formatted correctly
-Added option and registry value to change long press timeout
-Added short ctrl key feature and registry option for feature
-Added option to allow other key hooks (doesnt yet actually work)
-Now released in CAB format; CAB presets all reg values and creates shortcuts in startup and start menu
-X1BC now ignores keys by default if reg values do not exist, rather than capturing by default
v0.3 [1/07/09]
-Added registry keys for key actions
-Program now performs key actions from settings
v0.2 [1/06/09]
-Simplified reg settings
-Removed all but "exiting" popup during startup and shutdown
-Rewrote key hook algorithm for better reliability
-Unwanted keys now released to system as set by preferences
Todo List:
-Support multiple key hooks
Downloads below. Please note, the cabs will overwrite existing registry settings. If you want to upgrade from previous version, back up the settings first or just replace the exe. The cabs also place a shortcut in startup and in the start menu.
nice!
would look forward for the program when it's officially released
Heh, nice one Jking. I think the best way to go is to somehow "merge" your app with Dande's. Dande doesn't want to create a UI and uses mortscript, where you use the - in my opinion easier - registry. From what I see so far, you both have the same app, written in a different way, with the biggest change being you using the winkey (which I like), and Dande using the tab key.
I'd like to see where this goes, keep up the good work!
All the Best JKingDev, sorry I can't help. I don't know programming.
The biggest shortcoming of the X1 is the lack of buttons for mapping to apps and task manager. I miss the ease of button mapping on my previous i780.
Looking forward to your end product!
Good idea. Looking forward to this app.
cheers
I would love to see an option that would allow these button's to be exposed in the list of assignable buttons in the Buttons Settings control panel (similar to how Tilt developers were able to add the PTT button to it) to allow regular action assignments to those buttons.
Very interested to see how this application turns out!
millercentral said:
I would love to see an option that would allow these button's to be exposed in the list of assignable buttons in the Buttons Settings control panel (similar to how Tilt developers were able to add the PTT button to it) to allow regular action assignments to those buttons.
Click to expand...
Click to collapse
Yeah, me too! But I guess this is on driver level, not sure though!
Edit: I take that back, I remember that AEButtonPlus is able to add virtual keys to that list. But I think you still have to run your application at all time in the background, not really giving an advantage to this. I might be wrong again though.
@JKingDev
I was sending you my code. Didn't expect you to be this impatient
From what I have experienced, using the keyboard hook, it is not possible to remap the panel and the symbol button. Usually you can stop their original functionality to work by returning -1 in the hook, but that doesn't work with panel and symbol. So, at least at first sight, it seems to be not possible to remap these buttons.
You could consider also using RegisterHotKey, which is officially supported by the SDK. Mort told me that he uses it with MortPlayer and it seems to be quite powerful too. Maybe the hook and RegisterHotKey together allow you to do more than just with the hook. I thought that, when you can't do it with the low level hook, there is no other way at all to do it, that's why I didn't even bother trying.
Since you already started a thread in the development phase, maybe you should tell us what you actually plan to implement so that people can tell you in advance what they like about your concept and what they don't. Kind of collecting requirements before coding - like software engineering should be (and not like I did it )
Edit: By the way, in the zip file I sent to you by mail, you can also find a text file which documents the button sequences I was interested in. Helped me a lot while implementing.
Angelusz said:
Dande doesn't want to create a UI and uses mortscript, where you use the - in my opinion easier - registry.
Click to expand...
Click to collapse
First of all, the registry is only some kind of global application configuration database (and a bad idea from microsoft if you ask me). The registry can only enable functionality that is implemented in an application. In contrary to that, MortScript allows you to implement functionality that my application doesn't.
Despite of being completely different things, I don't find fiddling in the registry easy nor secure, but that's another topic.
Ah, and no offense intended, alright
@Jking:
THANKS for this great idea !!
X1 is missing a dedicated REC key
I desperately need this function
One-touch key press to automatically start recording a voice note
Maybe your software will finally let me use my Xperia as a voice recorder
Thank you for all the support! I am glad there is interest in this. It is nice to give back to this great community. New test version. I rewrote the key hook algorithm to handle the win and softkeys in a smoother way. Shouldnt have any prolems now. Now, if you put in settings to not capture a it should be released to the system like normal. Also changed up the registry settings a little bit to streamline the code. Made note of the new format in the second post. Next step will be to actually perform user specified actions when keys are pressed. It will actually become useful.
For some reason, when I set the grab volume key settings to 0 and completely ignore them, they still dont do anything while X1BC.exe is running. I am not sure if this is my app doing this or AEBP screwing with me since I still have it installed. Does anyone else get this problem?
millercentral said:
I would love to see an option that would allow these button's to be exposed in the list of assignable buttons in the Buttons Settings control panel (similar to how Tilt developers were able to add the PTT button to it) to allow regular action assignments to those buttons.
Very interested to see how this application turns out!
Click to expand...
Click to collapse
I believe this can be done since AEBP does it but I am not sure how. I have a slight idea of what I think it does. It involves adding some registry keys then sending custom key codes. I will look into this after I have accomplished everything else I want with this app. Can't make any promises but I will try.
Dandie said:
Yeah, me too! But I guess this is on driver level, not sure though!
Edit: I take that back, I remember that AEButtonPlus is able to add virtual keys to that list. But I think you still have to run your application at all time in the background, not really giving an advantage to this. I might be wrong again though.
Click to expand...
Click to collapse
Yes I think you are correct on this. The only advantage is assigning special keys like <rotate screen> ect. Most of those things you can find exe's for or use a mortscript anyway though, and my app will allow you to specify any exe/mortscript/file to run/open anyway.
Dandie said:
@JKingDev
I was sending you my code. Didn't expect you to be this impatient
From what I have experienced, using the keyboard hook, it is not possible to remap the panel and the symbol button. Usually you can stop their original functionality to work by returning -1 in the hook, but that doesn't work with panel and symbol. So, at least at first sight, it seems to be not possible to remap these buttons.
You could consider also using RegisterHotKey, which is officially supported by the SDK. Mort told me that he uses it with MortPlayer and it seems to be quite powerful too. Maybe the hook and RegisterHotKey together allow you to do more than just with the hook. I thought that, when you can't do it with the low level hook, there is no other way at all to do it, that's why I didn't even bother trying.
Since you already started a thread in the development phase, maybe you should tell us what you actually plan to implement so that people can tell you in advance what they like about your concept and what they don't. Kind of collecting requirements before coding - like software engineering should be (and not like I did it )
Edit: By the way, in the zip file I sent to you by mail, you can also find a text file which documents the button sequences I was interested in. Helped me a lot while implementing.
Click to expand...
Click to collapse
Sorry for my impatience. I had lots of free time and was itching to put my coding skills to work. I have wanted to write a button mapper since I owned a mogul (on my 6700 i used pqzII to make the win key a ctrl mey; i missed this functionality) but I never got around to it.
About the panel key, a key hook is able to detect the panel key presses, but for some reason it is unable to prevent the system from detecting it too like it can for other keys. This is why the work around to delete the panel manager registry key is necessary. Once you do that, the system ignores the key. Hotkeys sounds like a good idea. As it is, it works for me. I can try hotkey later though to see if that works out better. Deleting the panel manager key is an easy work around though if you dont use panels.
Well as far as key functions, you will specify via registry key what file/program to open/run. It could be and exe, mortscript, mp3, whatever. I think that allows max flexibility. Run a program directly, or run a mortscript if you have something more complex you want the key to do. The same functionality as yours, the only difference is that this can also run an exe directly as opposed to writing a script to run the exe.
After that, I want to implement the win key as a ctrl ley. There will be four modes. 1.) Disable ctrl key: allow the ctrl key to be assigned for short and long presses like it is now. 2.) Short ctrl key: Short press + letter sends ctrl key while a long press is mappable like it is now. 3.) Hold ctrl key: Hold + press letter then release sends ctrl key, while short press is assignable to something else. 4.) Full ctrl key: both short and hold methods send ctrl key.
Next I will add FN+key combinations to be assignable the way the other keys are (run exe/script/open file).
After that it will be looking into the suggestions of others such as virtual app keys.
Dandie said:
First of all, the registry is only some kind of global application configuration database (and a bad idea from microsoft if you ask me). The registry can only enable functionality that is implemented in an application. In contrary to that, MortScript allows you to implement functionality that my application doesn't.
Despite of being completely different things, I don't find fiddling in the registry easy nor secure, but that's another topic.
Ah, and no offense intended, alright
Click to expand...
Click to collapse
The purpose of using the registry is not really to make things easier, it is just to make things configurable. You may choose what keys to trap and turn the ctrl key on or off. Mortscripts are very powerful and easy and I still give you the option of using them. But if all you want the key to do is launch a program, why launch a script just just launches a program? I give you the option to just launch that program directly.
New version 0.3. Now the keys are fully functional. The program is actually useful now. The registry keys to set for the key actions are detailed in the second post. All fully functional. I have stopped using AEButton plus now as X1BC does everything AEBP was doing. No more AEBP splash on boot. Now on to what AEBP doesnt do, ctrl key, fn keys, ect.
One caveat though. I figured out what the problem was with the volume keys. I use the HTC Blackstone volume control. It seems certain that HTC volume control as well as you tube, radio, ect use key hooks. Even if I tell my program to ignore the volume keys, pressing volume up will bring up the volume control but after that the volume keys wont change it. The reason why is that once HTC volume control pops up it sets a key hook to control the keys. If my app already has a key hook set, HTC VC will be unable to install its own hook, thus cannot grab the keys. I proved that HTC VC uses a key hook by closing X1BC, launching the VC, then trying to launch X1BC. My app reported as expected that it could not install the hook.
I noticed something very interesting a while ago though. I can launch X1BC even while AEBP is running and it will work. I didnt think much of it but now I realize that this is important. HTC VC works fine even if AEBP is running. AEBP certainly uses a key hook. I can launch AEBP first then launch X1BC. If I first launch X1BC then launch AEBP, AEBP wont work. I think this means that AEBP has some mechanism of supporting a second key hook. Probably the same way hookmgr works. I will try installing that and seeing if it makes the HTC programs and X1BC work together peacefully. Ultimately though, I want to give X1BC the capability to support another program setting a key hook. Not a big deal though. The HTC programs still work. Pressing a volume key brings up the volume control then you can control with your finger.
It is fully functional for mapping the hard keys now! Try it!
@JKingDev
I would still like to know what exactly you plan to build as the application, I mean featurewise. What features and maybe layout do you want the final application to have? It does really make sense to gather feature requests before starting the development of a complex software, otherwise people will always tell you what they would like to have changed. I think you would save quite a lot of implementation effort that way and you also could arrange your architecture a bit to the "final" structure of the application.
Dandie said:
First of all, the registry is only some kind of global application configuration database (and a bad idea from microsoft if you ask me). The registry can only enable functionality that is implemented in an application. In contrary to that, MortScript allows you to implement functionality that my application doesn't.
Despite of being completely different things, I don't find fiddling in the registry easy nor secure, but that's another topic.
Ah, and no offense intended, alright
Click to expand...
Click to collapse
None taken. I'm just trying to add some perspective here. This is a developers site - true. So you can expect some people to be able to work with mortscript - true. But, regardless of any other arguments, there's a lot of users who just don't grasp scripting like with mort's and/or cba to learn yet another language. It's really good to support mortscript, all I'm saying it's nice to have the "easier" and simpler options as well. I will probably get into mortscript soon, too - as soon as university loosens up.
Now, on this application itself - it's looking really good Jking, it would be lovely to have it support multiple keyhooks. Another feature I'd like to see is grasping software keys, like for instance when tapping the clock in TF3D. I'd like to be able to set what that does as well; e.g. remap it to an application or something. Same goes for calender etc. - is your current code able to support that too?
Keep up the great work, this one is starting to look like a keeper!!
(Although I like AEbuttonplus, I read/noticed some downsides about it and would rather replace it.)
Dandie said:
@JKingDev
I would still like to know what exactly you plan to build as the application, I mean featurewise. What features and maybe layout do you want the final application to have? It does really make sense to gather feature requests before starting the development of a complex software, otherwise people will always tell you what they would like to have changed. I think you would save quite a lot of implementation effort that way and you also could arrange your architecture a bit to the "final" structure of the application.
Click to expand...
Click to collapse
Dandie, I am not sure quite what you mean by this. I outlined all the features I plan to implement. The application is in its final structure, I am just still adding features. What more details did you want to know?
Angelusz said:
Now, on this application itself - it's looking really good Jking, it would be lovely to have it support multiple keyhooks. Another feature I'd like to see is grasping software keys, like for instance when tapping the clock in TF3D. I'd like to be able to set what that does as well; e.g. remap it to an application or something. Same goes for calender etc. - is your current code able to support that too?
Keep up the great work, this one is starting to look like a keeper!!
(Although I like AEbuttonplus, I read/noticed some downsides about it and would rather replace it.)
Click to expand...
Click to collapse
Thanks Angelusz. I don't believe that capturing things like tapping the clock in TF3D is possible though. Tapping software buttons does not generate a keyboard event. Only actual keys do. Therefore unless TF3D sends key events for some reason this would not be possible.
JKingDev said:
Dandie, I am not sure quite what you mean by this. I outlined all the features I plan to implement. The application is in its final structure, I am just still adding features. What more details did you want to know?
Click to expand...
Click to collapse
Oh, then I must have overlooked something. What configuration possibilities do you want to offer in your UI, what do you want to offer via registry configuration and what must be done via scripts or additional programs. E.g. what do you want to implement what a powerful program like AEButtonsPlus offers, what do you don't want to offer and what do you want to add to it to make it better. Starting a discussion like this would pop up many good ideas for a somewhat perfect application, you will see.
By the way, a software never is final - unless you declare it final, which basically means you stop the development.
JKingDev said:
Dandie, I am not sure quite what you mean by this. I outlined all the features I plan to implement. The application is in its final structure, I am just still adding features. What more details did you want to know?
Thanks Angelusz. I don't believe that capturing things like tapping the clock in TF3D is possible though. Tapping software buttons does not generate a keyboard event. Only actual keys do. Therefore unless TF3D sends key events for some reason this would not be possible.
Click to expand...
Click to collapse
I think you're right, I have however found a tool that allows me to remap the paths! http://forum.xda-developers.com/showthread.php?t=407777
Dandie said:
Oh, then I must have overlooked something. What configuration possibilities do you want to offer in your UI, what do you want to offer via registry configuration and what must be done via scripts or additional programs. E.g. what do you want to implement what a powerful program like AEButtonsPlus offers, what do you don't want to offer and what do you want to add to it to make it better. Starting a discussion like this would pop up many good ideas for a somewhat perfect application, you will see.
By the way, a software never is final - unless you declare it final, which basically means you stop the development.
Click to expand...
Click to collapse
Well I wasnt planning on making a UI unless people absolutely want to. All my settings are easily changeable in the registry. The second post outlines all the available options. When I add the ctrl key and fn keys there will be options for these too. There will also be an option to allow other key hooks if I get that working. Nothing must be done via scripts or other programs. Simply enter in the registry what file to run or open when the key is pressed. Everyone is free to make requests. There is one request to emulate virtual hard keys and I will try addressing that later. I am not trying to match AEBP. I did this a.) becausse AEBP is a bloated all purpose app; mine is tailor made for the X1, and much smaller and lighter; b.) AEBP costs money; c.) AEBP cannot create a ctrl key or grab FN keys; AEKM does, meaning purchasing another application. If there is something more you would like to see the app do let me know. Otherwise, I have laid out everything that is in the plan already.
Angelusz said:
I think you're right, I have however found a tool that allows me to remap the paths! http://forum.xda-developers.com/showthread.php?t=407777
Click to expand...
Click to collapse
Glad you got that worked out. I thought there would be something of this nature.
Hi JKingDev,
I have tired X1BC for only one button so far (long press ok button to switch to 2nd today). So far everything is working quite nicely.
With AEBP I was facing a significant battery capacity drainage this was for me the main reason to look out for another button mapper. At least in my configuration I was able to reproduce this battery problem (I had 3 buttons asigned with a double click function and the action menue). But this is reported allready (Touch HD forum, because it happens on the Touch HD as well). It is realy a pity, because AEBP is a great application and was the very 1st I was installing on a WM phone.
As long as there is no UI maybe you could do a presetting of all those reg key with a samll cab file? And fill the dword with "0" - I understand that than the key has just its standard behaviour.
Because than I just have to type "only" my individual settings (I am lazy - I know).
For making program starting easier I have the idea to create in the reg keys a path name to a standard link such as
"\Program Files\X1BC\OKLongAction.lnk"
Than I create a new link for the program I want to start, rename it to "OKLongAction.lnk" and overwrite with this new link the one in the standard directory.
This would allow to make changes without playing arround in the regestry all the time.
Best regards & Many thanks for this great tool!
dingolino
Registry settings:
The following are DWORD values:
HKCU\SOFTWARE\JKing\X1BC\CapturePanel
HKCU\SOFTWARE\JKing\X1BC\CaptureOK
HKCU\SOFTWARE\JKing\X1BC\CaptureLeft
HKCU\SOFTWARE\JKing\X1BC\CaptureRight
HKCU\SOFTWARE\JKing\X1BC\CaptureVolumeUp
HKCU\SOFTWARE\JKing\X1BC\CaptureVolumeDown
HKCU\SOFTWARE\JKing\X1BC\CaptureLWIN
Here are the possible choices:
0 - Leave the key alone
1 - Capture long press only
3 - Capture long and short press
The following are string values:
HKCU\SOFTWARE\JKing\X1BC\PanelShortAction
HKCU\SOFTWARE\JKing\X1BC\PanelLongAction
HKCU\SOFTWARE\JKing\X1BC\OKShortAction
HKCU\SOFTWARE\JKing\X1BC\OKLongAction
HKCU\SOFTWARE\JKing\X1BC\LeftShortAction
HKCU\SOFTWARE\JKing\X1BC\LeftLongAction
HKCU\SOFTWARE\JKing\X1BC\RightShortAction
HKCU\SOFTWARE\JKing\X1BC\RightLongAction
HKCU\SOFTWARE\JKing\X1BC\VolumeUpShortAction
HKCU\SOFTWARE\JKing\X1BC\VolumeUpLongAction
HKCU\SOFTWARE\JKing\X1BC\VolumeDownShortAction
HKCU\SOFTWARE\JKing\X1BC\VolumeDownLongAction
HKCU\SOFTWARE\JKing\X1BC\LWINShortAction
HKCU\SOFTWARE\JKing\X1BC\LWINLongAction

[APP] DredSensor v1.1 - Allow you to personalize Hard Key Actions

=======================================================================
New version 1.2 available here
=======================================================================
=======================================================================================
DredSensor v1.1d:
=======================================================================================
Link ->: DredSensor-v1.1d
New features in v1.1d:
=====================
Let you choose which Key/Action you affect to each key.
Launcher Mode let you affect an Action for:
Double Tap event
Click event
Long click event
An icon for config tool is created in Program list.
Cache Program List for quick loading in Config window.
Fixes a few bug from v1.1, v1.1b and v1.1c
Tips:
=====
If you upgrade to this version, your config file will be cleared (sorry ).
To define a profile that applies on every applications, launch config tool and edit "Default" config.
If the key you want to affect is not listed, you can define it manually:
Type "Key:[email protected]@", with @@ = VKey code of the key you want to affect.
You can find VKey code list on : http://msdn.microsoft.com/en-us/library/bb431750.aspx
=======================================================================================
DredSensor v1.0:
=======================================================================================
=======================================================================
Reviewed on gadgetmix.com: See the article
=======================================================================
If you have tried to play a game needing left and right key on an HTC Touch Diamond, you noticed that they are 2mm wide and if you click next to it, you get back to home page or to dialing menu etc...
So I've written a prog allowing you to lock these 4 keys actions and replace it by classical key event (VK_LEFT, VK_RIGHT, ...).
In that way you can play tetris, and use "Pick-Up" and "Hang-Up" keys for going left and right.
Link ->: DredSensor
To use it, you need:
1) An HTC Touch Diamond (it's the only one i have so i can't test it on other models)
2) Install the .cab
3) Reboot your HTC
4) Run a game (or app or ...)
5) Get your stylus out and back-in, in less than 1 second
6) Click "Yes"
----- A config window opens:
7) Check that Type = "HardKeySimul"
8) Click "Ok"
Now you can use (and eventually assign) your 'Home', 'Back', 'Pick-Up' and 'Hang-Up' keys in that game/app.
Actually, the 'Pick-Up' and 'Hang-Up' keys are always defined as Left and Right events.
Have fun.
Ps:
For people interested, the other "Type" in the config window are:
- "Launcher": allow you to quicklaunch 4 app (that you define in the config wnd) when you double tap (not click, just tap) on one of those 4 keyz
- "Scroll": allow you to scroll the current window by tapping those 4 keyz panel
- "KeySimul": allow you to send left/right/up/down events by tapping those 4 keyz panel
Thx, now I can use opera mini and pie (good for mlb's wap) in full screen
Thank you very much. Great program. Now, with left and right softkey hardware buttons, I can play with my java games.
Claus72 said:
Thank you very much. Great program. Now, with left and right softkey hardware buttons, I can play with my java games.
Click to expand...
Click to collapse
Do any of them even work on the vga screen?
first of all: great app!
only thing i don't like is that now every time i pull out the stylus the phone vibrates. maybe you could make the "window-catching-thing" optional, so you have to enable it first?!? with that, the app would be perfect to me!
figured out an other problem: the "scroll-wheel-function" in opera and tomtom doesn't work anymore...
Herr_Knigge said:
first of all: great app!
only thing i don't like is that now every time i pull out the stylus the phone vibrates. maybe you could make the "window-catching-thing" optional, so you have to enable it first?!? with that, the app would be perfect to me!
figured out an other problem: the "scroll-wheel-function" in opera and tomtom doesn't work anymore...
Click to expand...
Click to collapse
Hello.
As it's a background program, making vivrate the phone is the best way i found to easlily know if it's loaded or not.
If you don't like that, you can disable it by manually editing the 'Config.ini' file in '/Program Files/DredSensor':
Go under the section you want to disable vibrator in (ex: "[Default]")
Add: "NoVibrate=1"
For the scroll problem, i didn't change scrolling system from v1.0 so are you sure it was working in v1.0 and it's no more working in v1.1?
@Dredger97
Thank´s for this wonderful tool!
Greeting
Slide
is there a wa to map home/back to A/B controller buttons? Trying to get it to work with PocketNester Thanks
Thanks
I will tried
Seems to be good. Shall download and try...
Doesn't work for all hard keys
I have the original diamond and it doesn't look like any of the key presses work.
I could really do with replacing volume and Home/Back Buttons. Do these buttons
support Long press too?
bugsykoosh said:
is there a wa to map home/back to A/B controller buttons? Trying to get it to work with PocketNester Thanks
Click to expand...
Click to collapse
If you go in PocketNester -> Option -> Controller, you can see that it's default mapped to 0xC4 and 0xC3 key codes.
So all you have to set in DredSensor is:
- Home: "Key:0xC4"
- Back: "Key:0xC3"
I tried that on super mario, it works, but the problem is that you can't press those keys and simultaneously press Left and Right so it's quite hard to play...
In fact you can map Volume Up and Down keyz to button A and B and it's much easier to play.
djfuego said:
I have the original diamond and it doesn't look like any of the key presses work.
I could really do with replacing volume and Home/Back Buttons. Do these buttons
support Long press too?
Click to expand...
Click to collapse
The actual version of DredSensor doesn't change anything to volume up/down buttons.
All it catches is Home,Back,Talk and End hard keys.
About long press,
- In "Launcher" mode, you can define action for "Long click"
- In "HardKeySimul" mode, if you make a long press to "Home", and mapped "Left" key to "Home" button, it will occure a long press on "Left" key.
I just don't seem to be able to get this to work - I follow the first post to remap the home and back keys to the softkeys, but home always takes me back to touchflo.
Are there any other things I can try, or is it just the ROM i'm using doing this?
Furbious said:
I just don't seem to be able to get this to work - I follow the first post to remap the home and back keys to the softkeys, but home always takes me back to touchflo.
Are there any other things I can try, or is it just the ROM i'm using doing this?
Click to expand...
Click to collapse
I don't think it's a ROM problem.
The 2 most common reasons for not working are:
It doesn't work if you have G-Scroll or something similar installed.
When you edit config for an App, this config only applies when "Window Title" and "ClassName" of the foreground window matches what is defined in that Config.
If it doesn't match any config, DredSensor doesn't catch your hard keys.
You can use wildcards in your Config so, for example, if the app you want to configure always changes its title, you can set "*" for window title.
everything gose well in my diamond! Thx!
just a little suggestion : as volume up/down could be very useful in some app (like a game emulator), could you make them configurable in your next version?
nice job!
Furbious said:
I just don't seem to be able to get this to work - I follow the first post to remap the home and back keys to the softkeys, but home always takes me back to touchflo.
Are there any other things I can try, or is it just the ROM i'm using doing this?
Click to expand...
Click to collapse
I make a softreset and works whit no problem, when i click home button open the program i assign.
Doesn't seem to work in Phone screen. I am not sure if it is because it is a dialog class. If this could be made to work, it would be great as when a person has multiple phone numbers you could scroll by pressing right or left key.
Thanks in advance
just tested it with tetris and it worked great. good stuff
Dredger97 said:
I don't think it's a ROM problem.
The 2 most common reasons for not working are:
It doesn't work if you have G-Scroll or something similar installed.
When you edit config for an App, this config only applies when "Window Title" and "ClassName" of the foreground window matches what is defined in that Config.
If it doesn't match any config, DredSensor doesn't catch your hard keys.
You can use wildcards in your Config so, for example, if the app you want to configure always changes its title, you can set "*" for window title.
Click to expand...
Click to collapse
I've nothing like that installed - I've tried wildcards, and soft resetting between altering them, even setting the default so that it should catch any class or window so that the home and back keys are soft keys one and two.
It's semi trapping the window and keys.......I just wonder if your app is not being fed the correct window name/class, or there's some extra characters or something that is fooling it.
Here's an example - setting home and back keys to the softkeys, with a config of * for window, and * for class.
On the touchflo screen, pressing home will take it to the phone screen (correct left softkey action), but once in the phone screen, pressing home takes it to the touchflo screen when it should go to contacts.
If I'm in any other application, it never traps the home key, and will always go back to touchflo. Disabling touchflo doesn't change this, it takes it back to the today screen.
I'm using shak's rom if anyone else can confirm they can get it to work using that one

[APP][SVC][Mar 21, 2010] ZoomBarPlus V2 BETA / Make your Zoom Bar more useful!

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
FAQ
Q: ZoomBarPlus isn't working in <some application>. Is this a bug? How do I fix this?
A: ZoomBarPlus is designed to not be active whenever HTC's SmartTouch service sends zoom bar messages to applications that are "zoom bar aware." You may not realize how many applications are actually zoom bar aware. Som ROM cooks like to put in lots of extras (the default behavior is a simple scroll-down / scroll-up behavior, but no action button or anything more advanced). Even without a custom ROM, applications like RSS Hub and the Inbox are zoom bar aware. This can be annoying when the default zoom bar behavior isn't what you want. For example, in the Outlook Inbox, you might want ZoomBarPlus to scroll up and down through the list. It won't because the HTC default behavior is to resize text in the message view and do nothing at all in the list view!
To fix this, go into the Smart Touch registry key HKLM\Software\HTC\SmartTouch and either delete the relevant key of the application you no longer want the default zoom behavior for --OR-- change the value of ClassName in the key to something that will never exist as a window class (maybe add a dozen x's to the end of it). Soft reset after this. The config application (coming soon!) will allow you to enable or disable classes in SmartTouch more easily.
Nice App.
But How can I send only one "down arrow" when I swipe right?It always scroll too much.
This could be very useful. Thanks.
what if i wanna set "swap left" to arrow left and "swap right" to arrow right?
cccooo2007 said:
Nice App.
But How can I send only one "down arrow" when I swipe right?It always scroll too much.
Click to expand...
Click to collapse
Interesting idea. I was sending a keystroke on every time the zoombar "ticked" (moved far enough to generate an event). I can have it just send one per down and release. Next release.
jerrymc2 said:
what if i wanna set "swap left" to arrow left and "swap right" to arrow right?
Click to expand...
Click to collapse
I believe you can just switch the two keycodes for those from his list above. I'm about to test in just a minute to verify.
jerrymc2 said:
what if i wanna set "swap left" to arrow left and "swap right" to arrow right?
Click to expand...
Click to collapse
Edit the registry as stated in the first post. I'm going to create a config program soon. This is beta.
Here is a list of a bunch of keycodes that you all might find useful: http://msdn.microsoft.com/en-us/library/bb431750.aspx
You are looking for VK_TLEFT and VK_TRIGHT
This thing is amazing!! Wow you're awesome thanks so much for this!
jerrymc2 said:
what if i wanna set "swap left" to arrow left and "swap right" to arrow right?
Click to expand...
Click to collapse
thx1200 said:
Edit the registry as stated in the first post. I'm going to create a config program soon. This is beta.
Here is a list of a bunch of keycodes that you all might find useful: http://msdn.microsoft.com/en-us/library/bb431750.aspx
You are looking for VK_TLEFT and VK_TRIGHT
Click to expand...
Click to collapse
Yeah, that worked for me great. I just switched the values (38 and 40, respectively) for the two entries thx1200 mentioned, and then soft-reset.
The app seems to work pretty darn good overall...it's more like using the zoom bar as a scroll wheel, in terms of response/speed, than a D-pad, but it's still a very workable solution. The only place I haven't been able to get it to cooperate is in the outlook inbox screen (WM, not TF3D), but it's worked everywhere else I've tried it so far, including inside of apps like PHM_regedit.
Thanks thx1200!!
sirphunkee said:
Yeah, that worked for me great. I just switched the values (38 and 40, respectively) for the two entries thx1200 mentioned, and then soft-reset.
The app seems to work pretty darn good overall...it's more like using the zoom bar as a scroll wheel, in terms of response/speed, than a D-pad, but it's still a very workable solution. The only place I haven't been able to get it to cooperate is in the outlook inbox screen (WM, not TF3D), but it's worked everywhere else I've tried it so far, including inside of apps like PHM_regedit.
Thanks thx1200!!
Click to expand...
Click to collapse
That's because the Inbox has been modified by HTC to be "zoombar aware." You can prevent the driver from sending zoombar codes to the Inbox by deleting it's window class registry entry in HKLM\Software\HTC\SmartTouch. ZBP purposely does not respond to window classes in that key so as not to have two responses (the app's and ZBP's) firing at the same time.
In fact, if you want to override ALL zoombar behavior, delete all the window classes in that registry key. Keep in mind you will also lose the ability to zoom in the picture viewer if you get that aggressive.
Yes, it does perform less like a D-Pad and more like scroll-wheel. Either way, it gives you a lot more one-handedness than a device lacking a D-Pad (or wheel). I particularly enjoy the swipe-and-hold gesture where it just keeps scrolling. That's particularly d-pad-like. Scroll wheels can't do that.
EDIT: After modifying SmartTouch, a soft reset is required.
thx1200 said:
That's because the Inbox has been modified by HTC to be "zoombar aware." You can prevent the driver from sending zoombar codes to the Inbox by deleting it's window class registry entry in HKLM\Software\HTC\SmartTouch. ZBP purposely does not respond to window classes in that key so as not to have two responses (the app's and ZBP's) firing at the same time.
In fact, if you want to override ALL zoombar behavior, delete all the window classes in that registry key. Keep in mind you will also lose the ability to zoom in the picture viewer if you get that aggressive.
Yes, it does perform less like a D-Pad and more like scroll-wheel. Either way, it gives you a lot more one-handedness than a device lacking a D-Pad (or wheel). I particularly enjoy the swipe-and-hold gesture where it just keeps scrolling. That's particularly d-pad-like. Scroll wheels can't do that.
Click to expand...
Click to collapse
Ahh gotcha...I knew this app ignored any zoombar-enabled stuff, I just didn't realize the inbox fell into that catgory. I'll try tinkering with it in the reg like you suggested.
And yes, the swipe-n-hold feature is pretty sweet...and more like a D-pad than a scroll wheel. I'm still practicing/testing with it (there's a little learning curve to get used to the best thumb-motions), but I love it so far...thanks again!
Hi thx1200,
you are really crazy. You have also another hobby ? Great work. This app have also a very good potential.
mike2nl said:
Hi thx1200,
you are really crazy. You have also another hobby ? Great work. This app have also a very good potential.
Click to expand...
Click to collapse
I have too many hobbies. Many are being neglected! Plus regular 10 hour days at work. Sigh. I wish I was independently wealthy so I could just write freeware and write free music and spend some time on my other hobbies.
I had ZoomAdds installed, removed it, installed this... but I'm just getting the same scrolling I did before, no repeat, no taps, no vibration... Any ideas what else might be interfering?
Aha, found it, TouchLockPro.. Once I disabled it, scrolling.. changed I'll be wtaching this one, I still can't quite "do" a dpad, but been wanting it since I changed from my original Tilt.
sirphunkee said:
I believe you can just switch the two keycodes for those from his list above. I'm about to test in just a minute to verify.
Click to expand...
Click to collapse
you're a genius!
Thanks thx1200.
By the way,when you have changed zoombarplus registry items,you can make it effect by restarting the service using some task manage programs
awesome
I wish HTC would have thought out the zoom bar moor considering it only had one function that didnt work in every isntance.
Great!
Just now installed it on my diamond 2, didn't have any problems yet. Great keep it up!
Little more info
New here...so bear with me.
I have a ATT tilt2 that I just flashed to the new energy ROM from Mar 9th, standard WM 6.5 with sense 2.5.
I love the ROM, but never realized that the opera browser, 9.5 I think, that came with the stock tilt2 was the only opera browser that worked with the factory zoombar. The browser in this new ROM, 10.1 I believe, oesn't work with it...and I love my zoombar!!
Would this program help?

Categories

Resources