Keyman

Ein kleiner aber mächtiger Tasten Manager für den HP49G(+)

Keyman erstellt Modus-sensitive Tastenbelegungen. Kann in jedem Port gespeichert und wie üblich aktiviert werden. Nebst shifthold (Festhalten einer Shifttaste während eine andere gedrückt wird) unterstützt Keyman zwei weitere Tastenfunktionen, den  Doppelklick wie auf einer PC-Maus, und den longhold (länger gehaltene Taste). Damit können Tastenbelegungen gemacht werden ohne die Standard-Funktionen der Keys zu stören. Anbindungen an entbehrliche shifthold Tasten oder solchen, die entweder im Defaultmodus oder im Editmodus entbehrlich sind, sollten bevorzugt werden. Mit shifthold und longhold können über 100 Tastenbelegungen im USR mode existieren ohne Konflikt mit Standard-Funktionen der Tasten, wie dies durch optionale Tastenbelegungen in More verdeutlicht wird. Dies muß natürlich mit mehr Umsicht bei Tastenausführungen bezahlt werden. Wir empfehlen, verwandte Funktionen an dieselbe Grundtaste zu binden, sozusagen in Clustern, ähnlich wie in den Beispielen 3 und 4 unten.

Wichtig: Keyman ist für den HP49 (ROM 19-6 oder höher) und KeymanPlus für den HP49+ (ROM 1.23). Eine globale Variable lht (long hold time) muß nicht mehr existieren. Ist sie vorhanden, operiert longhold in Keyman mit dem Default-Wert 100 in Keyman+ mit 1200.  Sollte dies nicht befriedigen, versuche man mit einem ähnlichen Wert in lht. Ein höherer Wert erhöht, ein niedriger Wert erniedrigt die longhold Zeit, in Keyman+ auch die Doppel-click Toleranz. 


Was ist neu?

Version 5.2004. Bug in K&SA von Keyman+ beseitigt. Auch Keyman updated. Beide haben jetzt dieselbe Versionsnummer.

Version 4.2004 nur Keyman+. Doppel-click verbessert. A?D und RclK behandelt auch die geschifteten ALPHA und ON Tasten.

Version  3.2004 nur Keyman+. Diese deutsche Fassung von Keyman.htm hinzugefügt. Optionale Anbindung an etwas vereinfacht.

Version  2.2004 nur Keyman+.  Macht lht für eine longhold Option entbehrlich (wählt den Default Wert 1200 falls lht nicht gefunden wird). Die Tastenbelegungen o 0..3 in More sind jetzt komfortabler, siehe Anhang.

Version 1.2004 nur Keyman+. Die optionale Tastenanbindung in More, o 0..3, schließt auch Port3 (SD-Karte) ein. Jede der numerischen Tasten 0, 1, 2, 3 setzt den entsprechenden Port Browser falls die Taste länger gehalten wird.

Version 8.2003.  Die longhold Zeitspanne kann nun durch eine optional globale Variable lht verändert werden, siehe unter IfL. KeymanPlus für den HP49G+ hinzugefügt.

Version 7.2003. Reorganisation des Browsers More, der in Option Assigned? nun alle Tastenkodes auflisted,  für die eine User Belegung existiert. OVER Befehl zu den empfohlenen Anbindungen in More hinzugefügt. Führen des Cursors auf ein Bild liefert zusätzliche Information.

Version 6.2003.  Aus Sicherheitsgründen sucht der Browser Keymap aus More nur in Ports.

Version 4.2003. In More/KeyAssignments wurden Anbindungen an die Keys 0, 1 und 2 hinzugefügt, die unmittelbar den entsprechenden Port setzen.

Version 3.2003.  ASMTs umbenannt zu More. Dieser Browser enthält nebst Tastenanbindungen zusätzliche Tools, einen Key Recorder eingeschlossen.

Version 1.2003.  Die Belegung auf ist nun ein Repeater. Wenn länger gehalten wird, fährt man in Richtung HOME, aber man kann unterwegs stoppen.

Wichtig: Wer den Doppel-Click aus Keyman Versionen älter als 7.2001 nutzt,  muß in solchen Anbindungen ROMPTR 4B0 7 in ROMPTR 4B0 C umbenennen  (neue Lokation des Doppel-Click Detektors). Leicht ausgeführt mit OT49.


Abkürzungen: LS = Linksshift, RS = Rechtsshift, LS_ = LS gehalten, RS_ = RS gehalten, d.h. der Shift-Key ist festzuhalten wenn eine andere Taste gedrückt wird. o = Longhold, = Linkspfeil Taste. Ähnliche Symbole bezeichnen die anderen Pfeiltasten. Hier die detaillierte Beschreibung der 8 Befehle von Keyman. 

IfD Benötigt 2 Argumente, beliebige Objekte O2 and O1 in Level 2 und Level 1. Setzt ein Programm auf dem Stack welches, einer Taste zugewiesen, O2 ausführt wenn die Taste doppelt geklickt wurde, sonst O1, siehe Beispiel 1. Der Output von IfD muß vor Anbindung mit TO?  behandelt werden, siehe TO?. Ausführung ist etwas verzögert, weil Doppelklick Detektion etwa 0.3_s dauert. In Version 4.2004 ist die Doppelklick-Toleranz justierbar durch lht.

Neu seit  Version 6.2001. Anstelle der Standardbelegung einer Taste für O2 oder O1, kann man auch dessen Tastenkode nehmen, d.h. eine reelle Zahl der Form rc.p (r=Zeile, c=Spalte, p=Ebene). rc.p wird automatisch ersetzt durch die entsprechende Standardbelegung. Das kann auch eine shifthold Taste sein. Eine nicht als Tastenkode identifizierte reelle Zahl (etwa 1) beept, siehe Beispiel 5. Die Objekte O1 und O2 können auch Tastenrecords sein, generiert durch RecordKeys aus More. Alles was hier gesagt wurde, gilt ebenso für die anderen If-Optionen.

IfL Benötigt zwei Argumente, beliebige Objekte O2 und O1 in den Levels 2 and 1. Generiert ein Programm welches, einer Taste zugewiesen, O2 ausführt wenn die Taste länger als normal gedrückt wird, andernfalls O1. Sie werden schnell ein Gefühl dafür bekommen was "länger gedrückt" (longhold) meint. Am besten sollte man mit dem Befehl A?D oder einigen Beispielen aus dem Anhang üben. IfL oder IfD können auch genutzt werden für Information über eine Keybelegung falls man sich daran nicht erinnert.

Neu seit Version 8.2003. Wenn Ihnen die default longhold  Zeit nicht zusagt, erzeugen Sie eine globale Variable namens lht in HOME mit einer zint oder reellen Zahl darin. 50 entspricht der kleinsten sinnvollen longhold Zeit (für langsame Emulatoren und dem 49). Die default lonhold Zeit ohne lht ist 50 für den 49 und 1200 für den 49+. Die Skala ist offen and erlaubt ein optimales Feintuning.

IfE?P umfaßt IfE ("IfEdit") und IfP ("IfPRG"). IfE?P hat zwei Argumente, beliebige Objects O2 und O1 in Level 2 and 1. Normal gedrückt setzt IfE?P ein Programm in den Stack welches, wenn einer Taste zugewiesen, O2 auswertet wenn die Taste im Editmodus gedruckt wird (d.h wenn eine Befehlszeile existiert) und O1 sonst. Mit anderen Worten, diese Taste führt aus  « Wenn in Editmodus dann O2, sonst O1 ». UsrRPL-Begrenzer sind hier für die Beschreibung etwas mißbraucht worden um die Dinge klarer zu machen. Das Programm selbst kann nicht in UsrRPL geschrieben werden. Dieses Aufgaben-Splitting ist unerläßlich für Belegungen der Pfeiltasten, die ihre Cursor Bewegungs-Funktion im Editmodus natürlich behalten sollen. Dasselbe gilt für RS APPS, eine per Default nur im Editmodus aktive Taste. In diesen und anderen Fällen ist O2 gewöhnlich die Standardbelegung dieser Taste (auf den Stack gestellt mit K&SA) oder einfach deren Tastenkode. Drückt man IfE?P etwas länger, wird ein Programm erheugt, das, einer Taste zugewiesen, im PRG Modus O2 ausführt, sonst O1. Was gewählt wurde, IfE oder IfP, ist im Display angezeigt. Im IfP-Fall sollte O2 nicht vom User gemacht sein - die Taste würde beepen. Zeichenketten, Befehle und einige andere Objekte werden in die Befehlszeile geschrieben. Achtung: Wurde eine Belegung mit IfP gemacht und wird diese im Editmodus ohne PRG-Indikator gedrückt, wird O1, nicht O2 ausgeführt, möglicherweise außerhalb der Befehlszeile. Seien Sie daher vorsichtig in der Wahl von IfE oder IfP. Der Output von IfE?P muß möglicherweise mit TO? behandelt werden.
TO? Macht ein sogenanntes TakeOver Programm aus einem Objekt. das gewöhnlich wie das Ausgangsobjekt aussieht. Ohne dieses TakeOver würde ein Programm im Editmodus nur beepen. Das TakeOver ist sichbar nur wenn Flag -85 gesetzt ist und extable geladen wurde. In einer Schachtelung der obigen If-Optionen muß nur das letzte (das anzubindende Program, nicht dessen innere Teile) mit TO? behandelt werden um in allen Moden aktiv zu sein. 
Drückt man TO? etwas länger, wird ein "α-off" Befehl addiert (um den Alpha-Modus), kein TakeOver. Nützlich für Tastenanbindungen in Alpha-Ebenen die auf Setzen eines Menüs abzielen aber nicht auf das Setzen des Alpha-Modus.
A?D Etwas anbinden oder losbinden von einer Taste. Wenn normal gedrückt, wartet A?D auf einen Tastedruck um das Objekt aus Level 1 an diese Taste anzubinden. Wenn länger gedrückt, warted A?D auf eine Taste um sie Belegung zu eliminieren. Es wird immer angezeigt, welche Option gewählt wurde. Wird A?D unabsichtlich zu kurz gedrückt, antworte man mit CANCEL. Diese Anbindung an CANCEL mit RclK hervorholen oder eliminieren. Achtung: A?D bindet nichts an die Shiftholds von Alpha und ON an. Diese Shiftholds werden vom Betriebssystem ignoriert so daß Belegungen hier verschenktes RAM wären.
RclK Holt die Belegung einer Taste in den Stack.(wenn sie existiert). Das kann auch eine Shifthold-Taste sein. Sowohl RclK als auch A?D sind keine RPN-Befehle. Hier ist es bequemer, erst die Operation und dann das Argument aufzurufen.
K&SA Holt den Tastenkode einer Taste zusammen mit ihrer Standardfunktion in den Stack, die wiederum gebraucht werden kann um eine Belegung mit den If-Optionen zu erstellen. Diese mächtige Option erkennt auch shifthold Tasten. Type und Typename des Tastenobjekts werden angezeigt.Code is the content of More Was nicht geschiftete Menutasten betrifft, so werden globale Namen einfach zitiert während ein Libname (oder Rompointer) zusammen mit seinem Inhalt aufgerufen wird. An dem angezeigten Typnamen wird ein Sternchen gehängt umd anzuzeigen, daß der Typname sich auf den Inhalt bezieht.. Die Screen zeigt K&SA angewendet auf More. Sie erzählt uns daß More ein Code Objekt speichert, und ein solches hat den Typ 25. Außerdem wird der Tastenkode 12.1 von More im Stack ausgegeben. Die meisten Tasten tragen Libnamen. Wenn zum Beispiel SIN nach K&SA gedrückt wurde, sehen wir SIN in zwei Levels. Level 2 ist der Libname aber auf Level 1 ist die Funktion SIN. Beide Namen sind dieselben in diesem Falle aber unterscheiden sich in anderen Fällen. Es macht einen Unterschied, ob ein Libname oder sein Inhalt als Argument O2 für IfE?P dient. Im PRG Modus wird ein Libname in die Befehlszeile geschrieben, während eine Funktion sofort ausgeführt wird, möglicherweise außerhalb des Editors. K&SA muß an einen Key gebunden werden um Ausführbarkeit in allen Moden zu sichern, siehe Beispiel 2 unten. 
More Öffnet einen Browser mit 5 Auswahlen (Screen links) von denen die beiden letzten selbst Browser sind. Die letzte Option setzt eine Auswahl nützlicher, im Anhang beschriebene Belegungen. Diese illustrieren die Kraft der If-Optionen. Man probiere einfach einige dieser Belegungen aus und streiche diejenigen, welche einem nicht zusagen, was sehr einfach mit longhold A?D gemacht werden kann..

Hier die Erklärungen der letzten 4 Optionen im Browser links. Für die letzte konsultiere man den Anhang. 

Assigned Zeigt die Liste aller vom User belegten Tasten. Dieser kann sich also stets eine Übersicht über die globale Belegungs-Situation machen. 
PackUKeys Wenn einige Belegungen gestrichen wurden, enthält die versteckte Liste UserKeys eine Menge von Redundanzen. Dies ist auch der Fall wenn eine Taste mit der leeren Liste belegt wird. Dies wird vom Betriebssystem ignoriert, aber man verliert 32 Bytes.  Das verschwundene RAM wird zurückgewonnen (sogar mehr als 500 Bytes) wenn PackUKeys von Zeit zu Zeit ausgeführt wird.
RecordKeys Ein mächtiger Tasten-Recorder um eine Tasten-Sequenz für eine spätere Ausführung zu speichern. Ein Record dieser Art kann nur mit CANCEL beendet werden und kann höchstens 15 Tastendrücke enthalten. Es gibt einen Tasten Counter in der Headline, welche die Anzahl der Tastendrücke protokolliert.
Beispiel: Man drücke RecordKeys. Dies zeigt REC 0 in der Headline. Dann drücke man die Tastensequenz [MODE][F1][CANCEL].Dies hinterläßt ein Programm auf dem Stack welches den Flag Browser in nur einem Tastendruck setzt. Ein Record kann direkt ausgeführt werden aber kann auch als Argument in den If-Optionen Verwendung finden wie in Beispiel 8.
Wichtig: Wie man an diesem Beispiel sieht, aktiviert RecordKeys auch Tasten, die nur in abgeschlossenen Umgebungen gültig sind (im Beispiel Taste F1 im  MODE Browser). Solcher Luxus kann mit dem Befehl KEYEVAL nicht erreicht werden.
Keymap Box Für diejenigen, die alternative Tastenbelegungen lieben. Man eine Tastenliste für Physics haben (Phys.K sagen wir), eine andere fürs Ingenierwesen, etc. RCLKEYS und STOKEYS sind zu langsam für die die Erstellung solcher Tastenlisten, Keymap Box setzt eine Keyliste augenblicklich. Am Begin enthält sie nur die Option GetUKeys (holt die aktuelle UserKeys Liste in den Stack). Führt man GetUkeys aus nachdem  einige Belegungen produziert wurden, ergibt eine Liste auf den Stack. Man speichere diese in einen Port, zum Beipspiel in 2:U.K. Wenn Keymap Box neu aufgerufen wird, findet sich darin "Set 2:U.K" . Das Suffix .K ist entscheidend hier, weil Keymap box nur Portnamen mit suffix .K sucht. Ein derartiger File sollte nur eine Liste enthalten, die mit GetUKeys gewonnnen wurde, oder einen selbst-dekomrimierenden Kode, der sich zu einer solchen Liste auswertet. Dies kann leicht mit den BZ-Tools von OT49 gemacht werden. Eine UserKeys Liste ist riesig aber homogen. Daher ist die Kompressionsrate in der Regel höher als 90%. Achtung: Eine Belegungsliste überschreibt die aktuelle Belegungsliste vollständig.

Beispiele von Anwendungen

1. IfD. Um die Hack-Bibliothek 256 einzurufen, die einige nützliche Befehle enthält, müssen mehrere Tasten bedient werden. Dies kann einfach mit einem Doppelklick auf den APPS-key 21.1 erledigt werden. Man setze « 256 MENU » auf Level 2 und die Standardbelegung von APPS (gewonnen mit K&SA) auf Llevel 1. Dann wende man IfD an, auf das Resultat TO, und dies binde man mit A?D an die APPS Taste an. Dann setzt ein Doppelklick auf APPS das Lib 256 Menü - auch im Editmodus - während ein gewöhnlicher Tastendruck die APPS box setzt wie zuvor. Anstelle der Standardbelegung von 21.1 kann man auch die reelle Zahl 21.1 nehmen. Und wenn man longhold vorzieht, benutze man IfL statt IfD.

2. IfL. Es ist nützlich, das STACK-Menü (ein Subdirektory des TOOL-Menüs) in allen Moden mit einem einzigen Tastendruck zu erhalten. Man hole sich die Belegung des STACK-Submenüs im TOOL-Menü und die Belegung der TOOLS Taste. beides  mit K&SA. Als nächstes drücke man IfL, wende darauf TO? an und binde dies an die TOOL Taste (23) mit A?D an. Von nun an gilt: wenn man longhold TOOLdrückt, erscheint das STACK-Menü. Das gilt auch im Editmodus und beschleunigt das Programmieren. Dieses Beispiel ist eine der vorgeschlagenen Anbindungen im Anhang .

3. IfE?P. Es ist bequem die oft benutzten Keyman Befehle auf der Taste K und deren Shiftings zu haben. RS K (CUT)  ist eine von mehreren Tasten, die nur im Editmodus brauchbar sind, kann also benutzt werden um den nur im Defaultmodus benötigten Browser More direkt einzurufen. Man stelle die Standardbelegung von 32.3 auf Level 2 und das Programm « More » (oder einfach das Command More) auf  Level 1. Dann drücke man  IfE?P normal, wende TO?  an und belege damit 32.3. Im Defaultmodus führt diese Taste dann More aus während sie im Editmodus Text schneidet wie bisher. Man beachte, die entbehrlichen Tasten LS_K und RS_K stehen noch zur Verfügung. Wir benutzen LS_K um  « RclK » oder einfach RclK anzubinden. Mit LS Shifthold K wird also RclK ausgeführt. Ähnlich können wir K&SA direkt an RS_K anbinden.

4. Wir haben noch mehrere Möglichkeiten um das gesamte Keyman Menu auf K irdendwie unterzubringen. Zum Beispiel könnte dies mit longhold K geschehen. Man setze «1200 MENU » und 32.1 auf Level 2 and 1, drücke IfL, führe TO aus und binde das Resultat an K (STO) an. Dann ruft longhold STO das Keyman Menü in jedem Modus ein. Dies wird so auch vorgeschlagen im Anhang. Alternativ kann man Keyman an ALPHA-shift longhold anbinden. Dazu wende man TO? longhold auf  «1200 MENU »  an. Dies fügt einen "Schalt α ab" Befehl hinzu. Man setze das Resultat auf  Level 2, die Standardbelegung von ALPHA K (Charakter K) auf Level 1 und führe IfL aus. Wende auf den Output TO? an und binde dies an ALPHA K an. Wenn man nun K im ALPHA Modus drückt, wird K in die Befehlszeile geschrieben wie bisher, auch wiederholt. Aber wenn ALPHA losgelassen wird (noch im ALPHA Modus) und K länger gedrückt wird, erscheint das Keyman Menü. Dies Belegung liest sich  « Wenn K im ALPHA Modus kurz gedrückt wird schreibe K in die Befehlszeile, wenn aber K länger gehalten wird (nachdem ALPHA losgelassen wurde) setze das Keyman Menü und verlasse den ALPHA Modus ». So vorgeschlagen in More aus älteren Versionen von Keyman. 

5.  Angenommen man benötigt oft eine Befehlssequenz oder einen Text im Editmodus. Es ist offenbar leichter dies durch einen einzigen Tastendruck zu erreichen als es immer wieder neu zu schreiben. Man setze den Text auf  Level 2, die reelle Zahl 1 auf Level 1 und wende darauf IfE?P, danach TO? an und binde das Resultat an die gewünschte Taste an. Diese wird dann außerhalb des Editmodus beepen (weil 1 kein Tastenkode ist!) aber im Editmodus den Text an die gewünschte Stelle setzen. Wenn ein Text direkt an eine Taste gebunden wird, öffnet diese unmittelbar den Editor was nicht immer erwünscht ist.

6.  Ein einfaches handliches Beispiel einer Komposition der obigen If-Optionen ist die Belegung  « Wenn im edit mode dann gehe mit dem Cursor nach links wie üblich, sonst aber gehe man UPDIR oder direkt nach HOME falls die Taste etwas länger gehalten wird ». Dies weise man der Taste (34.1) zu. PICTURE, damit normalerweise gesetzt, kann ebenso gut mit 34.2 gesetzt werden (Default auf dem HP48). Diese einfache Beispiel ist leicht mit IfL und IfE hergestellt, aber der Anhang enthält es bereits.

7.  Jüngere Versionen von OT49 enthalten die Toggler ~ANG and ~COOR für Winkel und Koordinaten Systeme. Weil beides eng verwandt ist, wollen wir beides auf dieselbe Taste legen, LS_ sagen wir (104.21). Man setze ~COOR auf Level 2 und ~ANG auf Level 1, führe IfL aus, dann TO?, und belege damit LS_. Eine wirklich nützliche und amüsante Belegung. Wenn LS gehalten wird und SPC wird nur kurz gedrückts, toggelt DEG mit RAD, aber wenn SPC etwas länger gedrückt wird während LS weiterhin festgehalten wird, sieht man im Header der Reihe nach die 3 Koordinatensysteme.

8. Record der Tastensequenz [MODE][F19] wie im Beispiel unter RecordKeys. Man wende IfL auf dieses Record in Level 2 und 22.1 auf Level 1 an und binde dies nach Ausführung von TO? an die Taste 22.1 an. Dann setzt die MODE Taste den MODE Dialog wenn normal gedrückt wird, aber den Flag Browser wenn sie länger gehalten wird. So spart man einen zusätzlichen Tastendruck. Auch diese amüsante Belegung ist Teil von More.

9. Man mache ein Record der Tastenfolge [][NXT][F6] welche die INFO Option des interaktiven Stack Menüs ausführt. Das setze man auf Level 2,  die Zahl 25.1 auf Level 1 und führe IfL aus. Man belasse dies in Level 1, setze 25.1 auf Level 2 und führe IfE aus. Das Resultat (nachdem es mit TO? behandelt wurde) liest sich als  « Bewege den Cursor im Editmodus aufwärst; sonst besuche man den Stack, und wenn länger gehalten wurde, zeige man eine INFO über das Objekt in Level 1 ». Eine Variante: Man mache das Tastenrecord [][RS][] und verfahre wie oben.  Dann fährt longhold l unverzüglich zum höchsten Level im interaktiven Stack. Sehr nützlich für solche die oft im interaktiven Stack arbeiten.


Bemerkung 1.  Resultate der If-Optionen können auch in Bibliothek-Befehlen oder temporären Menüs mit longhold genutzt werden, siehe Keyman selbst. Man die If-Optionen verschachteln und erhält so eine unerschöpfliche Menge an möglichen Belegungen. Dies alles ist völlig unabhängig davon, ob man die Programme lesen kann, die mit den If-Optionen erzeugt wurden. Das einzige was man in Erinnerung behalten muß ist wie sie kombiniert wurden. Alle Belegungen sind lestbar mit der (riesigen) Bibliothek extable und Setzen von Flag -85, vorausgesetzt man lernt etwas SysRPL.

Bemerkung 2.  Modus-sensitive Belegungen mit eingebundenen Standardbelegungen müssen nach einem ROM Upgrade nicht korrekt laufen wenn gewisse in Standardbelegungen vorkommende Pointer verschoben wurden. Eine Neuschrift der Belegung mit dem  Tastenkode anstelle der Standardbelegungen macht User-Belegungen unabhängig von künftigen Upgrades.

Bemerkung 3.  Eine Taste mit der leeren Liste zu belegen hat keinen Effekt. Nur Programme (egal ob mit oder ohne Programm-Begrenzer) benötigen ein TakeOver am Anfang um auch im Editmodus zu laufen.  Die kann auch außerhalb des Editors auf dem Stack geschehen.

Bemerkung 4.  Falls Keyman aus den Ports eliminiert wurde, laufen mit Keyman gemachte Belegungen nicht mehr im USR Modus. Man verlasse diesen Modus und streiche diese Belegung. Will man nur eine Version wechseln, sollte die alte in Port1 oder Port2 verbleiben und die neue in Port0 geladen werden. Erst dann sollte die alte eliminiert werden und die neue von Port0 in einen anderen Port verschoben werden. Diese Vorgehensweise berührt nicht die mit Keyman gemachten Tastenfunktionen und macht die Speicherung von Keyman außerdem sicher gegenüber einem Crash.

Bemerkung 5.  Auswählen der Subbrowser von More kann in Programmen via  Recordkeys geschehen. Wir gehen davon aus daß More an RS K angebunden wurde wie im Anhang vorgeschlagen. Dann wird folgendes Tasten record GetUKeys ausführen (Punkt 1 in More/KeymapBox), der unmittelbar die aktuelle UserKeys Liste in den Stack stellt:
            RS              (Die RS Taste)
            K                (Taste K = STO)
                     (3 mal  untere Pfeiltaste, d.h. man gehe bis zu Keyman box)
            F6              (OK, die Keymap box ist gesetzt)
            F6              (OK, führe nun Punkt 1 in Keymap Box aus, d.h. GetUKeys)
            CANCEL  (Ende des Records)
Man drücke Recordkeys und mache den Record dieser Tastenfolge. Diesen speichere man zum Beispiel in GUK. Dann wird GUK die aktuelle Tastenliste in den Stack rufen währen Sie den automatischen Durchlauf durch die Browser beobachten können, ähnlich wie in DEMO in der Bibliothek 1234 des 49.

Bemerkung 6 für Experten. Anstatt die länglichen Standardbelegungen der Pfeiltasten im Edit Modus, kann man auch die entsprechenden Cursorbewegungs-Befehle benutzen, die man leicht findet indem die Standardbelegungen der Pfeiltaste gehackt werden. Einige Standardbelegungen sind unbenannte Rompointer, etwa der von 21.3. Man spart Bytes wenn diese Rompointer anstelle ihrer länglichen Inhalte benutzt werden. Ein Rompointer benötigt kein TakeOver wenn sein Inhalt mit TakeOver beginnt. So ist die optionale Belegung o 0..3 in Keyman+/More dieselbe für alle 4 Tasten, einfach ROMPTR 4B0 F. Dieser beginnt mit einem TakeOver und identifiziert zuerst die Taste die ihn ausführt. Er läuft auch im Edit Modus ohne die Befehlszeile zu stören. 


Danksagung
Dank an Jonathan Busby für seinen Kode, der den Hexa Tastenkode einruft, an Carsten Dominik für seinen fruchtbaren Vorschlag einer longpress Option, an Simone A. Rapisarda dessen grundlegende Ideen aus SmartKeys Keyman inspiriert haben, an Denis Martinez für seinen Tasten-Recorder Kode, und an Joseph K. Horn und Rick Neufeld für beta-Testen von Keyman+.

Wolfgang Rautenberg - raut@math.fu-berlin.de - www.math.fu-berlin.de/~raut


Anhang

Der Sub-Browser More/KeyAssignments. Eine Taste wird mit dem Buchstaben darauf bezeichet, wenn es einen solchen gibt. Weitere Belegungen können in Topkeys+  gefunden werden.  

RS_A..F quote belegt die entbehrlichen RS-hold Menutasten in angenehmer Weise für das Zitieren von Namen. Das kann eine globale Variable sein, ein Rompointer (Libname) wie %CH oder ABS, oder ein Portname. Man kann also umständliches Zitieren mit RS ALPHA von Portnamen getrost vergessen. Namen von temporären oder CST-Menus werden nur zitiert, wenn dies globale Namen sind. Andernfalls wird das Programm zitiert, das dieser Menutaste zugewiesen wurde. Eine exzellente Kontrollmöglichkeit für selbst gemachte Menüs. RS_ kann also auf Submenu-namen wie VECTR in MTH gedrückt werden. Dann enthält der Stack das, was die Menutaste tun würde wenn sie gedrückt wird. Dies ist allerdings nur dann lesbar, wenn extable in einem Port existiert.
o H  FlagBox belegt die MODE Taste 22.2. Diese tut was sie vorher tat wenn sie normal gedrückt wird, aber wenn sie eetwas länger gedrückt wird setzt sie den Flag Browser ohne zusätzlichen Tastendruck.
o I StkMenu belegt Taste I (TOOL) um mit longhold das STACK Menü (Submenü von TOOL) einzurufen, auch im Edit Modus. Daher steht diese wichtige Menü mit nur einem Tastendruck immer zur Verfügung, inbesondere während des Porgrammierens.
   n PICK
o   StkTop
belegt die auwärts Pfeiltaste mit einer Vierfach-Funktion. Im Edit Modus wie vorher. Mit longhold im Default Modus fährt man unmittelbar in das höchste Stacklevel. Wenn aber eine numerische Taste n gedrückt wird und danach , wird n PICK ausgeführt. .
o K Keyman
RS K  More
Taste K führt STO aus wenn normal gedrückt wird aber setzt das Keyman Menü wenn länger gehalten wird. RS K setzt den More Browser im Default Modus.
LS_K RclK RS_K K&SA bindet die Keyman Befehle RclK und K&SA an die beiden Shiftholds von K an.
  UP
LS PICT
belegt die Linkspfeil Taste (34.1) um UPDIR auszuführen wenn normal gedrückt wurde. Wenn man länger drückt, fährt man weiter in Richtung HOME. Man kann an jeder Station stoppen bevor man in HOME landet. Die Wahl von stimmt überein mit dem Path display im Header. Wichtig: PICTURE wird nunmehr mit LS gesetzte (Standard auf dem HP48). In der PICTURE Umgebung toggelt LS_ wie bisher den graphischen Scrollmodus. 
LS_  PAINT belegt LS_ mi dem neuen Plottype PAINT. Dieser respektiert die Größe von PICT und erzeugt keinen neuen PPAR File. Drückt man (X,Y) in sdder PAINT Umgebung, werden die wahren Pixel-Koordinaten gezeigt, d.h. X:0 und Y:0 ist die linke obere Ecke. Es gibt keinen PPAR Dialog um diese Pixel-Koordinaten zu setzen! Diese sind fundamental fürs Handzeichnen oder um Grobs vom Stack an die richtige Position zu bringen, in der Programmierung von Spielen zum Beispiel.. Spezialeigenschaft: PAINT läuft auch im edit mode. Das erlaubt es Daten abzurufen die in PICTURE gespeichert sind. CANCEL kehrt problemlos zur Programmzeile zurück..
o   OVER legt den OVER Befehl auf longhold . Normalerweise wird SWAP ausgeführt. Wir haben damit die beiden wichtigsten Stackoperationen auf nur einem Key. 
o 0..3  Ports
(Keyman+)
o 0..2 Ports
(Keyman)
Werden im Default Modus die Tasten 0, 1,  2 or 3 etwas länger gedrückt, wird ein entsprechendere Port Browser gesetzt (auf dem langsamen 49 nur das Portmenü), zusammen mit einem einem 1-seitigen Menü mit den wichtigsten Befehle fürs Port Management. Alle Port Browsers sind dieselben. longhold 3 ist ein Browser der Karte. Im Browser sind auch einige Harttasten aktiv: NXT toggelt die Browseransicht. EVAL evaluiert. Andere Harttasten, insbesondere die Pfeiltasten 0,1,2,3 für einen Portbesuch, +/- und ALPHA laufen wie im 49+ Standardfiler. Anmerkung: Im Edit Modus setzen 0,1,2,3 wie bisher das entsprechende Port Menü was nützlicher ist als browsen während des Programmierens.