LapTopHack Manual written by [1]Paul Nevai [2]Paul Nevai [still under construction - and so is the manual since LapTopHack keeps evolving constantly] NOTE. You can find a plain text version of this manual [3]here and you can download it from [4]here. NOTE. This very same manual can be found online [5]here (HTML) and [6]here (text). You can also download them from [7]here (HTML) and [8]here (text). WARNING Since [9]pedit, LapTopHack, and pToolSet share components, if you use more than one of them, then they all must be of the same version, preferably the latest one. Table of Contents * [10]Present and Future - a Wish List * [11]Abstract * [12]Introduction * [13]Compatibility Issues + [14]The Palm Operating System Emulator [POSE] vs. LapTopHack and pedit + [15]Fitaly with LapTopHack and pedit * [16]Downloading LapTopHack * [17]Terminology * [18]buttonSlides * [19]Installation * [20]Registering LapTopHack * [21]Technical Support * [22]Troubleshooting * [23]Spelling LapTopHack * [24]The Escape Key Mechanism * [25]LapTopHack and pedit * [26]LapTopHack's Manual + [27]The Control Activation Mechanism + [28]The Menu Activation Mechanism + [29]The pPointer + [30]KeyBoard Shortcuts + [31]Graffiti Area Hot Spots + [32]Brightness and Contrast Adjustment + [33]The Category Editor + [34]The Date Selector o [35]The Day Selector o [36]The Year Selector o [37]dateMaster + [38]Date & Info [aka pInfoTool] + [39]The FIND SilkScreen button + [40]The Help [Tips] Forms + [41]The KeyBoard SilkScreen button + [42]peditHack, [p]editPad, magiPad, and scriptPad + [43]Popup Lists + [44]pScripting pedit, pToolSet, and LapTopHack (for soon-to-be "experts") o [45]The single key invocation mechanism for pScripts o [46]The Customizable pScriptButtons o [47]The pScriptRunner mini-applications o [48]pScripting with Fitaly + [49]pDateTool + [50]pToDoTool + [51]Summary of the effects of normalMode, advancedMode, and expertMode + [52]Undocumented Features * [53]Frequently Asked Questions * [54]Disclaimer and Legal Statement * [55]Acknowledgement * [56]Tidbits + [57]The GoType! defect * [58]Closure * [59]More from PaulComputing * [60]Development History + [61]Recent Changes Present and Future - a Wish List PRESENT. palm + [62]pedit + [optional] external keyboard = full LapTop power in text editing PRESENT. palm + [63]pedit + LapTopHack + [optional] external keyboard = practically full LapTop power FUTURE. palm + all applications + [optional] external keyboard = full LapTop power FUTURE. palm + all applications + [optional] external keyboard = full DeskTop power Please Read This Note Some users of LapTopHack 1.xx have voiced concerns that LapTopHack slowed down their otherwise speedy Palm OS. I must admit that their complaints were fully justified. Amazingly, this slow down effected only a few users. It took me along time to figure out how to alleviate the problem. LapTopHack 2.00 was rewritten from the ground up. I tested it very thoroughly on all my Palms and I found no performance degradation whatsoever. In addition, LapTopHack 2.00+ added [almost literally] a myriad new features to the feature list of 1.xx. LapTopHack 2.00+ is destined to be a winner. As demonstrated by thousands and thousands of its users, LapTopHack 7.00+ is already a winner. Abstract LapTopHack is a killer HackMaster extension which greatly enhances the power and usefulness of your beloved Palm Powered Handheld device whether or not you have an external keyboard attached to it. LapTopHack picks up where Palm left off and turns your Palm into an even more powerful computer. About LapTopHack... Major Features * As opposed to PPK and GoType!, LapTopHack allows you to navigate inside menus, and to activate all menu commands via external keyboards and Graffiti, or even via several 3rd party virtual keyboards. It works transparently and in a natural way. * As opposed to PPK and GoType!, LapTopHack allows virtually every control structure [buttons, check boxes, popup lists, and so forth] to be activated via external keyboards, Graffiti, or even via several 3rd party virtual keyboards. Among the many methods available in LapTopHack, you can pick the control structures by their names or by "clicking" on them using the pPointer [the Palm mouse] which is analogous to Robert Gasparotto's excellent PointerHack. * Palm's built-in text-copy and text-cut to the ClipBoard can contain no more than 1,000 characters. LapTopHack allows you to extend these limits up to 32,768 [32K] characters. Unlike [64]ClipHack which will cost you 7 bucks, LapTopHack extends the ClipBoard without crashing your Palm on a regular basis. * Palm's built-in [virtual] keyboard disables text input via Graffiti. LapTopHack re-enables Graffiti while the built-in virtual keyboard is active, and thus provides the same functionality that [65]Graffiti&Kbd does for 5 bucks. In addition, LapTopHack allows you to access the menus in the virtual keyboard via external keyboards and Graffiti. * In the original Palm environment, most text fields include a dotted underline [ruler] under each line of text. LapTopHack allows you to remove those annoying rulers. Unlike ClearHack which costs 5 bucks and is known to be slightly defective, LapTopHack does this the right way. * The alphabetic and numeric keyboard SilkScreen buttons can be deactivated, thereby allowing interference-free Graffiti entry even under conditions when symbols on the Graffiti input area are invisible such as movie theaters and waking up in the middle of the night. * LapTopHack, in co-operation with [66]pedit and [67]pToolSet, allows you to make a huge number of operations on your Palm handheld device fully [68]pScriptable. The opportunities are limitless for all practical purposes. Up to 9,990 customizable pScript buttons are available each of which can run a pScript of your choice. * LapTopHack allows you to create on-the-fly "To Do List" items without leaving your current application. * LapTopHack makes the [69]Help [Tips] Forms fully searchable and fully copyable. * Palm's built-in This editing operation cannot be undone dialog can be suppressed, which is especially useful when [70]pScripting pedit, pToolSet, and LapTopHack. * LapTopHack allows you to use the FIND SilkScreen button, and all the related operations, whether you have [71]superFinderHack installed or not, via external keyboards, Graffiti, or even via several 3rd party virtual keyboards. * LapTopHack greatly enhances the Date Selector. It allows you to select dates in more ways than you ever thought possible. * LapTopHack allows manipulating popped-up lists such as category lists via external keyboards, Graffiti, or even via several 3rd party virtual keyboards. * LapTopHack allows you to use the Category Editor via external keyboards, Graffiti, or even via several 3rd party virtual keyboards. * LapTopHack's Date'n'Time & Voltage'n'Battery form yields instant information on your Palm's vital statistics. * LapTopHack is backed by one of the best customer support and by one of the most enthusiastic groups who are available at the [72]peditors Forum. * LapTopHack's peditHack makes most of [73]pedit's favorite features available in all text editing applications. Introduction The primary goal of LapTopHack is to fill a void which exists between LapTops and Palm Powered Handheld computing devices. On one hand the Palm was designed to be as a simple handheld organizer whose [primary] input device is the stylus. On the other hand, all current versions of the Palm are, in fact, powerful computers which in many respects are as good, if not better, than LapTop computers are. LapTopHack greatly enhances the power and usefulness of your Palm Powered Handheld device whether or not you have an external keyboard attached to it. Unfortunately, both the current Palm operating system and all third party applications largely ignore the fact that, with proper software support, attaching an external keyboard to a Palm Powered device will turn the package into a miniature powerhouse. If you regularly use an external keyboard with your Palm, then you will quickly end up wondering how you could have existed without LapTopHack. As of August 17, 2000, I am not aware of any single program written for the Palm platform which would exploit this tremendous potential. The only exception is my beloved [74]pedit family of text editors. Although there are a number of keyboards available for Palm Powered Handhelds such as the Palm Portable KeyBoard [aka PPK or Stowaway or Targus] and GoType!, and so forth, as of August 17, 2000, their software drivers are somewhat buggy and definitely less than perfect in terms of the sophistication needed the turn a Palm Powered Handheld into a "lapheld" powerhouse. I want to state it clear and loud that I think both GoType! and PPK are absolutely first rate in terms of hardware, and I consider each an engineering marvel. LapTopHack is going to be an ongoing project to create the correct interface between Palm Powered handhelds, keyboards, and the user who wants to be able to exploit the available opportunities to the largest extent. QUESTION. Why would I want to use LapTopHack in conjunction with Graffiti, when a direct tap in the appropriate location on my Palm's screen in most cases would be easier and faster. ANSWER. If your vision is 20/20, then you are absolutely right. You should always tap. Otherwise, you will soon realize that it may be much simpler and much faster to use Graffiti for certain operations than trying to tap on the screen. In fact, even if you are lucky to have a 20/20 vision, try the following. EXPERIMENT. After you installed LapTopHack, go to DateBook (or DateBk3 or DateBk4) and tap on the "Go to" button. You end up in the Date Selector form. Now please enter SPACE via Graffiti. Did you see that the year moved? Isn't that easier than clicking the little arrow? Compatibility Issues LapTopHack is a HackMaster extension. Therefore, just like any other HackMaster extension, it may or may not work on your Palm Powered Handheld device. NOTE. Show me a HackMaster extension, and I bet I can make it crash your Palm. NOTE. As a matter of fact, as of versions 0.90 and 0.91, HackMaster itself is defective. If you launch HackMaster approximately 15 times and you have at least one active HackMaster extension, then it will crash your Palm with a "chunk over locked" message. Amazingly, very few people are aware of this, not even most of the top HackMaster extension developers. I read about this defect on comp.sys.palmtops.pilot, and then my experiments on all of my Palms confirmed this. I recommend that you try it out. Having scared you off, let me assure you that most properly written HackMaster extensions, including LapTopHack, will work fine most of the time. Nevertheless, please keep in mind that each and every HackMaster extension violates the fundamental programming rule which is endorsed by Palm. Namely, use the publicly available SDK [Software Developers' Kit], and, even if you are smart enough to figure out the inner workings of the Palm operating system, pretend that you do not know the nitty-gritty details. Rely on nothing but the SDK. [75]TealMaster is my favorite HackMaster replacement, especially on Palm OS 4.0+ where HackMaster is seriously handicapped. I have used LapTopHack with TealMaster and Palm OS 3.5.x since approximately March, 2001, and I absolutely love it. I found TealMaster's user interface almost perfect. I just wish that TealMaster allowed the user to view the active HackMaster extensions only. I know TealMaster's author who runs much of [76]TealPoint. He is a truly nice person who listens to users and I am sure that he will do his best to keep improving TealMaster. Several LaptopHackers reported that LapTopHack works well with [77]X-Master. Although I have not tested it, I added X-Master support to LapTopHack on May 28, 2001. Since I am currently very happy with TealMaster, I plan no X-Master tests. However, if I hear from our Laptophackers any bad news, I will note it in this manual. I have tried out at least one other HackMaster extension installer application, and I found problems with it despite its fancy features and interface when compared with HackMaster. Therefore, I recommend, endorse, and provide built-in LapTopHack support for [78]HackMaster [despite the above mentioned [79]defect], for [80]TealMaster, and for [81]X-Master [despite my lack of familiarity with it] only, and not for any other HackMaster extension manager application. NOTE. Just in case I did not sound sufficiently loud and clear, I want to state it as explicitly as possible that if you run EVPlugBase, then please do not contact me asking for help if you notice that your LapTopHack either misbehaves or acts slower than what you would expect from it. Although, as of April 16, 2002, I received no crash reports from any LapTopHacker which could be traced back to EVPlugBase, I am familiar with several well-documented instances when LapTopHack works more than 10 times slower if used with EVPlugBase as opposed to HackMaster or TealMaster. LapTopHack was tested in the regular RAM using the regular Palm Operating Systems 3.3 and 3.5.2, and the TRGPro version of Palm OS 3.5.1. In addition, it was also tested on POSE with non-debug versions of various Palm OSs. Since HackMaster doesn't run on POSE with debug ROMs, I could not test LapTopHack with the latter. NOTE. In case you did not know, "POSE" means "Palm Operating System Emulator". LapTopHack was also field tested by thousands of Laptophackers, and, although they did find some bugs in it, the latest release of LapTopHack always incorporates fixes for all reported and reproducible bugs. Tables sometimes represent a problem although I am not aware of any of them which are not mentioned in this manual. However, I spent an extraordinary amount of time and effort to resolve and/or to smooth out all the issues which arose in conjunction with trying to activate controls via LapTopHack in forms with tables. NOTE. Do you know what tables are? For instance, if you open up Palm's built-in DateBook, then all the appointments you see is nothing but one table. In a sense, tables are similar to spreadsheets. If you use one of those third party Palm OS performance enhancement tools such as over-clocking utilities or equivalents, and if you experience some LapTopHack incompatibilities with them, then please contact the makers of those tools, and ask them to make their product compatible with LapTopHack. Please tell them that I will be happy to assist them to find out why their product is incompatible with LapTopHack. NOTE. If your Palm Handheld device has the Palm Portable KeyBoard [aka PPK or Stowaway or Targus] keyboard driver installed, whether it is activated or not, and if you do anything with your Palm while it is sitting in the regular cradle connected to your "real" computer, then all bets are off. Whether or not you have LapTopHack, you may experience mysterious events. This includes HotSyncing. For instance, if you assign an application different from HotSync to your "Cradle" button via the "HotSync..." button in the "Buttons" preference panel [this is a normal and legitimate procedure], then be ready for disaster every time you attempt to HotSync. It is my understanding that this is a consequence of the PPK driver implementation design [the Palm wakes up when you hit a key on the PPK]. I spent countless hours trying to find bugs in LapTopHack which turned out to be PPK features and not related to LapTopHack at all. NOTE. HandEra and LapTopHack are mostly but not 100% compatible. This should not be shocking news since both do a variety of tricks to accomplish their tasks, and some of these tricks may conflict each other. Nevertheless, a number of HandEra owners are more than happy LapTopHacker, and I am not aware of any major problems. NOTE. BackupBuddyVFS exhibited some odd behavior when LapTopHack was installed. PeterW and I spent countless hours trying to figure out what was going on. I came to the conclusion that, although I couldn't prove that LapTopHack was innocent, there was no way I could see how LapTopHack was involved in this BackupBuddyVFS problem. As it turns out, BackupBuddyVFS 1.1 no longer show this odd behavior. I guess this means that LapTopHack was not guilty after all. I very much appreciate PeterW's help in resolving this issue, and his courageous and strong public defense of LapTopHack which, in retrospect, turned out to be fully justified. Although initially Blue Nomad's [82]FAQ mentioned LapTopHack as a potential cause of the problem, eventually they realized that this was not the case, and when I checked on September 10, 2001, the reference to LapTopHack was already removed. I also appreciate that the makers of BackupBuddyVFS [Blue Nomad] offered me to test a pre-release version of BackupBuddyVFS. NOTE. One user, DirkS, reported that [83]Clipper disables LapTopHack. Since Clipper is an OS patcher application which is not regulated by HackMaster, and since I heard about a few other Clipper related problems independently of LapTopHack, I recommend that if you have such a problem, then please report it to the Clipper people at [84]Stand Alone. I know them, and I can assure you that they are good guys, and that they will do their best to help you. NOTE. DALauncher's developer and I discovered the same trick. Namely, one can kidnap [monopolize] portions of the [85]Graffiti area without affecting the operation of the SilkSCreen buttons. Alas, since we both use the same trick, DALauncher and LapTopHack have a slight conflict. I resolved this problem by allowing DALauncher to use the "Left of Home icon" [sic, although "i" should be upper cased] tap point [see DALauncher's preference-type panel], and the rest of the digitizer's left and right borders are used by LapTopHack. NOTE. LapTopHack was found to misbehave in [86]DateBk3 [up-to version 3.0u] but I built a kludge into LapTopHack which alleviated the problem. As soon as DateBk3 is updated, I may remove this kludge from LapTopHack. LapTopHack works perfectly with [87]DateBk4. NOTE. [88]pInfoTool's RAM/ROM info was found to misbehave on some but not all Palms using JackFlash and Palm OS 3.5. My advice is that, if you use JackFlash, then please do not tap on RAM/ROM display since it may [or may not] hang your Palm. Thanks, Tammy, Nick, and Fred, [in chronological order], for reporting the problem. NOTE. Monika reported exactly the same problem even though she uses FlashPro and not JackFlash. However, she was using some kind of a hacked ROM [she likes to test dangerous waters and is one of my best bug finders]. NOTE. If you happen to use [89]Textware Solutions' [90]FitalyStamp [or [91]Fitaly], then I recommend that you activate LapTopHack first, and then FitalyStamp [Fitaly] in HackMaster, that is, the checked FitalyStamp should be listed above the checked LapTopHack. This way some of the [92]Graffiti area hot spots and [93]undocumented features of LapTopHack will not be preempted by FitalyStamp [Fitaly]. Needless to say, that you need to do this re-ordering after every soft reset of your Palm since the current version of HackMaster [0.90 and 0.91] does not keep track of the order of HackMaster extensions and it randomly re-orders them after each soft reset. NOTE. If you use TealMaster, then please set LapTopHack's priority to 2 [two], and FitalyStamp [Fitaly] to priority 1 [one]. Then set every other HackMaster extension's priority to a higher number. Yes, this is the correct procedure despite what you may have read about TealMaster's priorities in the TealMaster manual or in the TealMaster FAQ such as [94]this. EXPLANATION. Activating LapTopHack first and then FitalyStamp [Fitaly] in HackMaster or giving a higher priority number to LapTopHack than to FitalyStamp [Fitaly] means that FitalyStamp [Fitaly] gets a higher preferential treatment by the HackMaster extension manager application and LapTopHack gets a lower preference. However, both FitalyStamp [Fitaly] and LapTopHack were coded in such a way that, in a very counter-intuitive manner, the higher priority HackMaster extension voluntarily gives up the priority to the lower priority HackMaster extension [a chaining effect]. Hence, despite FitalyStamp [Fitaly] enjoying a higher priority, LapTopHack gets processed first. If you think that this is confusing, don't despair. It took me days to understand this, and I am grateful to the makers of TealMaster who explained this to me. NOTE. As Henk pointed out, Fitaly and FitalyStamp have a "slide" mode which may result in some unexpected behavior, since instead of entering a letter, say, "A", sliding enters "a" first, then deletes it, and then enters "A". Hence, please read the following advice, contributed by JohnH, on using these "slides" with LapTopHack and pedit. In addition to the regular "slides", Fitaly and FitalyStamp users can also assign text strings of up to 25 characters to each letter of the alphabet through a "Custom Left Slide" feature. This is perfect for starting [95]pScripts or doing other actions in LapTopHack and pedit, if the first character of the assigned string is the appropriate "ESC" character. Note however that by default, the lower case letter character itself is immediately sent to the current application at the pen-down motion. If that pen-down motion is turned into a slide (even a slide to simply capitalize the letter), then the lower case letter is quickly erased and replaced by the "correct" one(s). Unfortunately, if the current application can respond to a single character (like LapTopHack and pedit do in certain cases), Fitaly cannot always retract it by deleting. The result is unexpected behavior. The solution is to use Fitaly or FitalyStamp's Key Options menu to "Set letters at pen up". That way, nothing is sent to the application until the slide is done, at which time the correct character(s) are sent. According to the Fitaly manual, the "Set letters at pen up" option may slow Fitaly or FitalyStamp down. However, this has not been observed in actual usage. NOTE. JohnH and TonyA suggested that if you use FitalyStamp in conjunction with LapTopHack, then make sure (no pun intended) not to set the "sure mode" (accessible via FitalyStamp's "i" => "Key options..." => "Set sure mode | set normal mode" toggle). When the "sure mode" is on, it seems to interfere with LapTopHack's [96]control activation mechanism. NOTE. Franklin Reader was found to cause a crash if LapTopHack is active. Please blame Franklin Reader and blame it loud and clear. In fact, you should contact the makers of FranklinReader and tell them to check out [97]this which clearly explains that resource IDs 10000 through 32767 are reserved for system use. Thanks, JohnL, for reporting the problem. NOTE. Franklin Covey's "Daily Record Of Events" also crashed while using LapTopHack's [98]pToDoTool feature with current text selection. Please see my note above. It was frustrating and sad to watch "Daily Record Of Events" crash POSE [the PalmOS Emulator] five times every time it was started up. However, the "ToDo" crash itself was entirely my fault, and it was fixed as of version 5.70. Thanks, LarryC, for reporting the problem. NOTE. LapTopHack's [99]our ctrl activator and [100]objectRotator were found to misbehave in HanDBase's EditRecord form, and, therefore, I disabled them in that particular form of HanDBase. However, starting with of version 5.70, I completely rewrote [101]our ctrl activator, and the new version works fine with HanDBase. Thanks, Henk-Jan, for reporting the problem, and for your dedicated bug hunting and beta testing. NOTE. LapTopHack was found to misbehave in IntelligentFind, and, therefore, I disabled it in IntelligentFind. Thanks, Jeffrey, for reporting the problem. NOTE. Jeffrey told me on January 11, 2001, that IntelligentFind 2.1b3 no longer causes problems for LapTopHack so that, starting with version 2.70b, I re-enabled LapTopHack again in IntelligentFind. NOTE. As of version 5.998, both LapTopHack and [102]listNavigatorHack work with McPhling as long as you don't try to [103]navigate in McPhling's popup list. If you do, and if your McPhling's version number is 3.01 or less, then you will end up with a crash. Prior to version 5.998 you could have experienced crashes even if you just tapped one of the SilkScreen buttons while McPhling was in action. I did a temporary fix which eliminates the crash in the latter case. However, the bug was in McPhling which I communicated to Mike McCollister, and I am happy to report that Mike did fix the problem in McPhling 3.02. It was a pleasure for me to work with Mike. NOTE. MyBible's primary form does not fully co-operate with our ctrl activator since MyBible uses gadgets instead of triggers to pop lists up. There is nothing illegitimate about it, and MyBible doesn't violate any Palm user-interface rules. Nevertheless, if they changed their interface a little, say by epsilon, then this problem would be eliminated. Thanks, Michael, for reporting the problem. NOTE. If you use peditHack, [p]editPad, magiPad, or scriptPad in text fields which have a dynamic size [that is, the height of the field expands as characters are entered into the field and contracts as characters are deleted from the field], then you may end up with some display problems after returning to your original text field. Alas, this is related to a Palm OS bug which appears even in Palm's built-in applications whether or not you have LapTopHack installed. My verdict is that Palm is to blame and LapTopHack is innocent. EXAMPLE. Whether or not you have LapTopHack installed, go to Palm's built-in DateBook, and click on an blank time slot to start an appointment. Enter the number "1" into the text field. Then bring up the built-in virtual keyboard and continue entering ENTER 2 ENTER 3 Now select all text and quit the virtual keyboard by tapping the "Done" button. Isn't it weird that you see a blinking cursor and some text selected at the same time? EXAMPLE. If you use, for instance, KeyBoardHack, then you will see that it suffers from the same problem. NOTE. LapTopHack's [104]FIND was found to crash in Secret!, and, therefore, I disabled LapTopHack in Secret!. If I may say so, examining the insides of Secret! made me sick. I never seen such a sloppily constructed piece of software. If you don't believe me, use [105]RsrcEdit to analyze the "tFRMs" Secret!. Hopefully, by the time you read this, the Secret! guys will have cleaned up their act, since they were told of of this conflict and of my opinion way back in the second millennium. Thanks, Chris, for reporting the problem. WARNING. As the most recent [106]POSE reveals, RsrcEdit 1.017b is full of memory leaks [bugs] which may cause serious problems. Hence, it is prudent to use utmost care when playing with RsrcEdit. NOTE. One user, Mark, reported a slight conflict between LapTopHack and Swipe! since they both use similar pen strokes. However, you can eliminate this conflict by setting the proper preferences in LapTopHack. NOTE. One user, Michael, reported some screen redraw problems when using TealEcho. However, neither he nor I was able to connect the problem to LapTopHack. In fact, I was even unable to reproduce the problem, and subsequent attempts by Michael also failed to exhibit the problem. NOTE. The "U" [Undo] button may not always work in [107]peditHack, [108][p]editPad, [109]magiPad, and [110]scriptPad. Please don't blame LapTopHack for it. MagicText exhibits the same problem. It seems that it works on certain Palms and it doesn't on others. It appears that this may be related to your OS and not to your hardware. My conjecture is that, starting with OS 3.5, Palm took a different approach to implementing "undo" and it only works now if it is performed right after the text editorial operation. NOTE. If both LapTopHack and VirtualKB are installed and you bring up Palm's built-in virtual [111]KeyBoard, then you may end up with a crash. My advice is that you complain as loud and as clear to the VirtualKB guys as you can. VirtualKB violated a basic rule of the Palm programming guidelines, and now you ended up paying the dear consequences. There is an excellent chance that by the time you read this, the VirtualKB guys have fixed the problem since it was conveyed to them before the end of the second millennium. Thanks, Monika and Bill, for reporting the problem. As Chad told me on April 6, 2001, the problem still persists in version 2.0b. Since LapTopHack 6.00+ eliminated certain features, it is possible that this problem is no longer relevant. Homework. What is a "kludge"? The Palm Operating System Emulator [POSE] vs. LapTopHack and pedit It is my understanding that the latest versions of POSE, effective with perhaps version 3.2, limit the size of the ClipBoard to a maximum of 1000 characters. This limit is hardcoded into POSE and cannot be changed. Therefore, you should never ever use POSE for serious work with either LapTopHack or pedit since POSE may truncate your text without any warning. It is perfectly all right to test LapTopHack and pedit with POSE but please do not perform text related tasks with your essential data. NOTE. As of version 5.73, I introduced a number of changes in LapTopHack in order to fix this problem, or at least to minimize its effects. For instance, if LapTopHack sees that it is running on POSE, then it tries to keep the size of the ClipBoard to 1000 no matter how you set that value in LapTopHack's preferences. In addition, a number of operations which used to be done via the ClipBoard have been replaced by other techniques. These operations include the various copying and pasting jobs when switching from one [112]peditHack, [p]editPad, magiPad, or scriptPad to another one, or if quitting one of them back to your original text. If you find any other conflicts between POSE and LapTopHack or pedit, or if you think that I may have introduced new bugs while trying to fix the above problems, then please let [113]me know. Downloading LapTopHack You can download LapTopHack [114]here. Although this manual is included in the [115]LapTopHack.zip package, you can also access [116]LapTopHack_man.html directly. Terminology A LapTopHacker is a person who uses a legitimate copy of LapTopHack. A [117]peditor is defined analogously. In what follows, a "Palm" or a "Palm handheld device" refers to a PDA using the Palm Operating System [Palm OS]. This includes [but is not limited to] PDAs made by Palm itself, by HandEra [aka TRG], by HandSpring, and by Sony. A Palmer is a person who uses a Palm handheld device. NOTE. I was asked many times for advice on buying Palms. My pet response is "buy early and buy often". I refuse to endorse any Palm over any other Palm since I know thousands of happy [and unhappy] Palmers with all kinds of Palms. In addition, I am a down-to-earth guy who prefers functionality as opposed to cuteness. In particular, this explains why none of my Palms have a color display [as of August 23, 2001] and why I have several times more TRGPro's than Palm Vx's [my two favorites]. Yes, I do own quite a few Palms. NOTE. However, Please keep in mind that all Palms break sooner or later. Hence the quality and speed of technical support may be the most important issue to consider when purchasing a Palm. I hesitate to tell you the meaning of the abbreviation "PDA", since if I told you that it stands for "Personal Digital Assistant", then, as most Palmers and LapTopHackers will heartily agree with me, I would have grossly understated the facts. A Palm PDA "Practically Duplicates the Almighty". In case you didn't know, this picture represents a form. Some people prefer to call it "dialog" or "window". If something like this is visible on the screen of your Palm, or was visible just prior to invoking some LapTopHack form, then I refer to it as the current form. Terminology It illustrates what a button, push button, check box, selector trigger, popup trigger, popup list, and list is. LapTopHack uses the concept of default controls which is a somewhat vaguely defined but still very useful notion. QUESTION. Why to have default controls? ANSWER. Because LapTopHack provides a number of direct mechanisms to activate default controls. Basically, if your current form contains only one of the above control structures, then they are, by definition, the default. For instance, if your form has one single button, then it is the default button by definition. On the other hand, if your form has more than one of a given type of control structure, then the default one is the one which has the smaller "objIndex". The word "objIndex" means nothing to regular folks, but every Palm programmer knows what it refers to. It is the maker of your Palm application or HackMaster extension who decides the order of control structures, and, therefore, is responsible for picking the default control. NOTE. There are some exceptions to these rules such as default controls need to have textual labels [with the exception of check boxes]. In particular, if you find that your application or HackMaster extension does not order the control structures in a logical order, then it is your job to complain loud and clear to the maker of your application or HackMaster extension. Please explain the significance of the correct ordering. If you are lucky, she may redesign the form in a more natural way. EXAMPLE. If it turns out that your form has a "Done" and a "What's up doc?" button, then it seems logical, at least to me, that the former should be the default button. A default button is usually, but not always, surrounded by a bold frame. Default popup triggers and a default selector triggers can be recognized by their bold faced labels. I decided not to give visual marks to default check boxes and default push buttons. Nevertheless, they do exist, and you can easily find out which ones are the default ones by using one of the default control activation mechanisms such as "ESC 1", "ESC 2", ... , "ESC 5". NOTE. If you choose not to mark default buttons and/or default triggers visually, then they still exist except that you won't see [and know] which ones they are. When I talk about controls or control structures, I am referring to buttons, push buttons, check boxes, selector triggers, and popup triggers. The difference between a popup list and a regular list is that the former goes away once you click anywhere on the screen of your Palm. An example of a selector trigger can be found in the "General" panel of Palm's built-in "Prefs" application. Do you see the lower cased "i" in the top right of this picture below? About LapTopHack This "i" is called the "i tips" button associated with the above form. Tapping the "i Tips" button usually brings up some kind of help regarding your current form. When I tell you to type ENTER or CARRIAGE-RETURN, then I am referring to the RETURN key on your keyboard. You can also enter ENTER [sorry] by doing a swiper job in the Graffiti area across the diagonal from NE to SW [just like "/" starting from the top]. In what follows, I use the word modal differently than the official Palm lingo. According to Palm, modal forms ignore pen events outside their boundaries. In this sense, LapTopHack "de-modals" almost all forms, since it makes almost all forms react to such events. When I say that a form is modal, then I mean that it needs to kill itself before it can perform the action it was instructed to do, and then it needs to be invoked again if further action is required. For instance, in this sense, Palm's built-in virtual keyboard is non-modal since you can edit the text while the keyboard is on the screen, whereas almost all warning dialogs are modal. In what follows, the expression Graffiti area refers to everything what you see under the screen, including the four SilkScreen buttons on the two sides and the large rectangle used for Graffiti input. In what follows, the expression Graffiti pad below refers to the large rectangle used for Graffiti input. In what follows, the expression digitizer refers to everything what is sensitive to the stylus touch, including the screen and the Graffiti area. buttonSlides The venerable [118]peditorial [119]buttonShifts received a new interface in LapTopHack via buttonSlides. I wish I could say that I am the inventor of this powerful idea, but, alas, I am not. In fact, I stole it from Jean Ichbiah of the ADA programming language fame [with his kind permission] who uses a similar but not identical concept in his [120]Fitaly family of virtual keyboards. buttonSlides are nothing but pen strokes generating a ctlExitEvent which is a rather rarely used event in the Palm universe. In laymans terms, you create a buttonSlide by * 1. Press a button with your stylus so that it gets selected. * 2. Without lifting up your stylus move it outside the boundaries of the button. * 3. Congratulations, you just slid the button. EXAMPLE. The "S" button in [121]peditHack, [122][p]editPad, [123]magiPad, and [124]scriptPad is slidable. Once you mastered the concept of buttonSlides, the next step is to learn about directional buttonSlides, such as leftButtonSlides, rightButtonSlides, upButtonSlides, and downButtonSlides. For instance, you create a leftButtonSlide by * 1. Press a button with your stylus so that it gets selected. * 2. Without lifting up your stylus move it to the outside of the button by going to the left by at least 5 pixels from the left boundary of the button. * 3. Now lift up your stylus. * 4. Congratulations, you just left-slid the button. EXAMPLE. The "&" button in the [125]LapTopHack ESC form is up-slidable and down-slidable. Installation LapTopHack is meant to be used with Palm OS 4.xx or older, and it will not run on Palm OS 5.xx or newer. NOTE. LapTopHack 7.00+ comes with some additional optional pModules such as pDateTool_LTH.prc, pInfoTool_LTH.prc, pSearchTool_LTH.prc, pTextEngine1_LTH.prc, and pToDoTool_LTH.prc which provide advanced features, and which can be installed via regular HotSyncing. These pModules do not require any special activation, they work transparently. NOTE. If you have [126]pToolSet installed, then you should not install these additional pModules, since they are already part of pToolSet. Just make sure that you always use the latest version of both LapTopHack and pToolSet. WARNING. Some of the pModules such as pSearchTool_LTH and pToDoTool_LTH will not work well with pToolSet if your pToolSet is registered. In the latter case, you should always stick with the original pToolSet modules instead of LapTopHack's pModules. NOTE. Use pToolSetZapper_LTH to delete unwanted pModules. NOTE. Prior to version 7.00, some of LapTopHack's functions required that [127]pedit be installed. As of version 7.00, this is no longer the case. LapTopHack is a [128]HackMaster extension. If you don't have it yet, then please get HackMaster or another Hack Manager first. I was told that both PalmGear and Handango keep a large number of Hack Managers in their current stock. Then install both the Hack Manager and LapTopHack the usual way via a HotSync job. If you are not sure how to install Palm applications, please study the manual which came with your Palm. NOTE. If you already have a Hack Manager and another LapTopHack on your Palm, then please go to your Hack Manager and disable your current LapTopHack by unchecking the box next to it prior to installing the newest version. NOTE. If you forget to follow the above advice then upon installing LapTopHack, you will experience a innocent but guaranteed crash of your Palm. NOTE. If you have LapTopHack 1.00 on your Palm, then please delete it from your Palm after you unchecked the box next to it in your Hack Manager prior to installing the current version of LapTopHack. If your old LapTopHack is at least 1.02, then there is no need to delete it since installing the current version will automatically delete the old one. NOTE. Prior to version 7.00, LapTopHack had to be installed in the regular RAM since certain functions keept changing LapTopHack itself so that it had to remain writable all the time. WARNING. If you use version 7.xx or newer of any of the [129]pedits, LapTopHack, or pToolSet, then all your pedits, LapTopHack, and pToolSet must be 7.xx or newer since they are not compatible with version 6.xx or older. In addition, since pedit, LapTopHack, and pToolSet constantly exchange information, it may be necessary that they be of the same version number. NOTE. I suggest that you keep a backup copy of your peditDB.pdb which is somewhere in your HotSync backup directory on your desktop computer since you may need it in the highly unlikely event that you decide go back to versions 6.xx of pedit, pToolSet, and LapTopHack. HackMaster After you installed LapTopHack, don't forget to check the box next to LapTopHack in your Hack Manager. This will enable LapTopHack. Next, tap on the "?" mark to the right from LapTopHack. This will bring up the About LapTopHack form. Now click on the "i" symbol which brings up the Help form. About LapTopHack Please read carefully [130]these tips. They provide a short onboard introduction to LapTopHack. Among others, you will find out how to obtain contextual help in LapTopHack no matter what you are doing with your Palm Powered Handheld device. While in your Hack Manager, please set LapTopHack's preferences by tapping on the "+" sign next to the "?" mark to the right from LapTopHack. LapTopHack Preferences1 separator LapTopHack Preferences2 If you have already registered LapTopHack, then you should enter the registration information in the appropriate places. Then hit the "OK" button. This will free you from the inevitable nag screens which will eventually remind all currently unregistered users to become legitimate LapTopHackers. NOTE. A very few users reported to me that although they entered the registration information, LapTopHack still kept insisting that they were unregistered LapTopHackers. As it turns out, the primary reason for this was that either the entered text was incorrect or else they forgot to hit the "OK" button. However, in a very small number of cases neither the user nor I were able to determine the cause of this misbehavior. In the latter instance I told the unfortunate LapTopHackers (i) to install [131]RsrcEdit, (ii) to open up the Saved Preferences database, (iii) to delete all the records named pnLT which are LapTopHacker's preferences, and then (iv) to re-enter the registration information. This advice always worked. An alternate solution is to delete LapTopHack and to reinstall it. The latter action automatically deletes the preferences. WARNING. As the most recent [132]POSE reveals, RsrcEdit 1.017b is full of memory leaks [bugs] which may cause serious problems. Hence, it is prudent to use utmost care when playing with RsrcEdit. In case you need help in deciding how to set the preferences in LapTopHack, just click on the "i" symbol which brings up the Help form which contains [133]this information. In fact, I should perhaps be more direct and tell you that you must read [134]this when deciding the appropriate preference settings. NOTE. If you are in a hurry and you install a pre-2.81b version of LapTopHack but you don't set or verify the preferences, then LapTopHack may end up nagging you prematurely to register it. The solution is simple. Just install the latest LapTopHack. In particular, ... Palm's built-in text-copy and text-cut to the ClipBoard can contain no more than 1,000 characters. LapTopHack allows you to extend these limits by using the popup list next to the The ClipBoard size... label. In most cases, unless you have very little free RAM, it is all right to pick the largest number which is equal to 32,768 [32K]. NOTE. * LapTopHack modifies the text-copy operation completely transparently. * LapTopHack modifies the text-cut operation in the following way. + 1. If the text to be cut contains no more than 1,000 characters then Palm's built-in text-cut does the job. + 2. If the text to be cut contains more than 1,000 characters but no more than the modified "ClipBoard size" then a text-cut cuts the text and copies it to the ClipBoard but the operation is not undoable using Palm's built-in "Undo" command. However, the text-cut can still be undone using a regular text-paste. NOTE. If your application circumvents Palm's built-in text-copying and text-cutting functions, then please do not expect an extended ClipBoard from LapTopHack. Please contact the maker of your application and ask them if they use "FldCut ()" and "FldCopy ()". I heard that examples of such applications may include Eudora Internet Suite and WordSmith although I have no hard proof of this. NOTE. The website for WordSmith has a page which notes why ClipBoard extenders may not work with WordSmith. Alas, their explanation is incorrect in case of LapTopHack although it may be still valid in all other cases. I pointed this out to the makers of WordSmith some time ago. Very unfortunately several LapTopHackers and peditors received the above explanation from the technical support department of WordSmith even though it is completely irrelevant. TIP. If you want to use the contents of the ClipBoard which has WordSmith text pasted to it via [135]peditHack, [p]editPad, magiPad, and scriptPad, then first quit WordSmith before you invoke them. It seems that the ClipBoard is non-standard while your are in WordSmith, but upon quitting it, the ClipBoard reverts to normal text. This is probably a WordSmith feature. NOTE. Please keep in mind that in [136]DOC editors and/or viewers, the current text field holds only a portion of the entire [137]DOC file so that you will be unable to copy as much as you expect to copy. Please don't blame LapTopHack for this. NOTE. For 7 bucks, [138]ClipHack will also extend the ClipBoard of your Palm. However, it will also crash it on a regular basis if the OS is newer than 3.0 [this is a well documented fact]. In the original Palm environment, most text fields include a dotted underline [ruler] under each line of the text. If you check the no dotted rulers in text fields box, then LapTopHack removes those annoying rulers in multi-lined text fields. Unlike ClearHack which costs 5 bucks and is known to be defective, LapTopHack does this the right way. NOTE. When I was a novice Palm programmer [that is, even more novice than right now], and I was working on [139]pedit, some of the early peditors noticed that pedit had a slight conflict with ClearHack. It took me hard work to eliminate the conflict. Therefore, it gives me much pleasure that I was able to incorporate a non-defective version of ClearHack into LapTopHack, and that it took me only a few hours of work to figure out how to do it. If dialogs such as this Undo Alert bother you, then just check the no confirmation of can't undo box. NOTE. If you are a LapTopHacker or [140]peditor who is addicted to [141]pScripting LapTopHack, pToolSet, and pedit, then you may want to activate this option. NOTE. Please be aware that if you go for the no confirmation of can't undo option, then you will not be able to know which Palm text editing operations are undoable so that you need to be extra careful when editing text. It may be a good idea to use either LapTopHack's [142]peditorial functions or [143]pedit, since they both allow you to recover gracefully from unintended editorial fiascos. If you check the no keyboard via Graffiti tap box, then you will not be able to activate Palm's built-in virtual KeyBoard by tapping on either of the alphabetic or numeric keyboard SilkScreen buttons, although you can still invoke the KeyBoard via the [144]LapTopHack ESC form. QUESTION. Why would I want to deactivate the SilkScreen alphabetic or numeric keyboard buttons? ANSWER. Many Graffiti users, especially those working in dark, complained to me that they keep accidentally hitting those SilkScreen buttons, and, thereby, they keep unintentionally bringing up the virtual KeyBoard which can be a major distraction. If you check the use Graffiti area hot spots box, then you activate the [145]Graffiti area hot spots. NOTE. If you choose not to mark default buttons and/or default triggers visually, then they still exist except that you won't see [and know] which ones are they. Registering LapTopHack You can try out LapTopHack for 45 days w/o any limitations. Once you reach the 45 day limit, LapTopHack will start to nag you to remind you of your duty to register it. The frequency of these naggings will increase as time goes on. However, LapTopHack remains fully functional despite the persistent nagging. At one point these naggings become quite a pain in the you-know-what. Hopefully, by then you will have registered LapTopHack so that the nags are history. NOTE. If you are under the impression that LapTopHack nags you prematurely, then please read [146]this. I am told by an army of beta testers that this is a very generous policy, and not a single person decided against becoming a registered LapTopHacker [yet]. The current version of LapTopHack can be registered for US$14.00. Occasionally you may get a discount if you register it via [147]PaulComputing's website. As I add more features to it, the registration fee may [will] increase. Once you registered LapTopHack, then most, but not necessarily all, future versions will be available to you free of charge. For practical purposes and for legal reasons, I reserve the right to change this policy [the latter happened when version 6.00 was released]. If you honestly cannot afford the registration fee but you must have my Palm products anyway, then please contact [148]me for discount rates. [149]PayPal is the strongly preferred, easiest, and fastest way to register LapTopHack. Please register LapTopHack at PayPal right now. A working alternative is to mail a check for US$14.00 to Paul Nevai, 3346 Mansion Way, Columbus OH 43221-1573, USA. Please include your e-mail or your mailing address if you have no e-mail. You can also register LapTophack at [150]eSellerate: [151]browse all, [152]LapTopHack. Technical Support First, please read the section about [153]troubleshooting. Second, if the advice given in the section on [154]troubleshooting did not solve your problem, then please contact [155]me. Please state clearly the version number and compilation time'n'date of your LapTopHack, the exact name of your Palm hardware, the version number of you Palm operating system, and please describe the problem you have experienced. NOTE. If you are in the [156]LapTopHack ESC form, then either entering "V" [upper case "V"] or using the Version Info..." command in the Util" menu gives you the version number and the compilation time'n'date of LapTopHack [see [157]here for details]. If you live in North America, please provide your phone number, your time zone, and the times which are convenient for you. Please note that you can also obtain help by contacting the [158]peditors Forum. In fact, as it turns out, the collective mind of all peditors works better than mine alone. Therefore, in most if not all cases, it makes sense to write to the [159]peditors Forum prior to contacting [160]me. On the advice of JohnH, I recommend that you use the following template when contacting me. DO: Your Name (yourname@yourisp.com) year/month/day [such as 2001/09/11] Short description of the problem such as "I start up peditPro and my Palm crashe s." Application: [LapTopHack | peditPro | pedit | pedit32 | peditLight] Version: [such as 5.73] Compilation time'n'date: [11:01:43 EST on Jan 19 2002] Handheld hardware: [such as TRGPro] PalmOS version: [such as 3.5.1] Other hardware (keyboard, expansion memory, etc.): Free memory: [such as 2Mb] Other HackMaster extensions active: [such as FitalyStamp] Other OS patching applications: [such as QuickBits] Steps to reproduce: Other comments: [such as "I love your stuff"] Troubleshooting First, please read the section about [161]compatibility issues. Second, turn off all your other HackMaster extensions and see if the problem goes away. If it did, then turn on your HackMaster extensions one by one and isolate the problem. Once you have identified the guilty party, please contact their technical support and explain the problem. I know from personal experience that most Palm developers provide superior support. However, there are some exceptions. If you happen to experience the latter, then please be persistent. It may help your case if you send a copy of your correspondence to the [162]peditors Forum and to some of the Palm related newsgroups such as comp.sys.palmtops.pilot and alt.comp.sys.palmtops.pilot. You may also try Calvin's [163]PGHQ FAQ. Much of my Palm knowledge comes from studying this FAQ database. Next, check out the [164]peditors Forum or write to [165]peditors Forum since, as I mentioned it already, the collective mind of all peditors works better than mine alone. If the problem still persists then contact LapTopHack's [166]Technical Support. Spelling LapTopHack LapTopHack The Escape Key Mechanism The escape character ESC [its default value is the backquote character "`"] allows you to initiate certain actions such as activating buttons, push buttons, and check boxes and selecting certain items on the screen from external keyboards and/or via Graffiti input. The default ESC key can be changed in the [167]LapTopHack Preferences form. It is very important to understand that in LapTopHack's terminology ESC is NOT a hard key on your keyboard such as one labelled with Ctrl, or Alt, or Cmd, or whatever, but it is an ordinary key playing the role of ESC. The way it works is as follows. First you hit ESC and then the required letter. Do it consecutively and not simultaneously . Of course, this is a very familiar concept to pedit, emacs, vi, and joe users, and to others as well. EXAMPLE. "ESC C" ["`." if you have not defined your own ESC key] activates the "Cancel" button if you are in [168]superFinderHack. EXAMPLE. "ESC d" ["`d" if you have not defined your own ESC key] invokes date & info [aka pInfoTool, see [169]here]. You will notice that there is a visual confirmation when you use ESC to activate a button, push button, or checkbox. Isn't that cool? To use ESC ["`" if you have not defined your own ESC key] itself as a regular character in a text field, just enter ESC twice as in ESC ESC ["``"]. Please keep in mind that LapTopHack's commands are, at least in principle, case sensitive. Hence, generally speaking, "ESC a" and "ESC A" are different commands. However, as you will see there are very many exceptions to this rule. NOTE. You can enter "`" via Graffiti by first tapping, and then by swiping from the bottom-right to the top-left and back to the bottom-right in the left side of the Graffiti input area. NOTE. I like to use \ [back-slash] as the ESC key. NOTE. On GoType! and on almost every other standard keyboard, "`" is an ideal choice for ESC. On the Palm Portable KeyBoard I recommend picking "\" [back-slash] as the ESC key. NOTE. As BruceM correctly pointed it out, if you ever intend to use [170]pScripting, then stay away from the forward slash "/" as an ESC key candidate. LapTopHack and pedit Since [171]pedit is also using the same escape key mechanism as LapTopHack, you can either redefine "ESC" in pedit or LapTopHack from "`" to something else, or just follow [172]this advice and use "ESC ESC" ["``"] instead of "ESC" ["`"] whenever an escape key is called for. EXAMPLE. If LapTopHack is installed, then "ESC ESC j" ["``j"] does a jumper job in pedit's EditView. LapTopHack's Manual NOTE. LapTopHack does no more and no less than what is described in this section. In particular, LapTopHack does not have any effect on buttons and other controls unless it is explicitly described here. As you will see, there will be rather few instances when LapTopHack fails. As of version 2.00, an example of LapTopHack's failure to help is related to [non popped-up] lists and tables and to selecting items from a such lists and tables. Of course, future versions of LapTopHack may address such issues. NOTE. If you want to use LapTopHack with an external keyboard, then you need to have the driver for that particular keyboard installed and activated on your Palm Powered device since LapTopHack is a supplement to and not a substitute for the keyboard drivers. NOTE. LapTopHack also works perfectly in conjunction with Graffiti and with many of the 3rd party virtual keyboard substitutes such as Fitaly and FitalyStamp. LapTopHack provides so many features that even singling out a few of them is a highly non-trivial job. Please see the [173]Abstract for an attempt to highlight some of these features. When you enter the "ESC" key "`" or "back-quote" if you have not defined your own ESC key], LapTopHack takes you to the [174]LapTopHack ESC form. LapTopHack ESC1 separator LapTopHack ESC2 separator LapTopHack ESC App menu NOTE. As of version 5.6x, the [175]LapTopHack ESC form is undergoing a major upgrade job so that the documentation below may not be 100% accurate. Please bear with me. I promise that you will love the final product [well, "final" in the well-known LapTopHackorial sense only]. You can think of this form as the cockpit of your LapTopHack. Most but not all LapTopHack operations originate from this form. If you feel somewhat overwhelmed by the sight of this form, just hit the "i" symbol in the upper rigth corner of the screen or enter "h" which brings up the Help form which tells you [176]this. In particular, you will find out that a pen stroke from the very bottom right corner of the ENTIRE glass or plastic screen area to the very top left corner of the screen also brings up this very same [177]LapTopHack ESC form. You can also use [178]Graffiti area hot spots to bring up the [179]LapTopHack ESC form. NOTE. Even though I use rectangularly framed buttons in LapTopHack ESC, none of them are push buttons. As all peditors know, I am a rectangular button aficionado who loves not only their esthetic appeal, but also recognizes that they allow better utilization of the valuable Palm screen real-estate. The second generation [180]LapTopHack ESC form has panels [pages] and menus. The former can be brought up using the following rules. * the "<=" button = "<" = page up = previous field char = go to the previous "LapTopHack ESC" panel * the "=>" button = ">" = page down = next field char = go to the next "LapTopHack ESC" panel * "=" = rotate forward to the next "LapTopHack ESC" panel NOTE. If you change modes [see [181]normalMode, [182]advancedMode, and [183]expertMode], then you will always restart with the default panel which is #0 [zero]. NOTE. The button labels may seem to start with odd letters. They are there for keyboard support. Each and every button can be activated by entering the first case-significant letter of its label. NOTE. Some buttons have also [184]buttonSlided actions associated with them. The top four buttons in the [185]LapTopHack ESC form's panel #0 activate the corresponding SilkScreen buttons. NOTE. Yes, you guessed it right, j menu stands for "menu" but it is activated by entering "j" [lower case "j"]. NOTE. Use "J" [upper case "J"] to activate the [186]LapTopHack ESC form's own menus. LapTopHack ESC App menu NOTE. The menus are pretty much self-explanatory. Please note that some of the commands in the "App" menu try to find the best possible program. For instance, pressing "5: Edit" or typing "5" and "ENTER" brings up your particular pedit if it is installed, and MemoPad otherwise. These menus are fully supported by the [187]Menu Activation Mechanism. This feature is still under construction. If you switch to panel #1, then the apps button is replaced by the DBs button which which gives you information about the currently open databases on your Palm. This information is useful for experts but is pretty much useless for ordinary mortals. If you switch to panel #1, then the menu button is replaced by the mem button which gives you information on your Palm's memory. If you switch to panel #1, then the find button is replaced by the ftr # button which gives you information on the currently used feature numbers in your Palm. This information is useful for experts but is pretty much useless for ordinary mortals. If you switch to panel #1, then the calc button is replaced by the coord button which activates the [188]pInfoTool's [189]coordinator. NOTE. A cousin of the coordinator is the "C" command in the [190]pPointer [the Palm mouse]. NOTE. You will find the coordinator and its pPointer cousin especially useful when designing [191]pScripts. HINT. Use the coordinator to diagnose dead spots on the screen and Graffiti area of your Palm. If you tap and the coordinates do not show up, then it is time for you to call your particular Palm's technical support and to ask for a fixer upper job [hopefully, under warranty]. In the next row the left and right buttons activate the built-in virtual keyboard in alphabetic and numerical mode, respectively. Of course, these two buttons are context sensitive so that you can only activate them when it is appropriate. For instance, if there is no editable text field in your current form, then you can't bring up the built-in virtual keyboard. The light button tuggles the "BackLight" on and off as long as your particular Palm supports this feature. The print button brings up [192]printHack as long as you have it installed on your Palm. You can use printHack to print either the current text, or the current text selection, or the current textual contents of the ClipBoard. NOTE. [193]printHack requires that you have either [194]Stevens Creek Software's [195]PalmPrint, or [196]TealPoint's [197]TealPrint installed in your Palm. If you switch to panel #1, then the four buttons labeled kScript, lScript [lower case "ell"], tScript, and nScript perform the [198]pScripts whose [199]pScriptNameIdentifiers are "kScript", "lScript" [ell], "tScript", and "nScript", respectively. The date & info button activates [200]pInfoTool. The calendar button allows you to view Palm's built-in calendar. As an extra bonus, if you pick a date then that date will be copied to the ClipBoard and/or pasted into your currently active editable text field in the form of YYYY/MM/DD [such as "1976/07/04"] If you use the "Today" button in the calendar, then not only today's date will be recorded but a complete date'n'time stamp is copied and/or pasted in form of YYYY/MM/DD HH:MM:SS [such as "1976/07/04 10:09:30"] NOTE. The actual formatting of the date'n'time stamp uses the preferences set in the "Formats" Preference Panel. NOTE. While you are in the calendar, the title of the dialog tells you whether the date'n'time stamp is going to end up copied to the ClipBoard or pasted into your currently active editable text field. The DateTool button or "D" [upper case "D"], brings up [201]pDateTool. The Phone button or "P" [upper case "P"], brings up the phone number lookup command as long as you have a currently focused and editable text field. The ToDoTool button or "T" [upper case "T"], brings up [202]pToDoTool. The btnsCust button brings up the [203]customizable pScriptButtons. On panel #1 btnsCust turns into BtnsCust with upper case "B" which allows you to jump to any page in the [204]customizable pScriptButtons. Namely, use * "B x B" = go to page #x of the customizable pScriptButtons * [205]upButtonSlided "btnsCust" "x" [206]upButtonSlided "btnsCust" = go to page #x of the customizable pScriptButtons * "BtnsCust" "x" "BtnsCust" = go to page #x of the customizable pScriptButtons Here "x" [0 < x < 1000] is a number you enter into the text field at the bottom right corner of the screen. The dual duty power button turns your Palm off when your Palm is on, and turns it on otherwise. NOTE. The power button may not work on all Palm Powered Handheld devices. I was told that one such example is the Visor. In panel #1, the reset button soft-resets your Palm which is the same as if you reset your Palm using a paper clip or equivalent. This is considered a safe procedure which should not harm your data at all [as opposed to a hard-reset which wipes out the contents of all your RAM]. The three buttons between the btnsCust button and the power buttona manage the sound level of your Palm Powered Handheld device. * "-" = rotate the sound level downward [decrease => off => decrease] * "+" = [rotate the sound level upward [increase => off => increase] * "_" [underscore] = turn the sound off NOTE. If you happen to be in the "General" panel of Palm's built-in "Prefs" [Preferences] application, then it may not be a good idea to use LapTopHack to set the sound level since it may not work as you would expect it. I hope you won't mind if I don't go into a lengthy technical discussion why it may not work. If you are a Palm expert, then I am sure the explanation is obvious to you. The copy txt [copy text] button is a double duty button in a sense. If you switch to panel #1, then the qopy txt button becomes the copy all button. If you tap it or activate it with a lower case "q", and if you have a currently focused text field in your form, then it copies the currently selected text, if any, to the ClipBoard. This works even if the text field is not editable such as in [207]DOC files. If activate it by [208]buttonSliding it or with an upper case "Q", or you tap it when it is called copy all, and if you have a currently focused text field in your form, then it copies the entire text, if any, to the ClipBoard. Again, this works even if the text field is not editable such as in [209]DOC files. * "q" = the "copy txt" button = copy the current text selection to the ClipBoard * "Q" = the "copy all" button [panel #1] = the [210]upButtonSlided "copy txt" button = copy the entire text to the ClipBoard NOTE. Please keep in mind that in [211]DOC editors and/or viewers, the current text field holds only a portion of the entire [212]DOC file. If your current form has an "i-Tips" button, then the i-Tips button activates it. This usually brings up some kind of help regarding your current form. On the other hand, if you want help in this [213]LapTopHack ESC form, then either hit the "i-Tips" button in the upper right corner of the screen, or enter "h" to bring up [214]this onboard help. If your Palm OS is at least 3.3, then the paste [paste text] button is a double duty button too. If you switch to panel #1, then the paste button becomes the append button. If you tap it or activate it with a lower case "x", and if you have a currently focused editable text field in your form, then it pastes the contents of the ClipBoard into your current text in the usual way, that is, it either replaces the current text selection or inserts it at the current cursor location. If your Palm OS is at least 3.3, and if you activate it by [215]upButtonSliding it, or with an upper case "X", or you tap it when it is called append, and if you have a currently focused text field in your form, then it appends the currently selected text, if any, to the text ClipBoard. This works even if the text field is not editable such as in [216]DOC files. * "x" = the "paste" button = paste the contents of the ClipBoard into your text * "X" = the "append" button [panel #1] = the [217]upButtonSlided "paste" button = append the current text selection to the ClipBoard NOTE. Of course, you can perform the above pasting job in a myriad ways, and you don't need the power of LapTopHack to do it. On the other hand, on many occasions you may not be able to copy from your current text in any other way but the LapTopHack way. NOTE. If your Palm OS is at most 3.2, then you cannot append to the ClipBoard. NOTE. Of course, appending to the text ClipBoard is just that. Nothing more and nothing less. Do not expect the old text and the new text to be separated in any meaningful way. The peditHack button activates [218]peditHack, whereas the editPad and magiPad buttons activates [219][p]editPad, and [220]magiPad, respectively. If you are a peditor, then these three features are certainly going to be some of the most popular components of your LapTopHack. Typing "M" [upper case "M"] or [221]upButtonSliding the magiPad button brings up a shrunken version of [222]magiPad whose position can be controlled by tapping outside [223]magiPad on your Palm's screen. [224]downButtonSliding the peditHack button brings up [225]pToolSet's pTextTool, if installed [it does not need to be turned on via pToolOn]. [226]downButtonSliding the editPad button brings up [227]pToolSet's pEditTool, if installed [it does not need to be turned on via pToolOn]. [228]downButtonSliding the magiPad button brings up [229]pToolSet's pMagiPad, if installed, which is a more sophisticated version of LapTopHack's magiPad. Typing "s" [lower case "s"] or using the scriptPad button in panel #1, takes you to [230]scriptPad. Typing "S" [upper case "S"] or [231]upButtonSliding the scriptPad button brings up a shrunken version of [232]scriptPad whose position can be controlled by tapping outside [233]scriptPad on your Palm's screen. [234]downButtonSliding the scriptPad button brings up [235]pToolSet's pScriptPad, if installed, which is a more sophisticated version of LapTopHack's scriptPad. The six buttons in a row are some of the most essential components of LapTopHack. Please see [236]here for all the subtle details of the control activation mechanism which can be accessed with the [237]our ctrl activator, "R", "1", "2", and "3" buttons, and by the keys "4", "5", "!", "@", "#", "$", and "%". Typing SPACE", or entering any "arrow" [left, right, up, or down], or [238]upButtonSliding the our ctrl activator button, or tapping the Our pointer button [panel #1] brings up the [239]pPointer [the Palm mouse]. Typing "G" or [240]downButtonSliding the our ctrl activator button brings up the Graffiti area [241]pPointer [the Palm mouse]. The "r" button plays a triple duty role. If the "r" button is invoked either by [242]upButtonSliding it or by entering "R" [upper case "R"], and if you current form has a table in it which has editable text fields, then this command allows you to walk through the text fields one by one and allows you to place the cursor in each of them. In other words, this is the "tableRotator". If the "r" button is invoked either by [243]downButtonSliding it or by entering "F" [upper case "F"], and if you current form has non-table style text fields, then this command allows you to walk through the text fields one by one and allows you to place the cursor in each of them. In other words, this is the "fieldRotator". NOTE. There are many examples of application where these commands are useful. Palm's built-in DateBook is probably the best known among them. Please see [244]here regarding the "&" button which is the gateway to pScripting your Palm by bringing up the pScript entry dialog. NOTE. If you type "Z" [upper case "Z"] instead of "&", then first it turns on the [245]pScriptorial globalMacroMode, and then it brings up a silent version of the pScript entry dialog. The "ESC = \" button allows you to use your ESC character as a regular character. For instance, if you defined "\" as the ESC character, then this button places "\" into the currently focused text field in your current form [if such an object exists]. * ENTER = "ESC" = the ESC character as a regular character NOTE. Did you notice that the "ESC = \" button is surrounded by a bold frame? The bold frame means that it is the default button in the [246]LapTopHack ESC form so that it can be activated by ENTER. NOTE. If you brought up the [247]LapTopHack ESC form with a tap or a stylus stroke instead of typing the ESC character, then the "ESC = \" button acts as the .Cancel button. NOTE. Sometimes you will see that hitting the "ESC = \" button brings up the [248]LapTopHack ESC form one more time. There is a technical explanation for that which boils down to the fact the given application reposts certain events and the Palm OS has no way of determining what your true intentions were. If this happens, just use the "ESC = \" button one more time. Please view this as a "feature" and not as a bug. This happens, for instance, if you are in MemoPad's "ListView" [table of contents]. [249]upButtonSliding the "ESC = \" button brings up [250]pToolSet's pMasterTool as long as your Palm's OS is at least 3.1. However, pToolSet itself will be operational via pMasterTool only if your Palm's OS is at least 3.5 and you have turned it on via pToolOn. Use the .Cancel button to quit the [251]LapTopHack ESC form without taking any further action. The "U" button sets the "auto power off" timer to the number of seconds in the field next to the "U" button as long as the field and its contents satisfy the following conditions. * The field is focused, that is, you manually tapped in it and it has either a blinking cursor in it or else has some text selected in it. This is a safety precaution. * The field contains a number. + If the number is 0 or is at least 65,535 [= 0xFFFF], then the "auto power off" timer is turned off, that is, your Palm will never turn itself off unless the battery is exhausted when your Palm gracelessly dies. Obviously, this is a rather dangerous setting. + If the number is between 0 and 65,535 [= 0xFFFF], then the "auto power off" timer is set to this number interpreted as seconds. * If the field is blank then no action is taken. NOTE. Similarly to setting the sound level, if you happen to be in the "General" panel of Palm's built-in "Prefs" [Preferences] application, then it may not be a good idea to use LapTopHack to set the "auto power off" timer since it may not work as you would expect it. NOTE. If you set the "auto power off" timer to a time which cannot be displayed in the "Auto-off after" popup trigger of the "General" panel of Palm's built-in "Prefs" [Preferences] application, then it will show the default value which, as of December 8, 2000, is 2 minutes. NOTE. If you have a TRGPro, then you may notice that the value of the "auto power off" timer setting is not always preserved after system resets [including crashes]. The same was reported to me about one Visor and one Palm Vx. The latter was also doing this after HotSync jobs. Although I have no idea why this is happening, I don't think you should blame LapTopHack for it since exactly the same happens if you set the value of the timer with other 3rd party utilities. As a matter of fact, some of my fellow Palm developers think of this as a "feature" as opposed to a bug [don't ask me why]. However, newer Palm OSs no longer have this "feature". The advancedMode and expertMode. If you are an expert LapTopHacker then you may prefer if the [252]LapTopHack ESC form did not show up on your Palm's screen when entering it, and if it did its job silently. You can achieve this by entering either "A" [upper case "A"] or "E" [upper case "E"] while you are in the [253]LapTopHack ESC form, or, in short, "ESC A" or "ESC E". This will take you to the advancedMode and expertMode, respectively. If you are in the advancedMode or expertMode, then you can return to the normalMode by entering the [254]LapTopHack ESC form and typing "N" [upper case N], or, in short, "ESC N". NOTE. There is absolutely no difference whatsoever between normalMode, advancedMode, and expertMode except that in the latter two you will not see the [255]LapTopHack ESC form. Whether you see the [256]LapTopHack ESC form or not, it functions exactly the same way. In particular, you can get out of it by typing "." [period]. Of course, if you are in the advancedMode or expertMode, then many of your LapTopHack operations will significantly accelerate since your Palm does not have to waste precious processor time on drawing various graphical user interfaces. NOTE. The only difference between the advancedMode and expertMode is that in the former a small "ESC" reminder label shows up on your Palm's screen while you are in the [257]LapTopHack ESC form whereas the latter is absolutely silent. Therefore, you may want to use the latter only if you are extremely efficient in LapTopHack. However, please read about the "/GZ", "/Gz", "/0x03" and "/0x04" [258]pScriptorial globalMacroMode tokens since they also have almost the same effect as the expertMode. NOTE. If you are outside the [259]LapTopHack ESC form, then normalMode, advancedMode, expertMode, and globalMacroMode may have different effects on your LapTopHack operations. Please see [260]here for an explanation of the effects of these various modes. NOTE. If you are inside the [261]LapTopHack ESC form, and you are in any mode different from normalMode, including globalMacroMode, then after a few seconds of inactivity you are automagically returned to normalMode so that you don't need to panic while trying to figure out whether you are in, say, expertMode or your Palm died. You can also use this trick to turn off the [262]pScriptorial globalMacroMode. NOTE. Before you start to complain about the steep learning curve of LapTopHack, please keep in mind that LapTopHack is fully functional even without using the myriad additional fancy-shmancy features. The Control Activation Mechanism As opposed to the keyboard drivers of Palm Portable KeyBoard [aka PPK or Stowaway or Targus] and GoType!, LapTopHack allows virtually every control structure [buttons, check boxes, and so forth] to be activated via external keyboards, Graffiti, or even via several 3rd party virtual keyboards. In addition, as opposed to the above mentioned keyboard drivers, LapTopHack provides positive visual confirmation of every action taken on such controls. The primary way of activating controls is via our ctrl activator which can be invoked by "ESC o" = "ESC O" [Oh] = "ESC 0" [zero] = our ctrl activator which brings up this form. controlActivator Once you brought up our ctrl activator, type the first few letters of the control you want to activate into the text field which currently displays !enter label here!. It is sufficient to type in those letters which uniquely identify your control. Once you entered the partial name of the control you want to activate, just hit the ;Go button. "ENTER" = ";" = the ";Go" button NOTE. For no particular earth-shaking reason, I chose to allow a maximum of 8 [eight] letters to be processed by our ctrl activator. There will be very few instances when this creates a problem. Had I allowed more letters to be typed into the text field of our ctrl activator, this occasionally might have created a situation when not the entire text is visible [the screen real estate is in short supply]. Of course, you can always change your mind by issuing a "Cancel" order via "," = the ",Cncl" button You can get help with ":" = help In particular, if some controls are obscured by the our ctrl activator form, then you can move it out of the way by using "page down" = "down arrow" = move our ctrl activator downward "page up" = "up arrow" = move our ctrl activator upward If your current form has a default button, then you can activate it by "ENTER" = ";" = the ";Go" button without bothering to enter the partial name of that default button. More precisely, if the text field contains !enter label here! or is empty, then "ENTER" = ";" = the ";Go" button activates the default button. Now let's talk a little more about activating [263]default controls. If you are still in your form and you want to active the default button, then you can use "ESC 1" = "ESC o ENTER" = "ESC O ENTER" [Oh] = "ESC 0 ENTER" [zero] = = default button or "ESC 1" = "ESC o ENTER" = "ESC O ENTER" [Oh] = "ESC 0 ENTER" [zero] = = default button In addition to a default button, your form may also contain a default popup trigger and/or a default selector trigger and/or a default check box and/or a default push button [see [264]here for details]. The first two can be recognized by their bold faced labels [unless you choose not to display them in bold when you set LapTopHack's preferences]. NOTE. There may be more than one bold faced label in your form. If your application creates a bold faced label, LapTopHack does not undo it. If you are still in your form and you want to active the default controls then you can use "ESC 1" = = default button "ESC 2" = = default popup trigger "ESC 3" = default selector trigger "ESC 4" = = default check box "ESC 5" = = default push button [265]This is the onboard summary of the commands you can use in our ctrl activator. An inherent shortcoming of our ctrl activator is that it can only activates controls which have a textual label. In addition, these labels must have uniquely identifiable texts. Alas, the Palm universe is full of controls with graphical labels and with labels which are not unique. An excellent, or some would say horrific, example is Palm's own built-in DateBook. DateBook Had I been consulted by the Palm guys, I would have advised them to use "R" for Thursday and "U" for "Sunday" in the English version of the Palm OS, and would have suggested similar considerations for all other languages. Well, let's not cry over spilled milk. Enter the objectRotator, which can be accessed by "ESC r" = "ESC 5-way navigator select button" = objectRotator if you go to it from your form, and by "r" = "5-way navigator select button" = objectRotator if you are currently in the [266]LapTopHack ESC form already. The concept of the objectRotator is very simple. First, identify your object structure, and then activate it. You can use objectRotator to activate dialog titles [menus], controls such as buttons, push buttons, check boxes, and repeating buttons, and also text fields via keyboard and Graffiti input. They are called "objects". Here are the rules. * "ENTER" = ";" = "v" = 5-way navigator select = activate the highlighted control * "o" [lower case "oh"] = uncheck the highlighted check box if it is checked, and cancel the operation otherwise * "O" [upper case "Oh"] = check the highlighted check box if it is unchecked, and cancel the operation otherwise * "BACKSPACE" = "c" = left arrow = 5-way navigator left = highlight the previous control * "SPACE" = "b" = right arrow = 5-way navigator right = highlight the next control * "d" = "D" = "n" = down arrow = 5-way navigator down = highlight the first "first object" in a row after the current object * "e" = "E" = "l" = "L" = "m" = down arrow = 5-way navigator down = move the rotator to the end [last] position * "f" = "F" = "h" = "H" = "z" = move the rotator to the home [first] position * "u" = "U" = "x" = up arrow = 5-way navigator up = highlight the first "first object" in a row before the current object * "," [comma] = "." [period] = cancel the operation The objectRotator has a full range of transparent speed adjustment commands as well. * "1 ... 9 0" = set the rotator speed to 1 ... 9 10 * "+" = "=" = increase the rotator speed by one unit * "-" = "_" = decrease the rotator speed by one unit [267]This is the onboard summary of the commands you can use in the objectRotator. In addition, if you know what type of control structure you are looking for, then you may want to use the individual object rotators instead of the [268]general object rotator. The individual control rotators work exactly as the objectRotator except that they concentrate on specific control structures only. The buttonRotator looks for regular [269]buttons, the popupListRotator looks for [270]popup lists, the selectorTriggerRotator looks for [271]selector triggers, the checkBoxRotator looks for [272]check boxes, and the pushButtonRotator looks for [273]push buttons. * "ESC !" [above the "1" key] = buttonRotator * "ESC @" [above the "2" key] = popupListRotator * "ESC #" [above the "3" key] = selectorTriggerRotator * "ESC $" [above the "4" key] = checkBoxRotator * "ESC %" [above the "5" key] = pushButtonRotator This is not all! Haven't you noticed that quite a few forms do not have any text input field at all? Some of these are called "Custom Alerts", and a special case is called simply "Alert". Here are a couple of examples. Info Alert separator Warning Alert When LapTopHack is active, you can recognize such a form by the "i-Tip" symbol in the LEFT of the title bar [tap on it for contextual help]. In "Custom Alerts" and "Alerts" you don't have to bother with ESC characters and with the [274]LapTopHack ESC form. Just follow these instructions. * ENTER activates the default [first] button, even if there is a [single-line] text field in it. * Typing the case-blind version of the first letter of a button selects it. Of course, the entire arsenal of [275]LapTopHack ESC is still at your disposal. You may need it if one or more button start with the same letter. In addition, you can bring up the [276]pScripter dialog by entering "&". [277]This is the onboard summary of the commands you can use in "Custom Alerts" and "Alerts". The Menu Activation Mechanism As of version 5.62, LapTopHack allows you to navigate inside menus, and to activate all menu commands via keyboard and Graffiti input. It works transparently and in a natural way. First you bring up the menu using either the dedicated menu key on your external keyboard or by entering "ESC j" or by tapping the jMenu button in your "[278]LapTopHack ESC" form [or by entering "ESC =" if you are in [279]pedit's ListView or EditView]. Second, you pick different pull-down [drop-down] menus by using the left arrow or BACKSPACE or previous field keys and the right arrow or SPACE or next field keys or their Graffiti equivalents. Third, you pick different menu items within a pulled-down [dropped-down] menu by using the up arrow and down arrow keys or their Graffiti equivalents, or by using the pageUp and pageDown keys of your Palm. Fourth, you pick your selected command by entering a carriage return [linefeed] or its Graffiti equivalent, or the letter O [upper case "Oh"] Summary of Commands. * RETURN = O [upper case "Oh"] = select current menu item and activate it * . [period] = exit menus w/o any action [.Cancel] * tap outside the pulled-down [dropped-down] menu's window = exit menus w/o any action [if a menu is visible] * the menu key on your external keyboard = exit menus w/o any action [if a menu is visible] * SPACE = right arrow = next field char = select next menu * BACKSPACE = left arrow = previous field char = select previous menu * pageDown key = down arrow = one menu item down * pageDown key = up arrow = one menu item up * H [upper case - Home, that is, first] = ^ [caret] = select the first menu * L [upper case - Last] = $ [dollar sign] select the last menu * entering any lower case letter of the alphabet selects the next item starting with the same letter in the current menu [the selection is case-blind and wraps] * 1...9 or 0 or A...F [upper case] = select menu item 1...9 or 10 or 11...15 in the current menu * ? = onboard help * / = "cheat-sheet" help * R [upper case] = refresh current menu display [after using the "cheat-sheet"] * I [upper case "i"] = show the selected menu item's ID and append to the ClipBoard "/*menu name*/ /&menu [ID]" [for [280]pScripting] * K [upper case] = klear [clear] the ClipBoard [optionally, prior to starting to use the "I" command which appends to the ClipBoard] NOTE. Although I could have easily implemented the latter "menu item # selection" on all Palms [at the expense of additional code], I decided to do it only if your Palm OS is at least 3.1. If you still use OS 3.0x, then this will be an excellent excuse for you to upgrade. QUESTION. My Palm had a crash while using the menus via an external keyboard. What should I do? ANSWER. Install the latest version of LapTopHack [at least 5.70]. QUESTION. How come that in one of my applications either some or none of the above navigational command work? ANSWER #1. The application substituted Palm's built-in menu mechanism by its own custom code. Please contact the maker of your application and find out if this is the case. By the way, I have yet to see an application where this doesn't work. ANSWER #2. Although I tested LapTopHack's menu activation mechanism on all Palm OSs from 3.0 up to 4.0, I may have missed something. If your Palm OS is under 3.5, then I cannot guarantee that this will work. You may experience some graphical glitches. If you do, the please let [281]me know. However, based on input from dozens of LapTopHackers with a great variety of Palms, it seems that I hit the nail on its head and the menu activation mechanism now works flawlessly. Hence, I suggest that we go back to answer #1. NOTE. George Wyner pointed out this [282]GoType! for PalmOS FAQ page. I'd love to comment on it but I am afraid that if I did, then I would be perceived to be even more arrogant than I actually am. NOTE. LapTopHack also fixes an inherent Palm OS bug which processed all characters entered while the menu was pulled down as if they were entered without the menu being pulled down. This could lead to disasters. Do I need to create scenarios for illustration? However, I must admit that some people consider this bug a "feature". If you are one of those, the please accept my apologies. The pPointer The pPointer [the Palm mouse] is similar to Robert Gasparotto's excellent [283]PointerHack although the actual implementation is completely different. In fact, Robert invented the idea and I got hooked on it after I examined the publicly available source code of PointerHack. I was amazed to see how differently Robert and I approached the same problem. This is yet another proof that there is more than one way to skin a cat [I don't believe that I wrote this - I am a vegetarian and would never hurt a cat]. I am grateful to Robert for his great contribution to the Palm community. In addition, I also appreciate that, after I told Robert about pPointer, he agreed, and, to some extent, even encouraged me to use his idea in LapTopHack, and to improve upon his baby. The point of both pPointer and PointerHack is to allow the user to put up a pointer [similar to an arrow] on the screen of the Palm, to move the pointer to an appropriate location, and then to click at the chosen location to simulate a tap by an actual stylus. * pPointer is activated by typing "ESC SPACE", or by entering "ESC [any] arrow" [left, right, up, down], or by [284]upButtonSliding the our ctrl activator button, or by tapping the Our pointer button [panel #1] in the [285]LapTopHack ESC form. * The Graffiti area pPointer is activated by typing "ESC G" or by [286]downButtonSliding the our ctrl activator button in the [287]LapTopHack ESC form. * "ESC BACKSPACE" starts up pPointer at the default location. * "ESC |" [absolute value sign] starts up pPointer at the current cursor location [if it exists]. The primary commands are as follows. Here "bullseye" means the center of pPointer. * "c" = ENTER = ";" [semi-colon] = 5-way select = simulate a tap at the bullseye * "c" = 5-way select = simulate a tap at the bullseye, and then, if in scroll bar or repeating button, then restart pPointer after tapping * "." [period] = "," [comma] = tap on the display screen = cancel the pPointer operation * "a" [lower case] = toggle on and off the point anchor * "C" [upper case] = screen and "raw" [PenScreenToRaw ()] coordinates of the bullseye * "g" [lower case] = include the Graffiti area under pPointer's jurisdiction * "G" [upper case] = remove the Graffiti area from pPointer's jurisdiction * "K" Kut [cut] current text selection and paste it at the bullseye [if bullseye is inside the text field] * "L" [upper case] = select screenLine around the bullseye - from OS 3.5 only * "L" [upper case] = triple tap - from OS 3.5 only * "q" [lower case] = pPointer test * "S" [upper case] = select text between anchor and the bullseye [if both are inside the text field] * "T" [upper case] = sTroke along the line from the anchor to the bullseye * "W" [upper case] = select word around the bullseye - from OS 3.5 only * "W" [upper case] = double tap - from OS 3.5 only * "X" [upper case] = eXtend current text selection to the bullseye [if bullseye is inside the text field] * "?" = onboard help NOTE. If you have the Graffiti area under pPointer's jurisdiction, that is you see a virtual Graffiti drawn on your screen, then a single tap or single stroke acts as if done in the actual Graffiti area. WARNING. Currently, the word and screenLine selection commands work only if you have a text field at the bullseye. If you use these two commands when the bullseye is over other objects, then the consequences are unpredictable. "W" works by issuing a double-tap at the bullseye, whereas "L" issues a triple-tap at the bullseye. WARNING. Currently, the page or scroll command works only if the bullseye is over a scroll object such as a scrollUpArrow, scrollDownArrow, scrollUpPage [the grey area above the black scrollBar], scrollDownPage [the grey area below the black scrollBar], or scrollBar [the back area]. If you use this command when the bullseye is over other objects, then the consequences are unpredictable. You can usually resolve the situation by tapping in the Graffiti area of your Palm. "C" works by issuing a single tap in a rather trick way since a regular tap would not do the job. Somewhat more precisely but still not accurately, a "tapDown" is followed by a waiting period, and then a "tapUp" follows. By the way, here is the definition of [288]screenLines. NOTE. In case you wonder what "toggling on and off the point anchor" means, try it. Turn it on, move the pPointer a couple of times, and then turn it off again. You will understand it immediately. NOTE. While the Graffiti area is included into the pPointer's jurisdiction, not all pPointer commands are operational since only those work which make sense. For instance, the text and scrolling operations are disabled. pPointer has a full range of transparent navigational and speed adjustment commands. 1 ... 9 0 = set the pPointer speed to 1 ... 9 10 "+" = "=" = increase pPointer speed by 1 "-" = "_" [underscore] = decrease pPointer speed by 1 "*" = double pPointer speed "/" = halve pPointer speed "f" [lower case] = set pPointer speed to fast "n" [lower case] = set pPointer speed to normal "s" [lower case] = set pPointer speed to slow "v" [lower case] = set pPointer speed to very slow "x" [lower case] = set pPointer speed to extra fast NOTE. pPointer remembers its last position and speed unless you reset your Palm between two invocations of pPointer. QUESTION. How come that in some applications such as NotePad, I can't make the "sTroke" command "T" work as I would like to? ANSWER. In the Palm universe, there is no unique definition of what a stroke means. pPointer defines it as a "tapDown" at the anchor and then a full "tap" at the bullseye. QUESTION. When is the "sTroke" command "T" useful? ANSWER. You tell me. More precisely, please join the [289]peditors Forum, and then please post your ingenious discoveries to [290]here. For instance, you can use the "sTroke" command to create perfectly positioned rectangles and circles in TealPaint. QUESTION. What is the best way to use pPointer in the Graffiti and adjacent areas? ANSWER. I suggest using it for taps, double-taps, tripple-taps, and pen strokes, especially in conjunction with the myriad HackMaster extensions which can be activated by a myriad combinations of such actions. In addition, if you have nothing else to do, then you can also use the pPointer "sTroke" command to create certain letters via Graffiti. If you have FitalyStamp, then you can put up quite a show which will freak out even veteran Palm users. NOTE. If your Palm appears to be frozen after a pPointer operation, then it may only be hibernating, that is, it suspended all operations entirely and it is waiting for a "tapUp", and then a simple tap will wake it up. [291]This is the onboard summary of the commands you can use in pPointer. KeyBoard Shortcuts NOTE. This feature is in the process of fine tuning so that the details and the mechanism may change as I get more input from out LapTopHackers and peditors. Stay tuned... If you have one of those foldable-portable keyboards made by [292]Think Outside, Inc., and marketed under various names such as Palm Portable KeyBoard [PPK], Stowaway, and Targus, then you can use the Ctrl-Fn keys in conjunction with other keys to access quickly some of LapTopHack's features. In addition, this feature works also with any other external keyboard in virtual Palm resident keyboard capable of producing Ctrl-Fn signals, that is "controlKeyMask" and "optionKeyMask" In what follows, the Ctrl-Fn keys need be pressed simultaneously with the key under consideration. First, please see [293]here for the details about activating [294]pScripts with any of the number keys 0 [zero] through 9 [nine] pressed simultaneously with Ctrl-Fn. Experimentally, you can use the following shortcuts. Ctrl-Fn-SPACE [NOT SPACEBAR!!!] = the [295]pPointer at the last location Ctrl-Fn-BACKSPACE = the [296]pPointer at the default location Ctrl-Fn-| [absolute value] = the [297]pPointer at the current cursor location [if exists] Ctrl-Fn-b [lower case "b"] = the [298]default button Ctrl-Fn-B [upper case "B"] = the [299]buttonRotator Ctrl-Fn-e [lower case "e"] = [300]peditHack Ctrl-Fn-E [upper case "E"] = [301][p]editPad Ctrl-Fn-f [lower case "f"] = [302]fieldRotator Ctrl-Fn-h [lower case "h"] = the [303]default check box Ctrl-Fn-H [upper case "H"] = the [304]checkBoxRotator Ctrl-Fn-k [lower case "k"] = the [305]kursorRotator Ctrl-Fn-K [upper case "K"] = the [306]Kustomizable pScriptButtons Ctrl-Fn-l [lower case "ell"] = the [307]default popup list [including category lists] Ctrl-Fn-L [upper case "L"] = the [308]popupListRotator Ctrl-Fn-m [lower case "m"] = [309]magiPad Ctrl-Fn-M [upper case "M"] = [310]scriptPad Ctrl-Fn-o [lower case "o"] = [311]our ctrl activator Ctrl-Fn-p [lower case "p"] = the [312]default push button Ctrl-Fn-P [upper case "P"] = the [313]pushButtonRotator Ctrl-Fn-r [lower case "r"] = [314]objectRotator Ctrl-Fn-s [lower case "s"] = the [315]default selector trigger Ctrl-Fn-S [upper case "S"] = the [316]selectorTriggerRotator Ctrl-Fn-? = onboard help for the KeyBoard ShortCuts QUESTION. Why only PPK and not GoType!? ANSWER. I studied both keyboard drivers very carefully, and came to the conclusion that the GoType! driver is incapable of supporting the above features. Maybe you could approach the GoType! people and request that they upgrade their driver. [317]This is the onboard summary of the commands you can use as KeyBoard Shortcuts. Graffiti Area Hot Spots NOTE. This feature is in the process of fine tuning so that the details and the mechanism may change as I get more input from out LapTopHackers and peditors. Stay tuned... First, the expression [318]Graffiti area below refers to everything what you see under the screen, including the four SilkScreen buttons on the two sides and the large rectangle used for Graffiti input. Second, in order to be functional, the Graffiti area hot spots feature needs to be turned on. You accomplish this by checking the appropriate box in the second page of the [319]LapTopHack Preferences dialog [use the "more" button to get to the second page]. Third, this feature can be as simple as you wish and it can be made as sophisticated as you are ever likely to see in the Palm universe. Hence, both "newbies" and veteran "experts" will benefit from it. If you are a "newbie", just turn the hot spot feature on, read about the "deafault" actions below, and don't worry about the details. LapTophack will automaticaly do the rest for you. Fourth, a little practice combined with perseverance will teach you the correct way to do the taps and pen-strokes below. If you use FitalyStamp, then please read [320]this. There are five "regular" hot spots which are subject to the following rules. * Tap firmly on the very right edge in the top third of your Palm's Graffiti area, just to the right from the "CALC" SilkScreen button. If you do it corrrectly, the tap brings up the [321]LapTopHack ESC form [default action] UNLESS you have a [322]pScript whose [323]pScriptNameIdentifier is trTapScript ["tr" stands for "top right"]. In the latter case, the corresponding pScript will be performed instead of the default action associated with this hot spot. EXAMPLE. {trTapScript::/&mess[@@TopRight@@,,]} * Tap firmly on the very right edge in the middle third of your Palm's Graffiti area, just to the right from [and between] the "CALC" and "FIND" SilkScreen buttons If you do it corrrectly, the tap brings up [324]pToolSet's pMasterTool as long as your Palm's OS is at least 3.1 [default action] UNLESS you have a [325]pScript whose [326]pScriptNameIdentifier is mrTapScript ["mr" stands for "middle right"]. In the latter case, the corresponding pScript will be performed instead of the default action associated with this hot spot. EXAMPLE. {mrTapScript::/&mess[@@MiddleRight@@,,]} NOTE. pToolSet itself will be operational via pMasterTool only if your Palm's OS is at least 3.5 and you have turned it on via pToolOn. * Tap firmly on the very right edge in the bottom third of your Palm's Graffiti area, just to the right from the "FIND" SilkScreen button. If you do it corrrectly, the tap brings up [327]magiPad [default action] UNLESS you have a [328]pScript whose [329]pScriptNameIdentifier is brTapScript ["br" stands for "bottom right"]. In the latter case, the corresponding pScript will be performed instead of the default action associated with this hot spot. EXAMPLE. {brTapScript::/&mess[@@BottomRight@@,,]} * The very left edge in the top third of your Palm's Graffiti area is not a "regular" hot spot [see [330]here for an explanation]. * Tap firmly on the very left edge in the middle third of your Palm's Graffiti area, just to the left from [and between] the "MENU" and "HOME" SilkScreen buttons. If you do it corrrectly, the tap brings up [331]pInfoTool [default action] UNLESS you have a [332]pScript whose [333]pScriptNameIdentifier is mlTapScript ["ml" stands for "middle left"]. In the latter case, the corresponding pScript will be performed instead of the default action associated with this hot spot. EXAMPLE. {mlTapScript::/&mess[@@MiddleLeft@@,,]} * Tap firmly on the very left edge in the bottom third of your Palm's Graffiti area, just to the left from the "MENU" SilkScreen button. If you do it corrrectly, the tap brings up the [334]calendar [default action, browse the calendar and then add picked date to the ClipBoard] UNLESS you have a [335]pScript whose [336]pScriptNameIdentifier is blTapScript ["bl" stands for "bottom left"]. In the latter case, the corresponding pScript will be performed instead of the default action associated with this hot spot. EXAMPLE. {blTapScript::/&mess[@@BottomLeft@@,,]} NOTE. This hot spot feature has been disabled on the HandSpring variety of Palm handhelds so that it would not interfere with contrast adjustment. NOTE. In addition to the above five "regular" hot spots, LapTophack has another set of "extended" hot spots consisting of eleven more hot spots. However, the latter are still under construction and you will not be able to use them unless you reverse engineer LapTophack [which is a criminal act unless done with my prior consent]. Brightness and Contrast Adjustment LapTopHack transparently patches your Palm's [or, should I say, Palms'] brightness and contrast adjustment dialogs. It is a no-brainer. Just use the arrow keys on your keyboard to move the slider, and type "d", "D", or "ENTER" to activate the Done button. In addition, ? = tap on LEFT "i" label in the title bar = onboard help in System Adjustments This feature works with the HandSpring variety of the Palm handhelds as well. NOTE. Not all Palms have brightness or contrast adjustment dialogs. [337]This is the onboard summary of the commands you can use in the brightness and contrast adjustment dialogs. The Category Editor This is the Category Editor form. Category Editor These are the commands you can use in the Category Editor form. You can initiate action by "ENTER"= "o" = "O" = the "OK" button "n" = "N" = the "New" button "r" = "R" = the "Rename" button ";" = the ";Delete" button "i" = "I" = the Category Editor "Tips" "?" = "h" = "H" = tap on "LapTopHack" label = onboard LapTopHack help in the Category Editor and you can navigate by "SPACE" = "next field char" = "down arrow" = select next item "BACKSPACE" = "previous field char" = "up arrow" = select previous item "1 ... 9 0 a ... e [A ... E]" = select 1st ... 9th 10th 11th ... 15th item "pageUp key" = "left arrow" = scroll up the list "pageDown key" = "right arrow" = scroll down the list [338]This is the onboard summary of the commands you can use in the Category Editor form. The Date Selector This is the Date Selector form. Date Selector These are the commands you can use in the Date Selector form. "SPACE" = "up arrow" = next year "v" = tap on "v" = 5 years forward "x" = tap on "x" = 10 years forward "l" [lower case "ell"] = 50 years forward "e" = "$" = last year [2031] "BACKSPACE" = "down arrow" = previous year "V" = tap on "V" = 5 years backward "X" = tap on "X" = 10 years backward "L" = 50 years backward "b" = "^" = first year [1904] "page down" = "right arrow" = next month "page up" = "left arrow" = previous month "1 2" ... "9" = January February ... September "o" [oh] or "0" [zero] = October "n" = November "d" = December and "g" = "G" = go to selected day [whether it is visible or not] "h" = "H" = tap on the "LapTopH" label = help in the "Date Selector" "m" = "M" = tap on the "M" label = [339]dateMaster "s" = "S" = tap on the day initials ["S M T ..."] = [340]day selector "y" = "Y" = tap on "YEAR" [such as "2000"] label = [341]year selector "ENTER" = "c" = "C" = the "Cancel" button "t" = "T" = the "Today" button = the "This week" button = the "This month" button [342]This is the onboard summary of the commands you can use in the Date Selector form. The Day Selector This is the Day Selector form. Day Selector These are the commands you can use in the Day Selector form. "ENTER" = "g" = "G" = ";" = the "Go to day" button [goes to the chosen day in the currently visible month and year] "c" = "C" = "," = the ".Cancel" button "?" = "h" = "H" = help in the "Day Selector" Day selection rules. * The number you enter should be 1 ... 31. * If the number you entered is equal to 0, then "Go to day" picks the first day of the current month. * If the number you entered is greater than the number of days in the current month, then "Go to day" picks the last day of the current month. * If the number field is blank or contains a question mark '?' then "Go to day" is the same as ".Cancel". [343]This is the onboard summary of the commands you can use in the Day Selector form. The Year Selector This is the Year Selector form. Year Selector These are the commands you can use in the Year Selector form. "ENTER" = "g" = "G" = ";" = the "Go to year" button "c" = "C" = "," = the ".Cancel" button "?" = "h" = "H" = help in the "Year Selector" Year selection rules. * If the number entry field is blank, then "Go to year" picks the current year. * If the number you entered is less than 32, then "Go to year" picks year which is 2000 + number. * If the number you entered is greater than 31 but less than 100, then "Go to year" picks year which is 1900 + number. * If the number you entered is greater than 99 but less than 1904, then "Go to year" picks the first year which is 1904. * If the number you entered is greater than 2031, then "Go to year" picks the last year which is 2031. [344]This is the onboard summary of the commands you can use in the Year Selector form. dateMaster This is the dateMaster form. dateMaster NOTE. dateMaster always starts up with the currently selected date in the [345]Date Selector form. This should make dateMaster a practical date calculator. These are the commands you can use in the dateMaster form. "-" = the "- BACKWARD" push button "t" = "T" = the "THIS" push button "+" = the "+ FORWARD" push button "ENTER" = "p" = the "PickIt" button = pick the date entered into the currently focused field and exit the "Date Selector" "s" = the "ShowIt" button = show the date entered into the currently focused field without exiting the "Date Selector" "?" = the "?Help" button = Help in dateMaster "." = the ".Cancel" button "a" ... "h" = "A" ... "H" = focus on the corresponding field and select the text in it "SPACE" = "page down" = "down arrow" focus on the next field and select the text in it "page up" = "up arrow" focus on the previous field and select the text in it In addition, you can use the following [346]pScript friendly shortcuts [all are upper cased]. "P" = paste from the ClipBoard to the currently focused text field [a [347]pScript friendly operation] "Q" = qopy [copy] selected text from the currently focused text field to the ClipBoard [a [348]pScript friendly operation] "S" = select all text in the currently focused text field [a [349]pScript friendly operation] "U" = undo the last editing operation in the currently focused text field [a [350]pScript friendly operation] "X" = cut the text selection in the currently focused text field [a [351]pScript friendly operation] Rules for "year/month/day" parsing. * YYYY/MM/DD = year/month/day where the year is 0 to 4 digits, the month and the day are 0 to 2 digits. * If the year has no digits, that is, the date starts with "/", then the year is set to the current year. * If the year is less than 32, then the year is set to 2000 + year. * If the year is greater than 31 but less than 100, then the year is set to 1900 + year. * If the year is greater than 99 but less than 1904, then the year is set to 1904. * If the year is greater than 2031, then the year is set to 2031. EXAMPLE. "/7/14" is "2001/7/14" [or whatever the current year is]. * If the month or the day are equal to 0, then they are set to 1. * If the month has no digits, that is, the date starts with "year//" or the date is equal to "year/", then the month is set to the current month. * If the month is greater than 12, then the month is set to 12. * If the day has no digits, that is the date is with "year/month/", then the day is set to the current day. * If the day is greater than the number of days in the chosen year/month, then the day is set to the last day in the chosen year/month. EXAMPLE. "/" = today EXAMPLE. "1948" = "1948/" = "1948//" = the current month and day in 1948 Rules for "year/week" parsing. * YYYY/WW = year/week where the year is 0 to 4 digits, the week is 0 to 2 digits. * If the year has no digits, that is, the date starts with "/", then the year is set to the current year. * If the year is less than 32, then the year is set to 2000 + year. * If the year is greater than 31 but less than 100, then the year is set to 1900 + year. * If the year is greater than 99 but less than 1904, then the year is set to 1904. * If the year is greater than 2031, then the year is set to 2031. * The week should be 1 ... 54. * If the week is equal to 0, then the day is set to the first day of the year. * If the week has no digits, that is, the date is equal to "year/", then the day is set to the first day of the year. * If the week is greater than the number of weeks in the chosen year, then the day is set to the last day of the chosen year. * If the week is a valid week of the chosen year, then the day is set to the first day of the week in the chosen year. Rules for "year/day" parsing. * YYYY/DDD = year/week where the year is 0 to 4 digits, the day is 0 to 3 digits. * If the year has no digits, that is, the date starts with "/", then the year is set to the current year. * If the year is less than 32, then the year is set to 2000 + year. * If the year is greater than 31 but less than 100, then the year is set to 1900 + year. * If the year is greater than 99 but less than 1904, then the year is set to 1904. * If the year is greater than 2031, then the year is set to 2031. * The day should be 1 ... 365 [366]. * If the day is equal to 0, then the day is set to the first day of the year. * If the day has no digits, that is, the date is equal to "year/", then the day is set to the first day of the year. * If the day is greater than the number of days in the chosen year, then the day is set to the last day of the chosen year. Rules for "day of this month" parsing. * DD = day where the day is 0 to 2 digits. * The day should be 1 ... 31. * If the day is equal to 0, then the day is set to the first day of the currently visible month. * If the day is greater than the number of days in the currently visible month, then the day is set to the last day of the currently visible month. Rules for "week of this month" parsing. * WW = week where the week is 0 to 1 digits. * The week should be 1 ... 6. * If the week is equal to 0, then day is set to the first day of the currently visible month. * If the week is greater than the number of weeks in the currently visible month, then the day is set to the last day of the currently visible month. * If the week is a valid week of the currently visible month, then the day is set to the first day of the week in the currently visible month. Rules for "day of this year" parsing. * DD = day where the day is 0 to 3 digits. * The day should be 1 ... 365 [366]. * If the day is equal to 0, then the day is set to the first day of the currently visible year. * If the day is greater than the number of days in the currently visible year, then the day is set to the last day of the currently visible year. Rules for "week of this year" parsing. * WW = week where the week is 0 to 2 digits. * The week should be 1 ... 54. * If the week is equal to 0, then day is set to the first day of the currently visible year. * If the week is greater than the number of weeks in the currently visible year, then the day is set to the last day of the currently visible year. * If the week is a valid week of the currently visible year, then the day is set to the first day of the week in the currently visible year. Rules for "month of this year" parsing. * MM = month where the month is 0 to 2 digits. * The month should be 1 ... 12. * If the month is equal to 0, then day is set to the first day of the currently visible year. * If the month is greater than 12, then the day is set to the last day of the currently visible year. * If the month is a valid month of the currently visible year, then the day is set to the first day of the month in the currently visible year. Rules for "days|months|weeks backward|forward" parsing. * DDDDD = day where the day is 0 to 5 digits. * WWWWW = week where the week is 0 to 5 digits. * MMMM = month where the month is 0 to 4 digits. * The chosen number in the appropriate unit is subtracted|added from|to the currently selected date. * If the resulting date is prior to the Palm big-bang date, then the date is set to the Palm big-bang date which is January 1, 1904. * If the resulting date is after the Palm bye-bye date, then the date is set to the Palm bye-bye date which is December 31, 2031. [352]This is the onboard summary of the commands you can use in the dateMaster form. Date & Info [aka pInfoTool] This is the date & info [aka pInfoTool] which you get pInfoTool when you enter the command "ESC d" = "date & info" NOTE. A pen stroke from the bottom left corner of the Graffiti area to the top right corner of the screen brings up pInfoTool. * Don't forget to explore pInfoTool's menu commands. * In particular... + The Calendar command allows you to browse your Palm Powered handheld's built-in calendar. Unless you quit via the "Cancel" button, the picked day's datestamp will be placed onto the ClipBoard. If you pick today, then the datestamp includes the current time too as in "2002/07/15 10:11:27" [date'n'time], whereas otherwise it consists of the date only as in "2002/07/15". The datestamp uses the preferences set in the "Formats" Preference Panel. + The Palm Preferences... command in the Actions menu allows you either to launch the built-in Preferences application or to visit the associated preference panels without quitting your current application. + The Feature Numbers... command in the Misc menu gives you numerous pieces of information regarding the currently defined feature numbers. It tells you the the creator of the given feature number, the feature number itself, and the associated value. This is very useful for "experts" such as developers whereas it is totally irrelevant for the rest of us. NOTE. You can search and copy the displayed information. + The Open DataBases... command in the Misc menu gives you numerous pieces of information about all the databases which are currently open. It tells you the name, the type, and