Question for WiMo Standard developers -- Intercepting keystrokes - Non-Touchscreen Windows Mobile Other

This question is for WiMo Standard developers. I am a Windows .NET developer willing to learn more of this platform if you guys think this is doable and relatively simple.
Do you think it's possible and would you say it's relatively easy to implement a "dormant" application (in the Windows desktop world, this would be a service or any other type of TSR application) that intercepts keystrokes (interrupts?) and sends to the OS another keystroke defined in some sort of mapping configuration?
What I'd like to have (or be able to build) is an application that will intercept a keystroke like Fn+A while typing text and type á (or Á, depending on whether I'm writing in lower or uppercases). If I don't release Fn, but press A again within a second or so, then replace that previous letter by à (or À) and then by â (or Â), etc. Just toggle through all the foreign characters that resemble the letter A (configurable through a GUI or even a configuration file) until the Fn key (or Ctrl, etc., depending on the device) is released. Most QWERTY WiMo phones do this, but not all and the Samsung BlackJack II (i617) is an example. That is really my biggest complain with this phone and I'd love to overcome it.
Keep in mind that, although this may seem like an easy task at first, there are many things to take into consideration. For example:
- The application should only work when the device is accepting text input, not when it's in the home screen, a menu, etc.
- The application should be able to handle more than one mapping per key combination.
- The application should be able to delete the previously written character if Fn was not released and the second key was pressed again and a new mapping was found (á, backspace, à, backspace, â, release Fn, done!).
- The application should be able to determine whether the next letter was supposed to be lower or uppercase and return the correct character.
- The application should become friendly with T9 if enabled (or disable itself if T9 is enabled; I personally wouldn't care, since I always disable T9).
TIA for your feedback!

Related

Looking for Programmer to help Develop Cool App

Having grown tired of SPHelper and similar apps that don't truly interface PPC programs well on Smartphones, I've conceptualized a new approach that should be very do-able with the right programmer.
SmartCursor a Virtual Mouse for Smartphones
Using the camera as an input to judge the motion of the phone, translate this into an onscreen mouse pointer (ala' SPHelper) to allow smartphones to point and click onscreen controls. This would allow the use of some PocketPC (PPC) software by giving them a viable, intuitive, and speedy system to select any onscreen gadgets.
The 'click' button would be user-configurable so that any button they desire to use on the Smartphone can be used to be the 'down click' of the virtual mouse. In this way you could assign it to any of the extra buttons available on the side of the phone or on keyboards (like on the Dash).
Another button would also turn ON/OFF the virtual mouse as well so the app could be available at any time without affecting apps that don't need it.
Portrait to landscape mode changing (helloooo iPhone and Vox!) could be done by camera motion judging as well. Also flipping display upside down - whatever is supported in the OS of course.
Settings/preferences should include list of applications to suspend SmartCursor operations while these apps are in operation. Camera, VideoRecorder, etc. User can add apps as needed along with notes to suspend while 'in front' or suspend while active.
Alternate operation, if needed to prevent this app from slowing down other apps, hold activation button UNTIL desired click area is under cursor, send click, then suspend until activation button is held again.
With an app like this use of PPC apps, once successfully installed, would be a snap (of the wrist)!
Personally I just like the idea. I'm not as fond of the PPC OS as I am of the Smartphone OS. However a few apps, like Opera Mobile, could really benefit from having a virtual cursor program that is reliable and easy to use.
The key to future development would be the free availability of this application which is why I'm not trying to patent the idea, copyright it, or trademark anything about it. The idea is now public domain and I release the concept for any non-commerical use!
Kermit Woodall

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.

[Q] Android Keyboard with Alt key?

Is there a way of submitting Alt commands via an Android keyboard to my windows PC?
I presently use Air Mouse on an Ipod Touch to control my HTPC remotely.
This is the only use I have for the thing and I'd like to think that there will be the perfect Android solution for me soon.
The benefit of Air Mouse over RemoteDroid and GMote is the Alt key ability which neither of the Android apps have (or if they have I haven't found it yet), a function I find a lot of use for.
(I should add that the only Android device I have at present is an HTC Desire....so I guess that could be the limitation rather than the apps)
I don't really understand what you mean by alt key ability. Could you please explain, and maybe we can help sugest a solution?
What is it that this alt key ability of air mouse do, or more importantly, what is it that you want to accomplish with such an alt key ability?
Thanks for the reply, I had a feeling I wasn't being very clear.
I'd like to use my Android device as a trackpad and mouse for my HTPC.
My media player of choice (MPC-HC) uses a lot of keyboard shortcuts with the "Alt" signifier. For example Alt+X closes the program. These shortcuts are especially important because the program runs in a fullscreen mode which removes any context menus.
All the various android soft keyboards I have seen have no Alt key so I would lose a lot of functionality controlling the HTPC from an android device.
I have read that pressing the trackball twice on an HTC Desire may be a substitute for pressing the "Alt" key but have never got this to work in practice.
Just found an app that might suit your needs. I suggest you check it out.
GRemote Pro
Edit:
Ok, I just tried this app out, and it does exactly what you need.
It comes packed with an app alt, ctrl, tab and del buttons that let you alt+tab among other things.
I didn't see MPC-HC in the server setup, but that's not a problem as you can configure your own profiles with specific commands.
Fair warning, it's a bit on the slow side (seems to be a port of a winmo app), but I'm sure it'll get better with time and updates. It's a very polished Remote app for android and it even comes with drivers for a G-sensor controller to play games with (use android as wii-mote/controller).
This app defenitly rocks.
You sir (or madam) are a legend.
I was disappointed at first to see that this app doesn't simply add Alt and Ctrl keys to the standard keyboard, but it does allow considerable control of the media player directly.
Need to have a much longer play to see if it's really what I need...but I appreciate your effort already.
Another Suggestion
Have you tried unified remote?
It's got a full windows keyboard, You can create your own custom remotes and if you wanted, you could even have multiple droids connected.
Yes, this reply is s bit late, but better late than never
try Hackers Keyboard
I installed hackers keyboard and tried to activate it. It gives a prompt message that this will collect all information except passwords, including personal data and credit card numbers....!!!

[Request/Bounty] custom pc controller app for android

Hi.
I was just thinking (I'm a big fan of custom/programmable multi-key controllers) that it would be a great idea to be able to use my Samsung Tab as a controller (programmable) for pc tasks.
Once upon a (better) time, Saitek made a marvellous device called the P8000 (or PCDash2 in the US) [ http://www.neoseeker.com/Hardware/Products/Saitak_P8000/ ] and more recently (but not quite) there is the Ergodex DX1 system [ http://www.ergodex.com/mainpage.htm ].
Would it be possible/feasible to develop an application for Android that could function as the P8000 does?
I'd be okay for a static-keymap (only able to customize displayed image), only send joybutton1..joybuttonX signals to pc via USB, no need to be able to program function on the device itself. As long as it uses some form of standard signals, AutoHotkey can handle the pc-side of things. But programmable macros on-device would of course be better for people not familiar with AHK (majority, I'd say). And custom keymap would of course be top-notch, but might be stretching it.
Anyone else interested in this, and more specifically, any developers want to make something out of this?
I'll put my money (whatever small amount there is left of that) where my mouth is, and start:
* Static-keymap (4x5 [or preferably 6x7 on a tablet] "buttons"), standard JoyButton-signals, ability to customize displayed image. [15€]
* Ability to customize "button" grid (4x4 - 10x10 or so? for larger tablets?) [+5€]
* Ability to customize the button "grid" arbitrarily without being restricted by default x times y grid. (= customize buttons per-pixel. via xml?) [+10€]
* On-device selection of button functions (send keypress/joybutton/short macro) [+10€]
* customizable keymap (ability to change the button layout and number of buttons) [+15€]
* add button types (slider, "knob") [+10€]
* usable via bluetooth [+5€]
Please, if you're interested add your ideas (but stay on topic, this is supposed to be a customizable/programmable controller, not an elephant breeding machine or anything else.) But do add your own ideas (and any amount of money you'd be willing to pay.)
Devs, if you need more info on what I'm talking about, don't hesitate to contact.
tl;dr: I love my P8000 but I want a modern version of it, preferably in the form of an Android app that I can use on my 7" Galaxy Tab (or any Tablet/Note).
The P8000 is STILL the only viable controller on the market (well, Ergodex kind-of, but can't customize the "displayed image", only the layout) for this kind of work, and it hasn't been sold for years.
Also, with the current availability of touch screen devices, I'm dumbfounded that there ISN'T an application for this already (or a dozen). It should be very easy to do. (at least if Android can easily send button events to the host computer.)
I think I'm allowed a bump after a year. I'm still very interested if someone can code an (or point me towards an existing) application like this.
There's DroidPad, but it currently doesn't support x64 and doesn't seem to incorporate any image display feature at all, just the b&w layout.
Sorry for the new bump, but I think this is worth it.
Because I found a program almost exactly like I want, unfortunately it is for iOS.
Look here: http://itunes.apple.com/us/app/custom-keypad/id433683617?mt=8
That's what I mostly mean. Add an ability to lay-over an image and were there.

Categories

Resources