[RESOLVED] Custom Shell Keys Application - General Questions and Answers

Wondering if there is a Windows Mobile developer out there that can spare some time to help me out to create a SHELLKEYAPP application. The application would read a few values from a sub-key beneath:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Shell\Keys\<KEYNAME>]
@="\Windows\\Start Menu\\Help.lnk" ... aka (Default)
Flags=dword:00000000
<KEYNAME> is typically a sub-key that corresponds to a button on the device. Each sub-key entries appears as an entry in the Buttons applet found in Settings. A custom range (ex: 40C7 - 40DF) could be predefined and a <KEYNAME> outside the range could be ignored.
The application would be initiated (launched) using the a .LNK file (ex: short_PTT.lnk, long_Send.lnk, etc.). In case I'm not being clear in my thoughts, I'm envisioning something like this:
short_PTT.lnk => \windows\shellkeyap.exe,40C7
long_Send.lnk => \windows\shellkeyap.exe,40C9
In the above examples, the application specified in the 40C7 key would be launched when the PTT button is pressed and the application specified in the 40C9 key when the Send button is held.
There are commercial applications available to do this but licensing issues arise when cooking these applications into ROM's. The goal is provide the XDA community with a small application that can be used in conjunction with the built-in .LNK files (ex: short_PTT, long_Send, etc.) and the Buttons applet in Settings.
I've added a few links below for anyone who is interesting in exercising their development skills. Please feel free to PM me if you are interested; I just don't have the level of coding skills required to put this together myself.
Advance thanks,
Reference URL's:
http://forum.xda-developers.com/showpost.php?p=3127272&postcount=126
http://forum.xda-developers.com/showthread.php?t=486742
* EDIT *
Solution: XCSdM Enhanced PTTMod for the Raphael solves the problem.
[REF][04/21/09]Raphael OEM Package Repository
http://forum.xda-developers.com/showthread.php?t=482173

Related

TUTORIAL: Create links to the programs in your Settings menu

TUTORIAL: Create links to the programs in your Settings menu! A full explanation & never-before-published, full comparison list
An often-asked question concerns how you can set up direct links to the control panel applets (CPL's for short) in Start/Settings.
What's the point in all this, you may ask. Why not simply tap Start and, then, Settings and, finally, the icon you want to execute?
Yes, for a casual user, there's not much need in creating self-standing links to these files. There're, however, cases when this can prove really useful – for example, the case of including them in Today launcher plug-ins that, otherwise, don't let access to any of these applets otherwise. A well-known example of plug-ins like those is Resco File Explorer's excellent Today plug-in or in the free cLaunch. (Please see this (alternatives: iPAQ HQ, AximSite, PPC Magazine, FirstLoox, BrightHand) for more info on these excellent applications and the alternatives.)
Most of these settings are invoked from a central dialog file, \Windows\cplmain.cpl. Some additional, custom settings may have been put in a separate file, \Windows\mycpl.cpl. Finally, third-party applications that install their own settings dialogs create their own .cpl files inside the \Windows directory. For example, SOTi Pocket Controller (see this article on it) creates a file DeviceConfig.cpl, Mad Programmer's FileDialogChanger (see this article on it) uses a file named filedlgchg.cpl to offer the user the File Dialog Changer settings, Mad Programmer's Force Hi-resolution tool (see this article on it) puts a ForceHires.cpl file in there etc. The same stands for Spb Pocket Plus, MS Voice Command (please see this article for a full roundup of all voice controller apps) and XCPUScalar.
What should I do?
It's simple: create a .lnk file with the following contents:
33#ctlpnl.exe cplmain.cpl,X
OR
33#ctlpnl.exe mycpl.cpl,X
where X is a number that I'll promptly elaborate on.
As has already been pointed out, only one file, cplmain.cpl (or, with some device, mycpl.cpl in addition) contains most of the settings accessible in Start/Settings. One file containing many small applets also means that you need to choose a particular one in some way. That's why you must index the file; this numeric index (1, 2 etc.) tells cplmain.cpl which particular applet you'd like to access.
As far as the possible values of this are concerned, there're standardized ones. If you check out the "iPAQ 3660" column in the comparison chart available here (and disregard the 3 - Power record and everything starting with "MyCpl – 0"), you'll see what you can expect from any Pocket PC 2002+ Pocket PC.
Note that WM2003 added the standard 22-Manage Certificates and WM5 the standard 24-Error reporting and, with most WM5 Pocket PC devices, 25-GPS. Also, Pocket PC Phone Edition devices, regardless of their operating system version, also use the 20 - Phone Settings index. Finally, all Pocket PC's with the Microsoft BT stack use 23 – MS Bluetooth too. (Devices with the Widcomm BT stack use the separate \Windows\BTConfigCE.cpl CPL.)
It's also very important to point out that 3 – Power and 6 – Backlight is not necessarily available in all devices. For example, the iPAQ 2210 lacks both, the iPAQ 3660 lacks 6 – Backlight , while all the other listed devices have them all.
Also note the records starting with MyCpl are, as you may have already guessed, non-standard ones. It's there that the two iPAQ's have some essential applets (Backlight and, with the 2210, also Power) and some additional goodies.
Please note that lists compiled by others (for example the XDA-Developers one) are not generic enough and may contain several mistakes. Therefore, it's best not to rely on them at all. Also remember that you can freely test any indexes – you won't crash your Pocket PC if a particular index is unused.
You don't want to manually create .lnk files?
No problem, I've already done it for you! Just download this file and extract the link file(s) you'll need.
Note that the root directry of the ZIP file only contains CPL links that are guaranteed to work on all PPC2k2+ devices. I've put the additional ones in subdirectories – for example, links belonging to later operating systems (directories FromWM2003 and FromWM5), the 3 – Power and 6 – Backlight PCL's, the MS BT stack link and the PPC Phone Edition Phone Settings link.
Also, there's a separate subdirectory 'mycpl' for (unnamed – as you can also see in the comparison chart, indexes are wildly different between different devices) MyCpl link files.
Hope you'll find this information / my files useful. I really hope you'll like the new ability to include all this functionality in the Resco Today plug-in and/or cLaunch – or, for that matter, your operating system-level scripts!
Also a little bit more info on this subject + an icon extractor:
http://forum.xda-developers.com/viewtopic.php?p=223602#223602
V
When I put the link in my /windows/startmenu folder it's deleted after soft-reset of opening my start menu. What can I do about this and why is it happening?
What icon are you putting in there?
V
vijay555 said:
What icon are you putting in there?
V
Click to expand...
Click to collapse
It's a file I called Running.lnk with the following line:
Code:
22#ctlpnl cplmain.cpl,4,0?shellres.dll,-13900
I noticed that after soft reset or clicking the start menu this file is moved to the /windows/startmenu/programs folder. And thus appears in my programs list. But what I want is this link in my Start Menu.
Very odd.
Try making the shortcut as you've done, put it in your normal start menu, and then make a lnk to the lnk. Put the lnk to the lnk in your startup, and see if that makes any difference.
You could try my program VJBrisk as well. I can't even think what it does now, but it might help.
V
I tryed making another link to the first one and putting it in the startup but it didn't make any difference.
After this i tryed putting the lnk in the startmenu folder and at the same time removing another lnk file. And voila , it workt. Seems that wm5 keeps track of the amount of lnk files that should be in the startmenu folder. Makes sense because there is a limit to how long your startmenu can be.
Thanks for your help
ps. I changed the line in the link file to the following. This way it has the memory icon.
Code:
22#ctlpnl cplmain.cpl,4,0?shellres.dll,-13900

Entering password with one hand

Hi, my company uses GoodLink for corporate e-mail, and they require I enter a password whenever my device is unused for 30 minutes. The password has to be 6 digits with alpha and numeric. Since my Hermes doesn't have keys, it's very dangerous to try to do this while driving. Can you give me some suggestions for making this easier (without hacking the password out completely)?
I'm looking into: SIP that allows me to create a custom keypad with just a few keys (letters and numbers) or SIP that will play macros.
Please give me your suggestions! Thanks.
You could use MortScript. Write a script that opens the required program & then inputs the required password ect & map this script to a shortcut or a button.
Plenty of info on MortScript if you do a search, we have a script collection in the Development forum.
I think PQz (PQz key code sender, PQzII keyboard helper) might be another option. Have not used them myself so not sure what they are capable of.

The Button Enhancer Bible & great button config tips for Opera Mobile / Mini users

The Button Enhancer Bible & great button config tips for Opera Mobile / Mini users
Back in early 1997, when the first Microsoft WindowsCE 1.0-based devices hit the selves, they already contained shortcuts to built-in programs. Back then, as the 1.0-series of WindowsCE exclusively ran under clamshell Handheld PC’s with a built-in keyboard, it was pretty easy to find place for these quick start keys. For example, in the Philips Velo 1, the entire number row is overridden with them, providing access to almost all major applications (Pocket Word, Excel, Calendar, Contacts, Tasks, WWW, Inbox, Database, Calculator, Voice Memo) delivered with the device.
When, in 1998, the Palm-size PC’s and, in 2000, Pocket PC’s arrived, the lack of a built-in real keyboard meant it was no longer possible to crunch as many buttons in the radically reduced front and side surface of the device. Therefore, the number of shortcut keys were substantially reduced; most devices only sported five of them. There were differences in both directions: for example, the HP iPAQ 2210 only had four, while the Fujitsu-Siemens Pocket Loox 720 had six and, what is more, these buttons were all bifunctional: press and hold them instead of just quickly pressing it, and another functionality starts. (Some models, for example, the h2210, also supports something like this – holding the buttons results in, in general, creating new records. However, unlike with the Pocket Loox, you can’t redefine the functionality if you want to access something different.)
Unfortunately, very few models support bifunctional (short-press and long-press) buttons. While some device manufacturers (like HP with their WM5 upgrade for the HP iPAQ hx4700, introducing full support for press-and-hold front buttons) did realize the ability to double the functionality one can quickly access with a single button press(-and-hold), not even the latest mainstream models offer this. For example, HTC’s Pocket PC Phone Edition (Windows Mobile Professional) models, in general, only offer one application (app for short) button with double functionality (for example, Button 4 on the Universal and the Wizard); all the others are single-function and, therefore, greatly reduce their usefulness and the flexibility, should you want to greatly speed up invoking applications or greatly simplifying tasks (for example, by a hardware button-initiated macro playing back several pre-recorded stylus taps to, for example, greatly speed up mail checking).
Some of the current models even more reduced the number of (redefinable) buttons. For example, the HTC Elf / Touch only allows for redefining the Camera button and nothing else (also see THIS). Yeah, only ONE button. Nice, eh?
The hardware manufacturers’ neglecting the need of people wanting for more functionality assigned to the few hardware buttons of their Pocket PC’s (and, due to the, in general, far fewer application buttons they have, to a lesser degree, MS Smartphones) has resulted in a plethora of third-party solutions that do allow for this. In this roundup, I explain and thoroughly compare these all.
This kind of a Button Enhancer Bible has long been awaited. Except for some not very recent (pre-WM5) and, now, completely outdated quick reviews & comparisons, there has never been a really decent and thorough comparison of the major button enhancers, let alone ones that cover even the latest (2007), kick-butt, freeware titles developed by some highly skilled XDA-Developers folks.
1.1 What can you expect of button enhancers?
(Sometimes heavily) extending the number of applications you can start / tasks you can do with a hardware button by adding at least press-and-hold mode to the already-existing “short press” one. The vast majority of the enhancers add three additional states and there is one (HButton), which goes even further and lets for adding an unlimited number of different invocation capabilities to a button.
They, in general, contain widely asked-for goodies missing from the Windows Mobile operating system like a task manager (to quickly switch between running tasks), a task killer (to completely get rid of it to make sure it doesn’t take up any memory or other system resources), sometimes fancy, full-screen clocks (as opposed to the tiny one in the upper right corner) etc.
Note that you can freely download utilities like these. The most important repository of these free, but highly useful, single-purpose, small utilities is that of PHM PowerToys. The single-purposedness of these small applications also means these tools can be directly assigned to a hardware button (this is exactly what PHM Keys does). This also means that, if the particular button extender you select doesn’t have built-in for example Reset functionality (which can be very useful when assigned to a button, should you need to soft reset your device several times a day; a well-known situation for users of Resco Audio Recorder, which, in many cases, (at least on the Pocket PC platform) requires a reset after resuming the device and/or reinserting the sotrage card it should record to), you can always make use of Reset.exe of PHM PowerToys.
Incidentally, still speaking of the built-in Reset support of the reviewed button enhancers, none of them does prompt the user before resetting the device. Therefore, to avoid resetting resulting from an unwanted button press (you, for example, press it three times instead of twice and this triggers an unconditional soft reset), you may still want to prefer PHM’s version of Reset to the ones built into these button enhancers.
The case is pretty much different with the built-in task managers. In general, they’re better than that of PHM because you will have the time to select the task you’d like to switch to and, with the best task manager implementations, you can fine-tune its parameters.
Some (currently, two; one of these, buttonMax, still not being WM5+-compliant, doesn’t run on current Windows Mobile devices) of them let for defining application-specific shortcuts. These can be VERY important and useful. Just one example of this (which, also, explains where thee kinds of shortcuts can prove really useful):
Opera Mini (OM4 for short), with the latest, 4-series, has become a serious contender to all the other Web browsing solutions on out platform. Many even consider OM4 to be THE best Windows Mobile (WM for short) Web browser, particularly with a decent MIDlet manager (the environment to run MIDlets like OM4) like Esmertec’s Jbed.
OM4 (along with the still active 3-series) had, before the just-released beta 2, a very important problem: it doesn’t let for switching between full screen and non-full screen mode unless you have a built-in hardware dialpad or keyboard on your phone or, depending on the MIDlet manager you use (some, like Jblend, don’t support switching between the two screen modes using the on-screen keyboard; others like the, for running OM4, most recommended Jbed, can), can be bothered to bring up the on-screen keyboard to make the switch. If nothing works (you don’t have any kind of dialpad or keyboard and the on-screen keyboard isn’t supported by the particular MIDlet manager, you’ll need to find external ways of sending the “*” (or, in cases, the “**”) character(s) to OM4 to do the switching. It’s here that scripting solutions like MortScript come into picture: you just create a MortScript file containing a Sendkeys() function call, and just assign this script to one of your hardware buttons. After this, upon pressing the button, a *(*) will be inserted into the active program; if it’s OM4, then, it’ll force it to switch between the two screen modes. (Which, unfortunately, won’t work under the above-mentioned Jblend either, for reasons I’ll elaborate on in my forthcoming MIDlet Bible). Fortunately, with the latest beta, you can already get rid of the problem by going to Settings and make the changes yourself; but, again, this won’t help with the previous, 3.x-series still widely in use for the time being, that is, before the 4-series of Opera Mini leaves the beta status.
In addition to the full screen mode switching, OM4 has a lot of dialpad (numeric) key goodies like quick (page) up/down scrolling (as opposed to the default, line-by-line scrolling) when you use the 2/8 hardware buttons / keys. If you don’t have a handheld with these buttons / keys and you don’t want to open / slide out the keyboard (if it exists at all) to press 2 / 8 (the vast majority of Pocket PC’s, except for Asus’ phone models having a hardware dialpad, belong to this category), you’ll certainly welcome a solution that does the trick for you. That is, either an external program, tied to a hardware button, which you can invoke to send a 2 or 8 character to OM4, or a button handler, which itself can send your OM4 these shortcuts (for example, PQzII).
Yes, that’s at least two numeric key simulation functionality worth binding to a hardware key. And, if you would like to also bind the other, very useful numeric key-only shortcuts (see the complete list of them HERE, in the Opera Mini column) to hardware buttons, even more buttons would be needed.
If you bind these buttons to be active system-wise, then, you will quickly use up the really meager number of button configuration capabilities and you won’t really be able to make use of these configurations in any else program, where you won’t really need to enter, for example, 2 or 8 through a hardware button. This is (one example of) where application-specific button assignment can really pay off. You just use a button enhancer that is able to handle separate apps and only use button assignments with the defined one.
Note that, currently, not all applications can be treated this way. For example, as far as MIDlet managers are concerned (still sticking to the Opera Mini example), only those of Esmertes (Jeodek, Jbed) and TAO (Intent) will work. IBM’s J9 won’t work in app-specific mode (if at all: half of the devices I’ve tested it on keypress emulation wouldn’t work at all) and Aplix’s Jblend is the worst: it immediately pauses when you try to send something (for example, an emulated button press) to it. As VITO ButtonMapper, currently, doesn’t support sending out emulated keypresses (as has already been mentioned, it’s only PQzII that is capable of this feat), it must use an external tool (for example, MortScript) to generate keypresses, this means you in no way can send them to Jblend. Your only choice is PQzII, but the latter doesn’t allow for application-based, separate button assignment.
Another example of a program that cannot be used in separate, filtered mode is Opera Mobile 8.65, where using the numeric keys also greatly enhances the usability. This means you won’t
Many other WM programs, however, can be used in this “sandbox” model; therefore, VITO ButtonMapper still remains the number one button enhancer app to test when you want to have app-specific button assignments.
Please note that I’ll also elaborate on these issues in the “Hands-on experience: Passing keypresses to Opera Mini / Mobile” section. In there, you’ll get an even more thorough explanation of these questions and will also be presented some ready-made scripts.
Some add keyboard shortcut emulation. The most common of this is adding copy / cut / paste / select all emulation (for clipboard operation) and Tab, Enter, ESC, Cancel, Page up/down for cursor movement emulation. The, in this respect, best utility, PQzII, even supports defining any of the available alphabetic characters to be input. The latter, as has already been stated, can prove VERY useful with applications like Opera Mini and Mobile.
The most advanced ones (for example, again, PQzII) allow for assigning functionality like quick dialing a number or selecting a pharse to be inserted in the text (which is, otherwise, only supported by commercial tools like Resco Keyboard Pro in its “Frequently used phrases” mode)
Also, advanced apps also allow for stylus (but, currently, not button) macros; this is currently supported by two button enhancer applications. There are a lot of advantages of the support for this; see for example the “Scenarios for using with ButtonMapper” section in the VITO ButtonMapper manual.
1.2 How do I use them?
It’s pretty easy. If you already know (if you don’t, read THIS Smartphone & Pocket PC Magazine tip – in here, I don’t explain this basic stuff) how you can assign any external program to a button, you can rejoice: most third-party button assignment applications use a pretty similar Graphical User Interface (GUI) to assign your buttons. In some cases (most importantly, with the, if you need selective app and/or macro support, highly recommended VITO ButtonMapper), these apps use the system-level Buttons setter applet with some additional tools. (For example, with the VITO app, an additional drop-down menu to set the app you’d like to define assignments to and two buttons to save / retrieve the configuration.) In these cases, all you need to do is invoking the familiar (with the above-mentioned additions) Buttons applet.
Unfortunately, not all applications are so similar to the original, well-known Buttons applet. The, in this regard, worst PQzII, for example, has a very hard-to-understand GUI. The almost complete lack of documentation makes the situation even worse. This is why, in the main chart of this Bible, I’ve tried to provide as many screenshots as possible to show all the individual steps of, for example, assigning a given functionality to a button. I, however, haven’t written much text to accompany these screenshots. The order they are presented should be sufficient for most readers. Should you still having problems configuring PQzII, let me know (just post a public(!) question) and I’ll give you a definite answer.
As a rule of thumb, you assign buttons in these applications in exactly the same way as in the standard, operating system-default Buttons applet. You select the application button (or, in some other cases, other - phone (see the “Phone button redefine” row in the chart), keyboard, WM5 softkeys (“WM5 Softkey redefine” in the chart) or even D-pad arrows (“D-Pad functionality redefine” in the chart) - you’d like to assign an application or some functionality to and, then, select it from a list. You can do this to all the possible states of the button: single-press, double-press, triple-press, press-and-hold etc. (when available in the given application).
In many programs, you can also quickly remove this assignment so that the original (one-press only) setting set in the system-level Buttons applet takes place over the one set in the button enhancer application. In the chart, I’ve also elaborated on this issue with all the tested programs.
1.3 Issues; problems when using button enhancers
Some of these applications aren’t without problems.
First, as some of them are always running (because it adds significant functionality not possible to handle via the standard button assignment functionality, which only executes the given program when the button is pressed), there is a remote possibility they will take up a lot of system resources; most importantly, CPU time and memory. Fortunately, this isn’t the case: all the apps that do have a resident, always-active module have little system resource usage. There was only one app that had enormous (over 800 kbytes) memory usage: the original PQz, of which PQzII is the greatly enhanced version with dramatically reduced memory usage (see THIS for more info on the differences if interested).
Second, as they might be too selfish, they may mess up the local (or, default) button assignments made in for example multimedia applications. Almost all media players and remote media controllers offer the capabilities of locally assigned buttons (for example, TCPMP in Options / Settings / Select page / Hot Keys; Resco Audio Recorder 4 in Action / Options / General / Buttons etc.) For example, if you assign a button to, say, fast forward, stop or switch off the screen, this setting may collide with that of button enhancer applications, which might result in funny and/or unwanted consequences.
While there are no such problems with the built-in button assignments or any application that solely uses the infrastructure already available in Windows Mobile (that is, applications that don’t have a resident memory module), the vast majority of apps do interfere in at least some of these applications. Actually, it’s only the two non-resident apps (namely, DoubleLauncher and HButton) that have absolutely no problems working together with these kinds of applications.
I’ve made several tests to find out the most problematic programs. To represent a standard multimedia player application, I’ve used the hugely popular TCPMP. This application has a, by default, disabled option of “unhooking” buttons so that global, system-level button settings don’t interfere in the program (because they can’t be used). In addition, I’ve used the latest Resco Audio Recorder series, which is known to have even more serious problems with almost all the programs running in resident mode: either the buttons that are redefined / reassigned in the button enhancer stop working, or the globally defined functionality is executed half of the times and the local one in the other half. Finally, three apps (buttonMax, BtnPlus and Vito ButtonMapper) even require to be completely restarted after exiting Resco because they just stop working. In the Chart, it’s in the “Overrides local keyboard assignments?” section that I’ve elaborated on these issues and the problems. As can be seen, PQzII is clearly the worst application in this respect because it even messes up TCPMP – even when you do enable button unhooking in the latter.
Other problems arise from models and / or buttons already supporting press-and-hold (that is, double) functionality; for example, the above-mentioned Pocket Loox 720 or the WM5-upgraded HP iPAQ hx4700. If you try to use a button enhancer app with hold mode, the two hold modes (that of the operating system and the enhancer app) can clash, as was the case with the TCPMP / Resco case outlined above. In order to find out how the applications behaved under these situations, I’ve also made some serious tests on my WM5-upgraded HP iPAQ hx4700. In general, it can be stated if the given enhancer application supports press-and-hold functionality, this functionality won’t work with buttons also having native support for this. As button enhancer apps relying solely on press-and-holding (HButton) can ONLY work when assigned to a button not having native Hold support, you will only be able to assign HButton to Button 5 on the hx4700.
This all means press-and-hold functionality will not work if the OEM's button driver already implements multiple keypresses or press-n-hold.
In addition, press-and-hold usually doesn’t work for red/green phone buttons, WM5 softkeys and the Ok button (when available) because the system returns both the "key was pressed" and the "key was released" events simultaneously right after the button was actually released so enhancer apps that, otherwise, support these buttons (for example, AEBPlus) are not able to decide if it was a long (press-and-hold) button press or not.
It’s on purpose that I’ve emphasized I’m speaking of individual buttons and not devices themselves. For example, on the hx4700, the Record (fifth, side) button doesn’t have a Hold mode; therefore, with external button enhancers, you can also use their Hold functionality, unlike with the other four app buttons. That is, you can use the hold functionality on devices that do have buttons without at least one non-hold key.
2. The reviewed button enhancer apps
2.1 PQzII (Keyboard Helper) 0.0.7b 20070725
This is a very-very advanced, free utility, mainly for users of handheld devices with a real keyboard built-in, but, as it also supports traditional application buttons, other Pocket PC users can also make use of it.
There are several versions of it: a generic WM2003 and WM5 (which is tailored for the HTC Universal, but can be run on any other WM5+ Pocket PC (phone)), one for the HTC Wizard and the HTC Hermes. While, currently, there are no specific versions for other / newer devices, once you learn how the configuration files are built up, you’ll easily make one.
It allows for redefining / overriding any buttons (even the two phone buttons, the D-pad arrows and the two WM5+ softkeys). Note that, on the Universal, the pretty useless Internet Explorer key (the one in the lower left corner of the keyboard) can’t be redefined (see THIS); the same stands for the Messaging shortcut (close to the IE key).
The main discussion thread of PQzII is HERE and the (pretty simple and hard-to understand) official documentation HERE.
What I recommend is that you don’t let the very bad set-up interface and the substandard docs of PQzII chase away. Once you learn how it can be configured, you’ll love it and find it one of the most powerful utilities, particularly if you also have a built-in keyboard (it supports a lot of, on desktop PC’s, well-known keyboard shortcuts like copy/paste, CTRL+LEFT = HOME, CTRL+RIGHT = END, CTRL+UP = PAGE UP, CTRL+DOWN = PAGE DOWN etc. – all a god-send for everyone editing / typing a lot of texts on his or her handset). Let me, again, recommend the mini-tutorials in the chart, which will give you immense help in discovering the capabilities.
Note that you can even enter ANY Unicode char with ALT keys; a related post is HERE showing other solutions & consequences.
Note that there is a similar product, AE Keyboard Mapper (also known as AEKMap), which I do not review here for several reasons:
it doesn’t support application buttons, unlike PQzII, and, after all, the subject of this Bible is application button redefining, not that of built-in keyboards.
you need to activate (=pay for) it to get, with button enhancers, basic functionality like assigning applications to an alphanumeric key. With PQzII, you get the same functionality for free.
the same developer, Alexander Eltsyn, also offers a product, AEBPlus, solely meant for application button enhancement and is far more powerful in this regard that AEKMap. I will review it in this Bible.
2.2 HButton 1.9.1
This is a revolutionary, outstanding application in that, unlike all the other reviewed tools, it lets you assign any number (!) or applications to a single hardware button. Before you ask what the point in all this is, and whether it’s indeed easy to remember that, for example, the particular app you would like to start is at the eighth or the ninth postion, the answer is really reassuring. When you keep the selector (hot) button depressed, it scrolls through the titles of the apps you’ve assigned to that particular button. Whenever you see the program you would like to execute, you simply release the button and it’s started. (There are variations of this theme. For example, you can solely rely on the very quick and discreet vibrations or beeps; if you keep counting them, you’l know when to release the button to start the particular app.
It has other goodies too. As its “virtual” buttons need to be manually assigned to the hardware buttons of your handheld in the system-level Buttons applet, there is no in-memory resident code taking up resources / CPU time all the time and/or interfering with some apps having local button assignments (see the discussion of TCPMP and Resco Audio Recorder). However, the need for an additional, manual step to assign these virtual keys certainly make the configuration lengthier and, at first, a bit harder to understand. Nevertheless, once you get a picture how this all work, you’ll just love it.
All in all, an excellent application, well worth using, particularly on Pocket PC’s with a severely limited number of available, configurable buttons (for example, the HTC Elf / Touch).
2.3 AE Button Plus 2.6
This utility, having come from the same author than the already-mentioned and famous AEKMap, is alos very strong. In addition to its strengths on the Pocket PC platform, it is unique in that it’s the one and only tool to support the MS Smartphone (Windows Mobile Standard) support. Note that the well-known SmartToolkit (of which a new beta has just been released) also offers some button reassining capabilities, but only lets for simple press operations, as opposed to AE Button Plus. As it still has some quirks and, no matter how nicely it redefines the start menu, you won’t necessarily want to use it (for example, I uninstalled it after a while because of the speed problems in accessing the Start menu – I’ve just found the traditional of selecting my (current) apps way considerably faster), I don’t discuss it separately in here. I will do this as soon as it receives better button support and/or a stable, non-beta version is released.
This is without doubt THE most powerful button enhancer application when it comes the built-in goodies like switching on the built-in camera LED to work as a torch (not compatible with current MS Smartphones, unfortunately), connection starting/stopping etc. (See their almost complete list in the “Additional utilities” row of the “Compared to Settings / Buttons…” group of the chart). Granted, most of these hacks are invented by XDA-Developers hackers and programmers (for example, well-known vijay555) but you will need to install several additional apps to achieve the same. With AE Button Plus, you get all this built-in, without the need for installing and configuring several tools onto your Windows Mobile device. This itself – and the very low price tag – also makes this tool really appealing.
This application sits resident in the memory (with the definite disadvantages coming from this fact; for example, it certainly clashes with both TCPMP and Resco Audio Recorder but, fortunately, not so bad as PQzII).
Finally, a BIG request to all software developers and hackers: as with HButton and PQzII, I didn’t know of this application before embarking on writing this Bible either. With PQzII and HButton, this is pretty understandable as HButton is a brand new project started late Spring and PQzII was almost only discussed in a single HTC Universal thread (in a device-specific forum). Needless to say, none of the three apps were entered into the Software Encyclopedia of Smartphone & Pocket PC Magazine by the developers. This, and the fact that they have been only discussed in not widely known subforums is why I haven’t nominated them for this year’s Best Software Awards (they ALL would have deserved the nomination.) Therefore, my humble request to ANY Windows Mobile developer & hacker out there is the following: if you feel you’ve written a tool worth mentioning / paying attention to, don’t hesitate to contact me via a private message on any Windows Mobile forum. I’m using the nickname “Menneisyys” on all of them and you definitely will find me as I’m a top poster on all Windows Mobile forums. DO send me a message when you have something up your sleeves – you’ll get a lot of promotion for free and your app may even get nominated for the Awards, generating even more promotion, if I find your app is worthy enough. And it’s all free for you, with little effort – just a private message, with a link to the thread of your product and a sentence like “Please check out my latest tool, you might find it useful”. This particularly applies to hobbyist developers like the one of all these three apps. It’s almost impossible to run into their apps unless you excplicitly read thorugh hundreds of related threads because they don’t register their stuff in on-line software directories like the PPCMag Encyclopedia (and, in there, in the Utilities / Button Enhancers category. )
2.4 Vito ButtonMapper 4.0
This is one of the very few apps that have a really decent and easy-to-grasp manual. Its particular strength lies in its stylus macroing abilities and, what is even more important, the application-specific button assigning capabilities, in which, currently, is unique. (The other button enhancer app to do offer the same capabilities, buttonMax, currently (as of 10 / 16 / 2007) still isn’t compatible with WM5 and later operating systems, which means it’s useless on the vast majority of currently used handhelds.) Therefore, it’s highly recommended if you do need app-specific configurations – for example, number input for Opera Mini (more precisely, the MIDlet manager running Opera Mini) etc.
Don’t forget that, as has already been pointed out, the app-specific functionality doesn’t work with some programs; most importantly, Opera Mobile (as opposed to Opera Mini, which works just great together with Vito ButtonMapper when running under a compatible MIDlet manager – all MIDlet managers of Esmertec, TAO and, on some Windows Mobile models, IBM J9 – but not with Jblend). This, as has already been pointed out, is very bad news for all Opera Mobile users. If you plan to use Opera Mobile and want app-specific button assignments only active when running Opera in the background, you simply won’t be able to do this with the current, final version of Opera Mobile 8.65. Sorry. This is definitely not a bug in Vito ButtonMapper as the other, app-specific-capable app, buttonMax, can’t run Opera either (I’ve thoroughly tested this under WM2003).
As has also been mentioned, stylus tap emulation macros can also prove really useful. As has already been pointed out, you will want to read the “Scenarios for using with ButtonMapper” section in the VITO ButtonMapper manual for some examples of how this can be utilized.
All in all, I highly recommend Vito ButtonMapper, particularly if you need either app-specific settings or stylus macros (or both). If you don’t need these functionalities at all, you may also want to check out the free PQzII, HButton or AEBPlus – they have different capabilities and may turn out to be better suited for your needs.
2.5 DoubleLauncher
This app, in addition to HButton, is the only app NOT to have an in-memory module but uses the default button handler, which is advantageous in some cases (see for example the cases of applications with local keypresses – for example, Resco or TCPMP). Otherwise, it is clearly inferior to the best, most recommended, and, what is more, free apps: PQzII, HButton or AEBPlus. As it doesn’t support app-specific settings either, it is inferior to VITO’s app, which costs the same.
Therefore, I only recommend this app if you MUST use an app that, as with HButton, uses the built-in Button handler infrastructure because of the incompatibility of other button enhancers with your specific apps having local button assignments. Otherwise, you should go for something better and/or free.
2.6 BtnPlus 0.21
(direct LZH link)
This is a long-abandoned project not really working on any WM5+ devices I’ve tested it on. Therefore, you may only want to bother with using it if you have an SH3 Pocket PC 2000 device (a HP Jornada 525/54x). It has an English language tutorial for example HERE.
2.7 buttonMax 2.10
This app, as of the (current) 2.10 version, doesn’t have support for WM5, which is a pity because, otherwise, it’s a real capable button enhancer with the same unique capabilities as VITO’s app.
2.8 Verdict – which one to choose?
The answer is pretty simple: one of the PQzII, HButton, AEBPlus (which are all free; you can, of course, activate AEBPlus but the vast majority of the functionality is available even without doing so) or the commercial VITO ButtonMapper. As these four apps have distinct feature sets, you must yourself decide what features you need and what you don’t. For example, if you only have one configurable button (and don’t want to override for example your phone / softkey buttons with AEBPlus) but want to assign at least 4-5 programs (or, in a broader sense, any functionality) to it, your best choice is HButton. If you need either stylus macros or app-specific button assignment capabilities, your only choice is VITO ButtonMapper (unless, of course, if you have a pre-WM5 device. Then, buttonMax may also be a nice choice.) If your handheld also has a built-in keyboard, you might find PQzII the best. Finally, in addition to its being one of the best Pocket PC button enhancers, MS Smartphone users will want to use AEBPlus as there’re no other button enhancers compatible with the platform.
3. Hands-on experience: Passing keypresses to Opera Mini / Mobile
Now, some advanced tools for all of you that wan to pass keycodes (that is, want to emulate the usage of any keyboard) to the running applications. This is, as has already been emphasized, VERY important for every Opera Mini and Mobile users not having access to a hardware dialpad or keyboard with easily accessible numeric keys.
As has been stated in almost all my previous, Web browsing-related articles (also) concerning Opera Mini and Opera Mobile, two top-notch Web browser applications (also) available for Windows Mobile devices, these browsers are best used on a touchscreen-less Smartphone (because they all have a numeric dialpad) or a Pocket PC with a numeric dialpad built-in. Examples are the latter are most ASUS models including the forthcoming, “HTC Kaiser-killer” P750 (see THIS and THIS) or the forthcoming HTC Touch Dual. Unfortunately, the vast majority of Pocket PC phones still lack a numeric keypad. While they, mostly, do incorporate (except for some rare and/or now-outdated cases like the P3300, P3600, P6300, the first Touch and the forthcoming P6500) a slide-out keyboard, using it to control the two browsers is far from optimal (you need to slide them out, adding considerable bulk to your phone and/or making one-handed operation impossible).
Just an example of how cool these shortcuts are. Assume you want to quickly make Opera Mini full screen (or vice versa). You only need to press the * button twice in quick succession. No long, tiring menu traversing. The same stands for Opera Mobile: it also has some very useful features (quick switching between opened tabs, switching off/on pictures with a keypress; quick switching between the default and the desktop view etc) directly accessible from a dialpad button.
Unfortunately, neither Opera Mobile nor MIDlet managers (programs that run Opera Mini) can make use of the, during using these browsers, unused Pocket PC application keys. (I’ve long been telling the Opera Mobile folks to implement this functionality but, so far, they have had better things to do. Not that the competing browsers would all support configurable application buttons: the lack of support for this is still one of the biggest problems with even the latest previews of NetFront 3.4). It’s here that I come into the picture and explain exactly what you need to do.
Again, this tutorial only applies to you if you do NOT own a touchscreen-less MS Smartphone or a Pocket PC with a dialpad (or, if using the numeric keys on your full keyboard is OK with you – again, it wouldn’t be with me because of the awkwardness of slide-out keyboards, particularly when you browse the Web in Portrait mode).
In order to be able to assign at least the most important functionalities (for example, page up/down, quick selection list of active tabs, full screen vs. non-full screen mode etc) to the 4…7 (which can be doubled or even tripled with the tools I’ll also introduce) application buttons a typical Pocket PC has, do the following.
First and foremost, decide what they need to control. Do you need to control Opera Mobile or Mini?
3.1 Controlling Opera Mini
If you want to control the latter, do you have a MIDlet manager that CAN be controlled from the outside? (All can be, except for Jblend and, on many devices, IBM J9, which can only receive keypresses from PQzII, as is also explained in the “Can you use an external tool (MortScript's SendKeys, VJKeyPress or PQzII) to "inject" keypresses into the emulator?” row in the MIDlet Bible chart) If you need to stick to PQzII (because you have to use Jblend or IBM J9 on a device which doesn’t support MortScript), can you live with the lack of the “*” character? Can you switch to an in this regard (too) better MIDlet manager; most importantly, Esmertec Jeodek or Jbed? If you can, you won’t have problems with running MortScript, which allows for sending * characters.
Let’s take a quick glance on the different configurations and its capabilities:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
As you can see, there are the following possible configurations:
Any (including the default, system-level Button applet without any third-party button extender) button extender along with either MortScript or VJKeyPress to send any chars (with MortScript) or numeric chars (with both MortScript and VJKeyPress) to the MIDlet
PQzII to send numeric chars to the MIDlet: the only choice when you use Jblend or, in some cases, IBM J9
Also note that, should you want to prefer application-specific button assignment with VITO ButtonMapper (where, in what other Windows Mobile app could you use for example your 2/8/*-injector button shortcuts?), you must be aware of the fact that only the Esmertec and the TAO MIDlet Managers allow for this; IBM J9 has never worked for me. This is also explained in the “Selective (app-specific) button assignment for input with VITO ButtonMapper” row in the MIDlet Bible chart.
3.2 Controlling Opera Mobile
As Opera Mobile doesn’t require an additional MIDlet Manager (all with different compatibility issues) AND you can freely reconfigure input.ini so that you can get rid of the need to use * / #, your choices are far better than with Mini. The only exception is that Opera Mobile doesn't support selective button assignment.
3.3 Writing and deploying external scripts
Assuming you don’t want / don’t need to use PQzII (where just follow the mini-tutorial in the last, bullet starting with “Code conversion” in the “Other niceties worth mentioning” row), let’s see how you can pass any numeric characters (with VJKeyPress) or, even better (but decidedly slower), any char (including, for Opera Mini users, the very important * and # characters) with MortScript. Let’s start with the latter.
First, get the free (!) MortScript. In the ZIP file, just install \setup\MortScript-4.0-PPC.exe. After this, you can just copy your MortScript script files (on which I’ll promptly elaborate on) to anywhere under \Windows\Start Menu\Programs; I recommend a subdirectory so that they don’t cause a chaos because of their high number.
Now, let’s take a look at what MortScript files need to be used and how. First and foremost, all these scripts do is sending a (virtual) keypress to the currently focused application when they are invoked. If you execute them through an application button press, the given key code will be sent to the browser, which will, consequently, think it has arrived from a real dialpad (or keyboard) button.
Assigning a script to a hardware application button is easier than you think. If you don’t use any button enhancer application, you just copy the MortScript script files to somewhere under \Windows\Start Menu\Programs, go to Settings / Buttons, select the application button you’d like to assign the given functionality to and, finally, select the script file. This is exactly the same as associating any functionality with any hardware button. You only need to make sure you select the right script file. For example, if you want to send double asterisks (to quickly switch between full-screen and non-full-screen Opera Mini modes), you’ll need to assign SendDoubleAsterisk.mscr to a button. If you want to send the button press “2” (“Show window list” in Opera Mobile and “Page up” in Opera Mini), you’ll need to assign Send2.mscr to a button and so on.
The names of these files speak for themselves – you won’t misunderstand them. If you do, just take a look at the argument of SendKeys in it. There will be just one (or, with double asterisk sender scripts, two) characters in the argument of SendKeys like in SendKeys(“**”) or SendKeys(“2”). These instruct MortScript to emulate a double asterisk and a single “2” keypress respectively.
Now, let’s see how the same is done with the decidedly faster (it doesn’t have a full script parser and is only a “lightweight” app with the sole aim of emulating virtual keypresses) VJKeyPress (also see the related thread if interested; not obligatory). As it’s only able to pass Virtual Key codes, which means it in no way can pass for example asterisks or any non-alphanumeric characters (VK_MULTIPLY doesn’t equal to “*” and, therefore, won’t work), unlike MortScript.
Of course, you can do a lot more with MortScript (just some REALLY useful examples HERE and HERE) but, in cases, you just won’t need them. In addition, you can use the two keypress simulator utilities at the same time: just assign “real” alphanumeric buttons to VJKeyPress (so that you have speed) and non- alphanumeric buttons to (the slower, but more capable) MortScript.
Invoking VJKeyPress is very simple: you just create a .lnk file with the contents 250#"\Program Files\vijay555\VJKeyPress\VJKeyPress.exe" <keycode> (where you’ll find the numeric keycodes for all the passable parameters HERE; as can be seen, for example, if you want to simulate the button press of 2, you must pass VK_2, that is, 50 to VJKeyPress) and just assign it to a hardware button. As it’s a link file, you won’t have problems with third-party button enhancers not capable of doing so with MortScript’s native .mscr (no-link) files. Unfortunately, all button enhancers are like so, except for the excellent, highly recommended, free PQzII.
3.4 Creating direct MortScript .lnk files
To create an additional link file for your .mscr (MortScript script source) files (again, unless you use the built-in Buttons applet to assign your scripts), you’ll need to create a lnk file with the content like 240#"\Program Files\MortScript\MortScript.exe" "\Windows\Start Menu\Programs\MortScript\Send2.mscr" , where the second string contains the filename and the full path of the original .mscr script file.
For your convenience, I’ve created an archive of all these example files for both MortScript and VJKeyPress. The archive file is HERE. Just assign the scripts or the LNK files to a hardware app button and see how immensely they help users of Windows Mobile devices not having a dialpad at the front!
3.5 Some Opera Mobile / Mini Button Shortcuts
Finally, let me present the list of what functionalities you might want to assign to a hardware button.
Opera Mobile:
1 = Open url
2 = Show window list
3 = home (full up)
5 = Toggle images (needs reload / open new window / URL)
6 = page down
8 = Cycle to next window
0 = help
* = Enter fullscreen | Leave fullscreen
# = Enable mediumscreen mode | Disable mediumscreen mode
Again, note that these are the default shortcuts; you can override them by editing input.ini, as has been explained in some of my past articles.
Opera Mini:
See THIS (incidentally, this chart is highly recommended for Opera Mobile users as well!). Note that it contains info on the first beta of Opera Mini 4; the current OM4 beta 2 also added the shortcut button 1, which brings up a submenu, where you can quickly change between fit to width and full layout modes, reload the page and get page information. It also offers a Link context menu, which allows for opening a given link (you can force it to do this without images) and getting information.
4. Not real (and, therefore, not reviewed) button enhancers (menu apps)
4.1 HotButton Plus 3.0
This is not a button launcher, “only” a commercial ($9.90 with a 14-day unrestricted trial) menu app with quick switching between apps. In this regard, it’s a bit similar to HButton. It also supports quick dialing. Note that it’s PPC Phone Edition (WM Professional) only; with PPC’s, the hacked SMS/Phone DLL’s (see the “Platform compatibility: non-phone PPC” row in the MIDlet Bible chart) don’t work.
5. The chart
It’s HERE. Make sure you check it out – again, don’t forget that a chart like this is worth a hundred thousand words. Make sure you spend some hours on digesting the immense amount of information in the chart, should you want to learn a lot of nice tricks you may have never thought of before – it certainly pays off. Also, don’t forget the chart links in several screenshots (which I haven’t done in this review to, visually, “reduce” the already huge size of it) – you might want to check them out.
6. Related (old, outdated) articles, threads
Review of four button launchers (note that there is another version, but it lacks for example the Passthrough screenshots)
Button Mapping Program for WM2003?
Vito Technology's ButtonMapper Reviewed by PocketNow (original, linked article)
UPDATE (10/21/2007): After publishing the Bible, Spb Pocket Plus 4.0 was released. It has received a brand new and pretty cool button enhancer module as well, along with tons of very nice, other enhancements; for example, a greatly enhanced Internet Explorer plug-in (see THIS for more info). It supports hold mode but no other modes and uses the system-level Button applet; however, it also allows for redefining the OK button (but no softkeys / phone buttons / volume buttons or slider). It offers no goodies like app-specific settings, additional input chars etc. It sports several additional system goodies and provides access to all system settings applets. All in all, while it's certainly not the most feature-packed button enhancer, taking the indeed high-quality and very useful (albeit a bit buggy, but these bugs will surely be ironed out shortly) other modules and features of the suite, I highly recommend it. Again, unless you want advanced button enhancement features only other apps offer.
Note that I’ve added a new column on the app in the chart.
Other news / additions
As opposed to what I've stated, it’s possible to override the Internet Explorer button on the keyboard of the HTC Universal; see THIS. However, it’s not known whether it’s possible to do the same with the also hard-wired Messaging button.
There are some very nice and useful uses of the more advanced button enhancers; for example, passing Page Up / Down. If you’ve ever used water’s SmartSkey (one of my favourite tools), you know it has redefined (in addition to the WM5 softkeys) the volume slider of the Wizard / Universal on the non-Today / non-Phone screen to send Page Up / Down events to the active program. This can be overly useful in programs like Web browsers. To find out whether the tested apps are able to do so, check out the “(Additional) keyboard / D-pad emulation?” and the “Volume buttons / slider redefinable?” rows. The latter show whether the slider / volume buttons can be redefined. Of course, if they can’t be, you can still send PgUp/PgDn events to your apps – just assign them to another (supported and existing) hardware button. Also see THIS for more user reports / opinions on this feature.
I’ve added a new row, “Does it override (ignore to take into account) the global lock setting?” on the behavior when locked. As the vast majority of the button enhancers use their own code to access the buttons, some of them (for example, PQZ) doesn’t adhere to the locked state and will, therefore, execute the assigned app even in locked state, which isn’t necessarily what you want. See for example THIS for more user posts / opinions on this matter.
hey there, i am trying to assign the Left and Right Softkey to an HButton.
But there is no thing like left or right softkey in Hbutton.. can someone say me if it has a alternativ name in Hbutton?
btw im using a htc touch.
thanks. very helpful post. I read a few of your other posts and they all helped me.
thank you for the informative post and keep up the good work!

The Button Enhancer Bible & great button config tips for Opera Mobile / Mini users

The Button Enhancer Bible & great button config tips for Opera Mobile / Mini users
Back in early 1997, when the first Microsoft WindowsCE 1.0-based devices hit the selves, they already contained shortcuts to built-in programs. Back then, as the 1.0-series of WindowsCE exclusively ran under clamshell Handheld PC’s with a built-in keyboard, it was pretty easy to find place for these quick start keys. For example, in the Philips Velo 1, the entire number row is overridden with them, providing access to almost all major applications (Pocket Word, Excel, Calendar, Contacts, Tasks, WWW, Inbox, Database, Calculator, Voice Memo) delivered with the device.
When, in 1998, the Palm-size PC’s and, in 2000, Pocket PC’s arrived, the lack of a built-in real keyboard meant it was no longer possible to crunch as many buttons in the radically reduced front and side surface of the device. Therefore, the number of shortcut keys were substantially reduced; most devices only sported five of them. There were differences in both directions: for example, the HP iPAQ 2210 only had four, while the Fujitsu-Siemens Pocket Loox 720 had six and, what is more, these buttons were all bifunctional: press and hold them instead of just quickly pressing it, and another functionality starts. (Some models, for example, the h2210, also supports something like this – holding the buttons results in, in general, creating new records. However, unlike with the Pocket Loox, you can’t redefine the functionality if you want to access something different.)
Unfortunately, very few models support bifunctional (short-press and long-press) buttons. While some device manufacturers (like HP with their WM5 upgrade for the HP iPAQ hx4700, introducing full support for press-and-hold front buttons) did realize the ability to double the functionality one can quickly access with a single button press(-and-hold), not even the latest mainstream models offer this. For example, HTC’s Pocket PC Phone Edition (Windows Mobile Professional) models, in general, only offer one application (app for short) button with double functionality (for example, Button 4 on the Universal and the Wizard); all the others are single-function and, therefore, greatly reduce their usefulness and the flexibility, should you want to greatly speed up invoking applications or greatly simplifying tasks (for example, by a hardware button-initiated macro playing back several pre-recorded stylus taps to, for example, greatly speed up mail checking).
Some of the current models even more reduced the number of (redefinable) buttons. For example, the HTC Elf / Touch only allows for redefining the Camera button and nothing else (also see THIS). Yeah, only ONE button. Nice, eh?
The hardware manufacturers’ neglecting the need of people wanting for more functionality assigned to the few hardware buttons of their Pocket PC’s (and, due to the, in general, far fewer application buttons they have, to a lesser degree, MS Smartphones) has resulted in a plethora of third-party solutions that do allow for this. In this roundup, I explain and thoroughly compare these all.
This kind of a Button Enhancer Bible has long been awaited. Except for some not very recent (pre-WM5) and, now, completely outdated quick reviews & comparisons, there has never been a really decent and thorough comparison of the major button enhancers, let alone ones that cover even the latest (2007), kick-butt, freeware titles developed by some highly skilled XDA-Developers folks.
1.1 What can you expect of button enhancers?
(Sometimes heavily) extending the number of applications you can start / tasks you can do with a hardware button by adding at least press-and-hold mode to the already-existing “short press” one. The vast majority of the enhancers add three additional states and there is one (HButton), which goes even further and lets for adding an unlimited number of different invocation capabilities to a button.
They, in general, contain widely asked-for goodies missing from the Windows Mobile operating system like a task manager (to quickly switch between running tasks), a task killer (to completely get rid of it to make sure it doesn’t take up any memory or other system resources), sometimes fancy, full-screen clocks (as opposed to the tiny one in the upper right corner) etc.
Note that you can freely download utilities like these. The most important repository of these free, but highly useful, single-purpose, small utilities is that of PHM PowerToys. The single-purposedness of these small applications also means these tools can be directly assigned to a hardware button (this is exactly what PHM Keys does). This also means that, if the particular button extender you select doesn’t have built-in for example Reset functionality (which can be very useful when assigned to a button, should you need to soft reset your device several times a day; a well-known situation for users of Resco Audio Recorder, which, in many cases, (at least on the Pocket PC platform) requires a reset after resuming the device and/or reinserting the sotrage card it should record to), you can always make use of Reset.exe of PHM PowerToys.
Incidentally, still speaking of the built-in Reset support of the reviewed button enhancers, none of them does prompt the user before resetting the device. Therefore, to avoid resetting resulting from an unwanted button press (you, for example, press it three times instead of twice and this triggers an unconditional soft reset), you may still want to prefer PHM’s version of Reset to the ones built into these button enhancers.
The case is pretty much different with the built-in task managers. In general, they’re better than that of PHM because you will have the time to select the task you’d like to switch to and, with the best task manager implementations, you can fine-tune its parameters.
Some (currently, two; one of these, buttonMax, still not being WM5+-compliant, doesn’t run on current Windows Mobile devices) of them let for defining application-specific shortcuts. These can be VERY important and useful. Just one example of this (which, also, explains where thee kinds of shortcuts can prove really useful):
Opera Mini (OM4 for short), with the latest, 4-series, has become a serious contender to all the other Web browsing solutions on out platform. Many even consider OM4 to be THE best Windows Mobile (WM for short) Web browser, particularly with a decent MIDlet manager (the environment to run MIDlets like OM4) like Esmertec’s Jbed.
OM4 (along with the still active 3-series) had, before the just-released beta 2, a very important problem: it doesn’t let for switching between full screen and non-full screen mode unless you have a built-in hardware dialpad or keyboard on your phone or, depending on the MIDlet manager you use (some, like Jblend, don’t support switching between the two screen modes using the on-screen keyboard; others like the, for running OM4, most recommended Jbed, can), can be bothered to bring up the on-screen keyboard to make the switch. If nothing works (you don’t have any kind of dialpad or keyboard and the on-screen keyboard isn’t supported by the particular MIDlet manager, you’ll need to find external ways of sending the “*” (or, in cases, the “**”) character(s) to OM4 to do the switching. It’s here that scripting solutions like MortScript come into picture: you just create a MortScript file containing a Sendkeys() function call, and just assign this script to one of your hardware buttons. After this, upon pressing the button, a *(*) will be inserted into the active program; if it’s OM4, then, it’ll force it to switch between the two screen modes. (Which, unfortunately, won’t work under the above-mentioned Jblend either, for reasons I’ll elaborate on in my forthcoming MIDlet Bible). Fortunately, with the latest beta, you can already get rid of the problem by going to Settings and make the changes yourself; but, again, this won’t help with the previous, 3.x-series still widely in use for the time being, that is, before the 4-series of Opera Mini leaves the beta status.
In addition to the full screen mode switching, OM4 has a lot of dialpad (numeric) key goodies like quick (page) up/down scrolling (as opposed to the default, line-by-line scrolling) when you use the 2/8 hardware buttons / keys. If you don’t have a handheld with these buttons / keys and you don’t want to open / slide out the keyboard (if it exists at all) to press 2 / 8 (the vast majority of Pocket PC’s, except for Asus’ phone models having a hardware dialpad, belong to this category), you’ll certainly welcome a solution that does the trick for you. That is, either an external program, tied to a hardware button, which you can invoke to send a 2 or 8 character to OM4, or a button handler, which itself can send your OM4 these shortcuts (for example, PQzII).
Yes, that’s at least two numeric key simulation functionality worth binding to a hardware key. And, if you would like to also bind the other, very useful numeric key-only shortcuts (see the complete list of them HERE, in the Opera Mini column) to hardware buttons, even more buttons would be needed.
If you bind these buttons to be active system-wise, then, you will quickly use up the really meager number of button configuration capabilities and you won’t really be able to make use of these configurations in any else program, where you won’t really need to enter, for example, 2 or 8 through a hardware button. This is (one example of) where application-specific button assignment can really pay off. You just use a button enhancer that is able to handle separate apps and only use button assignments with the defined one.
Note that, currently, not all applications can be treated this way. For example, as far as MIDlet managers are concerned (still sticking to the Opera Mini example), only those of Esmertes (Jeodek, Jbed) and TAO (Intent) will work. IBM’s J9 won’t work in app-specific mode (if at all: half of the devices I’ve tested it on keypress emulation wouldn’t work at all) and Aplix’s Jblend is the worst: it immediately pauses when you try to send something (for example, an emulated button press) to it. As VITO ButtonMapper, currently, doesn’t support sending out emulated keypresses (as has already been mentioned, it’s only PQzII that is capable of this feat), it must use an external tool (for example, MortScript) to generate keypresses, this means you in no way can send them to Jblend. Your only choice is PQzII, but the latter doesn’t allow for application-based, separate button assignment.
Another example of a program that cannot be used in separate, filtered mode is Opera Mobile 8.65, where using the numeric keys also greatly enhances the usability. This means you won’t
Many other WM programs, however, can be used in this “sandbox” model; therefore, VITO ButtonMapper still remains the number one button enhancer app to test when you want to have app-specific button assignments.
Please note that I’ll also elaborate on these issues in the “Hands-on experience: Passing keypresses to Opera Mini / Mobile” section. In there, you’ll get an even more thorough explanation of these questions and will also be presented some ready-made scripts.
Some add keyboard shortcut emulation. The most common of this is adding copy / cut / paste / select all emulation (for clipboard operation) and Tab, Enter, ESC, Cancel, Page up/down for cursor movement emulation. The, in this respect, best utility, PQzII, even supports defining any of the available alphabetic characters to be input. The latter, as has already been stated, can prove VERY useful with applications like Opera Mini and Mobile.
The most advanced ones (for example, again, PQzII) allow for assigning functionality like quick dialing a number or selecting a pharse to be inserted in the text (which is, otherwise, only supported by commercial tools like Resco Keyboard Pro in its “Frequently used phrases” mode)
Also, advanced apps also allow for stylus (but, currently, not button) macros; this is currently supported by two button enhancer applications. There are a lot of advantages of the support for this; see for example the “Scenarios for using with ButtonMapper” section in the VITO ButtonMapper manual.
1.2 How do I use them?
It’s pretty easy. If you already know (if you don’t, read THIS Smartphone & Pocket PC Magazine tip – in here, I don’t explain this basic stuff) how you can assign any external program to a button, you can rejoice: most third-party button assignment applications use a pretty similar Graphical User Interface (GUI) to assign your buttons. In some cases (most importantly, with the, if you need selective app and/or macro support, highly recommended VITO ButtonMapper), these apps use the system-level Buttons setter applet with some additional tools. (For example, with the VITO app, an additional drop-down menu to set the app you’d like to define assignments to and two buttons to save / retrieve the configuration.) In these cases, all you need to do is invoking the familiar (with the above-mentioned additions) Buttons applet.
Unfortunately, not all applications are so similar to the original, well-known Buttons applet. The, in this regard, worst PQzII, for example, has a very hard-to-understand GUI. The almost complete lack of documentation makes the situation even worse. This is why, in the main chart of this Bible, I’ve tried to provide as many screenshots as possible to show all the individual steps of, for example, assigning a given functionality to a button. I, however, haven’t written much text to accompany these screenshots. The order they are presented should be sufficient for most readers. Should you still having problems configuring PQzII, let me know (just post a public(!) question) and I’ll give you a definite answer.
As a rule of thumb, you assign buttons in these applications in exactly the same way as in the standard, operating system-default Buttons applet. You select the application button (or, in some other cases, other - phone (see the “Phone button redefine” row in the chart), keyboard, WM5 softkeys (“WM5 Softkey redefine” in the chart) or even D-pad arrows (“D-Pad functionality redefine” in the chart) - you’d like to assign an application or some functionality to and, then, select it from a list. You can do this to all the possible states of the button: single-press, double-press, triple-press, press-and-hold etc. (when available in the given application).
In many programs, you can also quickly remove this assignment so that the original (one-press only) setting set in the system-level Buttons applet takes place over the one set in the button enhancer application. In the chart, I’ve also elaborated on this issue with all the tested programs.
1.3 Issues; problems when using button enhancers
Some of these applications aren’t without problems.
First, as some of them are always running (because it adds significant functionality not possible to handle via the standard button assignment functionality, which only executes the given program when the button is pressed), there is a remote possibility they will take up a lot of system resources; most importantly, CPU time and memory. Fortunately, this isn’t the case: all the apps that do have a resident, always-active module have little system resource usage. There was only one app that had enormous (over 800 kbytes) memory usage: the original PQz, of which PQzII is the greatly enhanced version with dramatically reduced memory usage (see THIS for more info on the differences if interested).
Second, as they might be too selfish, they may mess up the local (or, default) button assignments made in for example multimedia applications. Almost all media players and remote media controllers offer the capabilities of locally assigned buttons (for example, TCPMP in Options / Settings / Select page / Hot Keys; Resco Audio Recorder 4 in Action / Options / General / Buttons etc.) For example, if you assign a button to, say, fast forward, stop or switch off the screen, this setting may collide with that of button enhancer applications, which might result in funny and/or unwanted consequences.
While there are no such problems with the built-in button assignments or any application that solely uses the infrastructure already available in Windows Mobile (that is, applications that don’t have a resident memory module), the vast majority of apps do interfere in at least some of these applications. Actually, it’s only the two non-resident apps (namely, DoubleLauncher and HButton) that have absolutely no problems working together with these kinds of applications.
I’ve made several tests to find out the most problematic programs. To represent a standard multimedia player application, I’ve used the hugely popular TCPMP. This application has a, by default, disabled option of “unhooking” buttons so that global, system-level button settings don’t interfere in the program (because they can’t be used). In addition, I’ve used the latest Resco Audio Recorder series, which is known to have even more serious problems with almost all the programs running in resident mode: either the buttons that are redefined / reassigned in the button enhancer stop working, or the globally defined functionality is executed half of the times and the local one in the other half. Finally, three apps (buttonMax, BtnPlus and Vito ButtonMapper) even require to be completely restarted after exiting Resco because they just stop working. In the Chart, it’s in the “Overrides local keyboard assignments?” section that I’ve elaborated on these issues and the problems. As can be seen, PQzII is clearly the worst application in this respect because it even messes up TCPMP – even when you do enable button unhooking in the latter.
Other problems arise from models and / or buttons already supporting press-and-hold (that is, double) functionality; for example, the above-mentioned Pocket Loox 720 or the WM5-upgraded HP iPAQ hx4700. If you try to use a button enhancer app with hold mode, the two hold modes (that of the operating system and the enhancer app) can clash, as was the case with the TCPMP / Resco case outlined above. In order to find out how the applications behaved under these situations, I’ve also made some serious tests on my WM5-upgraded HP iPAQ hx4700. In general, it can be stated if the given enhancer application supports press-and-hold functionality, this functionality won’t work with buttons also having native support for this. As button enhancer apps relying solely on press-and-holding (HButton) can ONLY work when assigned to a button not having native Hold support, you will only be able to assign HButton to Button 5 on the hx4700.
This all means press-and-hold functionality will not work if the OEM's button driver already implements multiple keypresses or press-n-hold.
In addition, press-and-hold usually doesn’t work for red/green phone buttons, WM5 softkeys and the Ok button (when available) because the system returns both the "key was pressed" and the "key was released" events simultaneously right after the button was actually released so enhancer apps that, otherwise, support these buttons (for example, AEBPlus) are not able to decide if it was a long (press-and-hold) button press or not.
It’s on purpose that I’ve emphasized I’m speaking of individual buttons and not devices themselves. For example, on the hx4700, the Record (fifth, side) button doesn’t have a Hold mode; therefore, with external button enhancers, you can also use their Hold functionality, unlike with the other four app buttons. That is, you can use the hold functionality on devices that do have buttons without at least one non-hold key.
2. The reviewed button enhancer apps
2.1 PQzII (Keyboard Helper) 0.0.7b 20070725
This is a very-very advanced, free utility, mainly for users of handheld devices with a real keyboard built-in, but, as it also supports traditional application buttons, other Pocket PC users can also make use of it.
There are several versions of it: a generic WM2003 and WM5 (which is tailored for the HTC Universal, but can be run on any other WM5+ Pocket PC (phone)), one for the HTC Wizard and the HTC Hermes. While, currently, there are no specific versions for other / newer devices, once you learn how the configuration files are built up, you’ll easily make one.
It allows for redefining / overriding any buttons (even the two phone buttons, the D-pad arrows and the two WM5+ softkeys). Note that, on the Universal, the pretty useless Internet Explorer key (the one in the lower left corner of the keyboard) can’t be redefined (see THIS); the same stands for the Messaging shortcut (close to the IE key).
The main discussion thread of PQzII is HERE and the (pretty simple and hard-to understand) official documentation HERE.
What I recommend is that you don’t let the very bad set-up interface and the substandard docs of PQzII chase away. Once you learn how it can be configured, you’ll love it and find it one of the most powerful utilities, particularly if you also have a built-in keyboard (it supports a lot of, on desktop PC’s, well-known keyboard shortcuts like copy/paste, CTRL+LEFT = HOME, CTRL+RIGHT = END, CTRL+UP = PAGE UP, CTRL+DOWN = PAGE DOWN etc. – all a god-send for everyone editing / typing a lot of texts on his or her handset). Let me, again, recommend the mini-tutorials in the chart, which will give you immense help in discovering the capabilities.
Note that you can even enter ANY Unicode char with ALT keys; a related post is HERE showing other solutions & consequences.
Note that there is a similar product, AE Keyboard Mapper (also known as AEKMap), which I do not review here for several reasons:
it doesn’t support application buttons, unlike PQzII, and, after all, the subject of this Bible is application button redefining, not that of built-in keyboards.
you need to activate (=pay for) it to get, with button enhancers, basic functionality like assigning applications to an alphanumeric key. With PQzII, you get the same functionality for free.
the same developer, Alexander Eltsyn, also offers a product, AEBPlus, solely meant for application button enhancement and is far more powerful in this regard that AEKMap. I will review it in this Bible.
2.2 HButton 1.9.1
This is a revolutionary, outstanding application in that, unlike all the other reviewed tools, it lets you assign any number (!) or applications to a single hardware button. Before you ask what the point in all this is, and whether it’s indeed easy to remember that, for example, the particular app you would like to start is at the eighth or the ninth postion, the answer is really reassuring. When you keep the selector (hot) button depressed, it scrolls through the titles of the apps you’ve assigned to that particular button. Whenever you see the program you would like to execute, you simply release the button and it’s started. (There are variations of this theme. For example, you can solely rely on the very quick and discreet vibrations or beeps; if you keep counting them, you’l know when to release the button to start the particular app.
It has other goodies too. As its “virtual” buttons need to be manually assigned to the hardware buttons of your handheld in the system-level Buttons applet, there is no in-memory resident code taking up resources / CPU time all the time and/or interfering with some apps having local button assignments (see the discussion of TCPMP and Resco Audio Recorder). However, the need for an additional, manual step to assign these virtual keys certainly make the configuration lengthier and, at first, a bit harder to understand. Nevertheless, once you get a picture how this all work, you’ll just love it.
All in all, an excellent application, well worth using, particularly on Pocket PC’s with a severely limited number of available, configurable buttons (for example, the HTC Elf / Touch).
2.3 AE Button Plus 2.6
This utility, having come from the same author than the already-mentioned and famous AEKMap, is alos very strong. In addition to its strengths on the Pocket PC platform, it is unique in that it’s the one and only tool to support the MS Smartphone (Windows Mobile Standard) support. Note that the well-known SmartToolkit (of which a new beta has just been released) also offers some button reassining capabilities, but only lets for simple press operations, as opposed to AE Button Plus. As it still has some quirks and, no matter how nicely it redefines the start menu, you won’t necessarily want to use it (for example, I uninstalled it after a while because of the speed problems in accessing the Start menu – I’ve just found the traditional of selecting my (current) apps way considerably faster), I don’t discuss it separately in here. I will do this as soon as it receives better button support and/or a stable, non-beta version is released.
This is without doubt THE most powerful button enhancer application when it comes the built-in goodies like switching on the built-in camera LED to work as a torch (not compatible with current MS Smartphones, unfortunately), connection starting/stopping etc. (See their almost complete list in the “Additional utilities” row of the “Compared to Settings / Buttons…” group of the chart). Granted, most of these hacks are invented by XDA-Developers hackers and programmers (for example, well-known vijay555) but you will need to install several additional apps to achieve the same. With AE Button Plus, you get all this built-in, without the need for installing and configuring several tools onto your Windows Mobile device. This itself – and the very low price tag – also makes this tool really appealing.
This application sits resident in the memory (with the definite disadvantages coming from this fact; for example, it certainly clashes with both TCPMP and Resco Audio Recorder but, fortunately, not so bad as PQzII).
Finally, a BIG request to all software developers and hackers: as with HButton and PQzII, I didn’t know of this application before embarking on writing this Bible either. With PQzII and HButton, this is pretty understandable as HButton is a brand new project started late Spring and PQzII was almost only discussed in a single HTC Universal thread (in a device-specific forum). Needless to say, none of the three apps were entered into the Software Encyclopedia of Smartphone & Pocket PC Magazine by the developers. This, and the fact that they have been only discussed in not widely known subforums is why I haven’t nominated them for this year’s Best Software Awards (they ALL would have deserved the nomination.) Therefore, my humble request to ANY Windows Mobile developer & hacker out there is the following: if you feel you’ve written a tool worth mentioning / paying attention to, don’t hesitate to contact me via a private message on any Windows Mobile forum. I’m using the nickname “Menneisyys” on all of them and you definitely will find me as I’m a top poster on all Windows Mobile forums. DO send me a message when you have something up your sleeves – you’ll get a lot of promotion for free and your app may even get nominated for the Awards, generating even more promotion, if I find your app is worthy enough. And it’s all free for you, with little effort – just a private message, with a link to the thread of your product and a sentence like “Please check out my latest tool, you might find it useful”. This particularly applies to hobbyist developers like the one of all these three apps. It’s almost impossible to run into their apps unless you excplicitly read thorugh hundreds of related threads because they don’t register their stuff in on-line software directories like the PPCMag Encyclopedia (and, in there, in the Utilities / Button Enhancers category. )
2.4 Vito ButtonMapper 4.0
This is one of the very few apps that have a really decent and easy-to-grasp manual. Its particular strength lies in its stylus macroing abilities and, what is even more important, the application-specific button assigning capabilities, in which, currently, is unique. (The other button enhancer app to do offer the same capabilities, buttonMax, currently (as of 10 / 16 / 2007) still isn’t compatible with WM5 and later operating systems, which means it’s useless on the vast majority of currently used handhelds.) Therefore, it’s highly recommended if you do need app-specific configurations – for example, number input for Opera Mini (more precisely, the MIDlet manager running Opera Mini) etc.
Don’t forget that, as has already been pointed out, the app-specific functionality doesn’t work with some programs; most importantly, Opera Mobile (as opposed to Opera Mini, which works just great together with Vito ButtonMapper when running under a compatible MIDlet manager – all MIDlet managers of Esmertec, TAO and, on some Windows Mobile models, IBM J9 – but not with Jblend). This, as has already been pointed out, is very bad news for all Opera Mobile users. If you plan to use Opera Mobile and want app-specific button assignments only active when running Opera in the background, you simply won’t be able to do this with the current, final version of Opera Mobile 8.65. Sorry. This is definitely not a bug in Vito ButtonMapper as the other, app-specific-capable app, buttonMax, can’t run Opera either (I’ve thoroughly tested this under WM2003).
As has also been mentioned, stylus tap emulation macros can also prove really useful. As has already been pointed out, you will want to read the “Scenarios for using with ButtonMapper” section in the VITO ButtonMapper manual for some examples of how this can be utilized.
All in all, I highly recommend Vito ButtonMapper, particularly if you need either app-specific settings or stylus macros (or both). If you don’t need these functionalities at all, you may also want to check out the free PQzII, HButton or AEBPlus – they have different capabilities and may turn out to be better suited for your needs.
2.5 DoubleLauncher
This app, in addition to HButton, is the only app NOT to have an in-memory module but uses the default button handler, which is advantageous in some cases (see for example the cases of applications with local keypresses – for example, Resco or TCPMP). Otherwise, it is clearly inferior to the best, most recommended, and, what is more, free apps: PQzII, HButton or AEBPlus. As it doesn’t support app-specific settings either, it is inferior to VITO’s app, which costs the same.
Therefore, I only recommend this app if you MUST use an app that, as with HButton, uses the built-in Button handler infrastructure because of the incompatibility of other button enhancers with your specific apps having local button assignments. Otherwise, you should go for something better and/or free.
2.6 BtnPlus 0.21
(direct LZH link)
This is a long-abandoned project not really working on any WM5+ devices I’ve tested it on. Therefore, you may only want to bother with using it if you have an SH3 Pocket PC 2000 device (a HP Jornada 525/54x). It has an English language tutorial for example HERE.
2.7 buttonMax 2.10
This app, as of the (current) 2.10 version, doesn’t have support for WM5, which is a pity because, otherwise, it’s a real capable button enhancer with the same unique capabilities as VITO’s app.
2.8 Verdict – which one to choose?
The answer is pretty simple: one of the PQzII, HButton, AEBPlus (which are all free; you can, of course, activate AEBPlus but the vast majority of the functionality is available even without doing so) or the commercial VITO ButtonMapper. As these four apps have distinct feature sets, you must yourself decide what features you need and what you don’t. For example, if you only have one configurable button (and don’t want to override for example your phone / softkey buttons with AEBPlus) but want to assign at least 4-5 programs (or, in a broader sense, any functionality) to it, your best choice is HButton. If you need either stylus macros or app-specific button assignment capabilities, your only choice is VITO ButtonMapper (unless, of course, if you have a pre-WM5 device. Then, buttonMax may also be a nice choice.) If your handheld also has a built-in keyboard, you might find PQzII the best. Finally, in addition to its being one of the best Pocket PC button enhancers, MS Smartphone users will want to use AEBPlus as there’re no other button enhancers compatible with the platform.
3. Hands-on experience: Passing keypresses to Opera Mini / Mobile
Now, some advanced tools for all of you that wan to pass keycodes (that is, want to emulate the usage of any keyboard) to the running applications. This is, as has already been emphasized, VERY important for every Opera Mini and Mobile users not having access to a hardware dialpad or keyboard with easily accessible numeric keys.
As has been stated in almost all my previous, Web browsing-related articles (also) concerning Opera Mini and Opera Mobile, two top-notch Web browser applications (also) available for Windows Mobile devices, these browsers are best used on a touchscreen-less Smartphone (because they all have a numeric dialpad) or a Pocket PC with a numeric dialpad built-in. Examples are the latter are most ASUS models including the forthcoming, “HTC Kaiser-killer” P750 (see THIS and THIS) or the forthcoming HTC Touch Dual. Unfortunately, the vast majority of Pocket PC phones still lack a numeric keypad. While they, mostly, do incorporate (except for some rare and/or now-outdated cases like the P3300, P3600, P6300, the first Touch and the forthcoming P6500) a slide-out keyboard, using it to control the two browsers is far from optimal (you need to slide them out, adding considerable bulk to your phone and/or making one-handed operation impossible).
Just an example of how cool these shortcuts are. Assume you want to quickly make Opera Mini full screen (or vice versa). You only need to press the * button twice in quick succession. No long, tiring menu traversing. The same stands for Opera Mobile: it also has some very useful features (quick switching between opened tabs, switching off/on pictures with a keypress; quick switching between the default and the desktop view etc) directly accessible from a dialpad button.
Unfortunately, neither Opera Mobile nor MIDlet managers (programs that run Opera Mini) can make use of the, during using these browsers, unused Pocket PC application keys. (I’ve long been telling the Opera Mobile folks to implement this functionality but, so far, they have had better things to do. Not that the competing browsers would all support configurable application buttons: the lack of support for this is still one of the biggest problems with even the latest previews of NetFront 3.4). It’s here that I come into the picture and explain exactly what you need to do.
Again, this tutorial only applies to you if you do NOT own a touchscreen-less MS Smartphone or a Pocket PC with a dialpad (or, if using the numeric keys on your full keyboard is OK with you – again, it wouldn’t be with me because of the awkwardness of slide-out keyboards, particularly when you browse the Web in Portrait mode).
In order to be able to assign at least the most important functionalities (for example, page up/down, quick selection list of active tabs, full screen vs. non-full screen mode etc) to the 4…7 (which can be doubled or even tripled with the tools I’ll also introduce) application buttons a typical Pocket PC has, do the following.
First and foremost, decide what they need to control. Do you need to control Opera Mobile or Mini?
3.1 Controlling Opera Mini
If you want to control the latter, do you have a MIDlet manager that CAN be controlled from the outside? (All can be, except for Jblend and, on many devices, IBM J9, which can only receive keypresses from PQzII, as is also explained in the “Can you use an external tool (MortScript's SendKeys, VJKeyPress or PQzII) to "inject" keypresses into the emulator?” row in the MIDlet Bible chart) If you need to stick to PQzII (because you have to use Jblend or IBM J9 on a device which doesn’t support MortScript), can you live with the lack of the “*” character? Can you switch to an in this regard (too) better MIDlet manager; most importantly, Esmertec Jeodek or Jbed? If you can, you won’t have problems with running MortScript, which allows for sending * characters.
Let’s take a quick glance on the different configurations and its capabilities:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
As you can see, there are the following possible configurations:
Any (including the default, system-level Button applet without any third-party button extender) button extender along with either MortScript or VJKeyPress to send any chars (with MortScript) or numeric chars (with both MortScript and VJKeyPress) to the MIDlet
PQzII to send numeric chars to the MIDlet: the only choice when you use Jblend or, in some cases, IBM J9
Also note that, should you want to prefer application-specific button assignment with VITO ButtonMapper (where, in what other Windows Mobile app could you use for example your 2/8/*-injector button shortcuts?), you must be aware of the fact that only the Esmertec and the TAO MIDlet Managers allow for this; IBM J9 has never worked for me. This is also explained in the “Selective (app-specific) button assignment for input with VITO ButtonMapper” row in the MIDlet Bible chart.
3.2 Controlling Opera Mobile
As Opera Mobile doesn’t require an additional MIDlet Manager (all with different compatibility issues) AND you can freely reconfigure input.ini so that you can get rid of the need to use * / #, your choices are far better than with Mini. The only exception is that Opera Mobile doesn't support selective button assignment.
3.3 Writing and deploying external scripts
Assuming you don’t want / don’t need to use PQzII (where just follow the mini-tutorial in the last, bullet starting with “Code conversion” in the “Other niceties worth mentioning” row), let’s see how you can pass any numeric characters (with VJKeyPress) or, even better (but decidedly slower), any char (including, for Opera Mini users, the very important * and # characters) with MortScript. Let’s start with the latter.
First, get the free (!) MortScript. In the ZIP file, just install \setup\MortScript-4.0-PPC.exe. After this, you can just copy your MortScript script files (on which I’ll promptly elaborate on) to anywhere under \Windows\Start Menu\Programs; I recommend a subdirectory so that they don’t cause a chaos because of their high number.
Now, let’s take a look at what MortScript files need to be used and how. First and foremost, all these scripts do is sending a (virtual) keypress to the currently focused application when they are invoked. If you execute them through an application button press, the given key code will be sent to the browser, which will, consequently, think it has arrived from a real dialpad (or keyboard) button.
Assigning a script to a hardware application button is easier than you think. If you don’t use any button enhancer application, you just copy the MortScript script files to somewhere under \Windows\Start Menu\Programs, go to Settings / Buttons, select the application button you’d like to assign the given functionality to and, finally, select the script file. This is exactly the same as associating any functionality with any hardware button. You only need to make sure you select the right script file. For example, if you want to send double asterisks (to quickly switch between full-screen and non-full-screen Opera Mini modes), you’ll need to assign SendDoubleAsterisk.mscr to a button. If you want to send the button press “2” (“Show window list” in Opera Mobile and “Page up” in Opera Mini), you’ll need to assign Send2.mscr to a button and so on.
The names of these files speak for themselves – you won’t misunderstand them. If you do, just take a look at the argument of SendKeys in it. There will be just one (or, with double asterisk sender scripts, two) characters in the argument of SendKeys like in SendKeys(“**”) or SendKeys(“2”). These instruct MortScript to emulate a double asterisk and a single “2” keypress respectively.
Now, let’s see how the same is done with the decidedly faster (it doesn’t have a full script parser and is only a “lightweight” app with the sole aim of emulating virtual keypresses) VJKeyPress (also see the related thread if interested; not obligatory). As it’s only able to pass Virtual Key codes, which means it in no way can pass for example asterisks or any non-alphanumeric characters (VK_MULTIPLY doesn’t equal to “*” and, therefore, won’t work), unlike MortScript.
Of course, you can do a lot more with MortScript (just some REALLY useful examples HERE and HERE) but, in cases, you just won’t need them. In addition, you can use the two keypress simulator utilities at the same time: just assign “real” alphanumeric buttons to VJKeyPress (so that you have speed) and non- alphanumeric buttons to (the slower, but more capable) MortScript.
Invoking VJKeyPress is very simple: you just create a .lnk file with the contents 250#"\Program Files\vijay555\VJKeyPress\VJKeyPress.exe" <keycode> (where you’ll find the numeric keycodes for all the passable parameters HERE; as can be seen, for example, if you want to simulate the button press of 2, you must pass VK_2, that is, 50 to VJKeyPress) and just assign it to a hardware button. As it’s a link file, you won’t have problems with third-party button enhancers not capable of doing so with MortScript’s native .mscr (no-link) files. Unfortunately, all button enhancers are like so, except for the excellent, highly recommended, free PQzII.
3.4 Creating direct MortScript .lnk files
To create an additional link file for your .mscr (MortScript script source) files (again, unless you use the built-in Buttons applet to assign your scripts), you’ll need to create a lnk file with the content like 240#"\Program Files\MortScript\MortScript.exe" "\Windows\Start Menu\Programs\MortScript\Send2.mscr" , where the second string contains the filename and the full path of the original .mscr script file.
For your convenience, I’ve created an archive of all these example files for both MortScript and VJKeyPress. The archive file is HERE. Just assign the scripts or the LNK files to a hardware app button and see how immensely they help users of Windows Mobile devices not having a dialpad at the front!
3.5 Some Opera Mobile / Mini Button Shortcuts
Finally, let me present the list of what functionalities you might want to assign to a hardware button.
Opera Mobile:
1 = Open url
2 = Show window list
3 = home (full up)
5 = Toggle images (needs reload / open new window / URL)
6 = page down
8 = Cycle to next window
0 = help
* = Enter fullscreen | Leave fullscreen
# = Enable mediumscreen mode | Disable mediumscreen mode
Again, note that these are the default shortcuts; you can override them by editing input.ini, as has been explained in some of my past articles.
Opera Mini:
See THIS (incidentally, this chart is highly recommended for Opera Mobile users as well!). Note that it contains info on the first beta of Opera Mini 4; the current OM4 beta 2 also added the shortcut button 1, which brings up a submenu, where you can quickly change between fit to width and full layout modes, reload the page and get page information. It also offers a Link context menu, which allows for opening a given link (you can force it to do this without images) and getting information.
4. Not real (and, therefore, not reviewed) button enhancers (menu apps)
4.1 HotButton Plus 3.0
This is not a button launcher, “only” a commercial ($9.90 with a 14-day unrestricted trial) menu app with quick switching between apps. In this regard, it’s a bit similar to HButton. It also supports quick dialing. Note that it’s PPC Phone Edition (WM Professional) only; with PPC’s, the hacked SMS/Phone DLL’s (see the “Platform compatibility: non-phone PPC” row in the MIDlet Bible chart) don’t work.
5. The chart
It’s HERE. Make sure you check it out – again, don’t forget that a chart like this is worth a hundred thousand words. Make sure you spend some hours on digesting the immense amount of information in the chart, should you want to learn a lot of nice tricks you may have never thought of before – it certainly pays off. Also, don’t forget the chart links in several screenshots (which I haven’t done in this review to, visually, “reduce” the already huge size of it) – you might want to check them out.
6. Related (old, outdated) articles, threads
Review of four button launchers (note that there is another version, but it lacks for example the Passthrough screenshots)
Button Mapping Program for WM2003?
Vito Technology's ButtonMapper Reviewed by PocketNow (original, linked article)
UPDATE (10/21/2007): After publishing the Bible, Spb Pocket Plus 4.0 was released. It has received a brand new and pretty cool button enhancer module as well, along with tons of very nice, other enhancements; for example, a greatly enhanced Internet Explorer plug-in (see THIS for more info). It supports hold mode but no other modes and uses the system-level Button applet; however, it also allows for redefining the OK button (but no softkeys / phone buttons / volume buttons or slider). It offers no goodies like app-specific settings, additional input chars etc. It sports several additional system goodies and provides access to all system settings applets. All in all, while it's certainly not the most feature-packed button enhancer, taking the indeed high-quality and very useful (albeit a bit buggy, but these bugs will surely be ironed out shortly) other modules and features of the suite, I highly recommend it. Again, unless you want advanced button enhancement features only other apps offer.
Note that I’ve added a new column on the app in the chart.
Other news / additions
As opposed to what I've stated, it’s possible to override the Internet Explorer button on the keyboard of the HTC Universal; see THIS. However, it’s not known whether it’s possible to do the same with the also hard-wired Messaging button.
There are some very nice and useful uses of the more advanced button enhancers; for example, passing Page Up / Down. If you’ve ever used water’s SmartSkey (one of my favourite tools), you know it has redefined (in addition to the WM5 softkeys) the volume slider of the Wizard / Universal on the non-Today / non-Phone screen to send Page Up / Down events to the active program. This can be overly useful in programs like Web browsers. To find out whether the tested apps are able to do so, check out the “(Additional) keyboard / D-pad emulation?” and the “Volume buttons / slider redefinable?” rows. The latter show whether the slider / volume buttons can be redefined. Of course, if they can’t be, you can still send PgUp/PgDn events to your apps – just assign them to another (supported and existing) hardware button. Also see THIS for more user reports / opinions on this feature.
I’ve added a new row, “Does it override (ignore to take into account) the global lock setting?” on the behavior when locked. As the vast majority of the button enhancers use their own code to access the buttons, some of them (for example, PQZ) doesn’t adhere to the locked state and will, therefore, execute the assigned app even in locked state, which isn’t necessarily what you want. See for example THIS for more user posts / opinions on this matter.

Floating context menu in WM6 Standard (smartphone)?

Hi - I have searched and searched, but can't find the answer: how do you bring up the context menu (ie. right-click menu on the desktop; tap&hold action on Pocket PC) on a smartphone?
I have a T-Mobile Shadow (HTC Juno), but every button I try to "hold" just activates its "single press" function. I might have assumed that the Smartphone OS does not include support for a context menu, except I read somewhere that it was assigned to one of the hardware buttons on the HTC Tornado, and when using MyMobiler (remote keyboard/mouse app, kind of like VNC for the smartphone) I am able to right-click on screen items to bring up context menus. Obviously these menus exist, especially because WM6 has a (mostly) unified application platform, and many otherwise PPC apps make heavy use of the tap&hold menu function.
Digging around in the registry, I found the following key:
HKLM\Software\Microsoft\Shell\Extensions\ContextMenu\{CCCB31A5-8BA0-11d2-8C2F-00C04F72E246}
As well as a "ContextMenus" (plural) key in the same area that contains sub-keys for ActiveSync, AppView, Calendar, Contacts, Inbox, Notes, Phone, PicturePicker, Pictures...
...so clearly even many of the built-in smartphone apps include support for context menus.
I'd like to assign the context-menu functionality to my Shadow's hardware key, which probably means I need to create a shortcut file (.lnk) that activates this extension. Does anybody know how to do this? The PPC hardware button architecture is different; it uses a DWORD "Flags" value of "0B" for the context menu.
Anybody? Being able to bring up the context menu makes applications like Total Commander much easier to use. Please don't reply and tell me that there's no such thing as a floating context menu on the Smartphone OS, because I've disproven that.
(cross-posted at MoDaCo here: http://www.modaco.com/content/HTC-J...ting-context-menu-in-WM6-Standard-smartphone/)
there aren't context menus on smartphones
That's a funny one. Seriously, install MyMobiler and try right-clicking in on the Smartphone interface with your mouse. You'll get context menus.

Categories

Resources