Antes que nada quiero hacer una aclaración para que no te confundas si tu pantalla no se ve como la mÃa.
Mi pantalla, por ejemplo, se podrÃa ver asÃ:

Mientras que, para la misma acción, la tuya se podrÃa ver asÃ:
Eso se debe a que yo tengo instaladas las librerÃas necesarias para poder ver las entradas SysRPL, que decodifican los nombres de las entradas.
Si querés hacer lo mismo podés instalar extable2.lib. Copiala al puerto 2:FLASH y luego reiniciá la calculadora (ON+F3). También podés ver el tutorial sobre como instalar una librerÃa. Además tenés que tener la bandera –85 set (SysRPL stk disp).
Pero si no querés instalarlo, por ahora no te preocupes, porque aunque veas “External… FlashPtr…” etc en vez del nombre correcto, el programa va a funcionar igual. Simplemente no lo vas a poder ver correctamente.
Otra cosa: Tengo la calcu en modo RPN (el otro es algebráico). Para cambiar entre RPN y ALG tenés que presionar
,
,
. Esto cambia el “Operating Mode..” de RPN a Algebraic (o viceversa) y le da el OK. Para seguir estos ejemplos tenés que tener la calcu en ese modo (RPN).
Bueno, aclarado esto, manos a la obra…
El modo USER.
Jugá con esta secuencia de teclas y fijate si notás algún cambio en la pantalla de tu calculadora:
,
,
,Â
,
,Â
…
Como podrás ver, lo que cambia es una etiqueta arriba en la pantalla. Cambia entre “USR“, “1US” y luego desaparece.
El orden en el que cambia, está determinado por la bandera numero -61 del sistema (-61 system flag). Si está set ([USR] locks User), primero aparece  USR yluego 1USR. Si está clear ([USR][USR] locks), primero aparece 1USR y luego USR.
Si querés probar, para entrar a las banderas del systema tenés que ir a
,
(FLAGS).
En realidad decir que la bandera -61 determina “el orden en el que cambia” es simplemente un modo didáctico (o introductorio) de decirlo. A decir verdad USR quiere decir que se está en el modo USER. 1US queire decir que una tecla (la próxima) se evaluará en modo USER y luego se abandonará el modo USER. Y cuando desaparece la etiqueta es que no se está más en modo USER.
Asà que la bandera -61 determina de que modo se traba (lock) el modo USER. Si está visible la etiqueta USR se considera que está trabado. Si está la etiqueta 1US no está trabado, pues luego de presionar una tecla (una funcional, no los shifts) ya dejaremos de estar en modo USER, por lo tanto no está trabado.
Si “[USR][USR] locks”, debemos presionar
,Â
,Â
,Â
para la etiqueta USR. (presionando solamenteÂ
,Â
quedarÃamos en 1US).
Si “[USR] locks User” Â con presionar
,Â
es suficiente para que aparezca la etiqueta USR. Si lo volvemos a hacer aparece 1US.
Y al final ¿qué es el modo USER? La siguiente bandera, la -62, determina si estamos o no en modo USER (la -61 tenÃa que ver con cómo entrabamos al modo USER). Al estar set, se muestra la etiqueta USR, al estar clear no se muestra. El modo USER quiere decir “Modo teclas de usuario” (User keys on).
Cuando uno presiona una tecla funcional de la calculadora, ésta comprueba si se está en modo USER o no:
- Si está en modo USER, se fija si el usuario le dió alguna asignación a la tecla. Si es asà la ejecuta. Sinó ejecuta la asignación predefinida.
- Si no está en modo USER ejecuta la asignación predefinida de la tecla sin importar si el usuario le asignó otra función o no.
Instalando KeymanPlus.
El manual de referencia avanzado (en inglés) de la calculadora documenta algunas funciones para asignar teclas de usuario y mostrar las asignaciones hechas (ASN,DELKEYS, RCLKEYS, STOKEYS).
Pero en este post vamos a utilizar una librerÃa que le da mucha mas potencia a las teclas de usuario: Keyman.
Instalá la librerÃa Keyman (KeymanPlus) en tu calculadora (ver como). En el archivo zip también va a estar la documentación en castellano si le querés dar una mirada (KeymanE.htm).
Luego de haber reiniciado, presioná
,
, Keyma para ingresar al menú Keyman. Vas a ver algo asÃ:
Fijate que  el menú sige. Presioná
para ver el resto (y NXT otra vez para ver el primero):
El comando A?D.
En la librerÃa Keyman un signo de interrogación (?) en el nombre del comando significa que si presionás ese comando ejecuta la función que está antes del signo, y si presionás y mantenés presionado el comando por un instante (unos 300 ms aproximadamente) ejecuta la función que está después del signo.
En el caso del comando A?D, A significa Assign (asignar) y D Delete (eliminar). Asigna o elimina la asignación de una tecla.
Hagamos una asignación simple. Presioná
,
. Y luego presioná el comando A?D. Se tiene que ver asÃ:
Se muestra el mensaje AsnK, que significa que lo que está en el nivel “1:” del stack se va a asignar a la tecla que presionés a continuación. Presioná la
por ejemplo. Ya está asignado el 1 a la X. Ahora volvé a presionar la X y fijate como la X hace aparecer un 1.
Probá alguna combinación, como
,
por ejemplo. La función es la normal. Esto es porque la asignación afectó solo a la X. Las otras variaciones como
,
o
,
no fueron afectadas. Ya vamos a ver las diferentes combinaciones. Pero primero vemos como borrar una asignación.
Para borrar la asignación presioná A?D por unos instantes. Se va a ver algo asÃ:
A continuación presioná la tecla cuya asignación querés borrar, en este caso la X. Listo. Todo ha vuelto a la normalidad.
Las combinaciones de teclas.
Cada tecla tiene su código, que está dado por su número de fila, su número de columna, un punto y un código de combinación, en ese orden.
La tecla
(sola, sin ningún shift ni alpha) por ejemplo tiene código 41.1, donde fila=4, columna=1 y combinación = 1.
Las combinaciones que puede tener una tecla son:
- 1: La tecla sola.
- 2:
y luego la tecla. A esta combinación de presionar una tecla y luego la otra la simbolizaremos por la primera tecla, una coma, y luego la otra:
, la tecla.
- 21: Mantengo presionadaÂ
y, sin soltarla, presiono la tecla. A esta combinación de presionar una tecla y sin soltarla presionar la siguiente la simbolizaremos por la primera tecla, un signo más, y luego la otra:
+ la tecla.
- 3:
, la tecla.
- 31: Â
+ la tecla.
- 4:
, la tecla.
- 41:
+ la tecla.
- 5:Â
,Â
+ la tecla. O sea, presionás y soltas
, luego presionas
, y sin soltarla presionás la tecla.
- 51:
,
+ la tecla.
- 6:Â
,
, la tecla.
- 61:
,Â
+Â la tecla.
Entonces, por ejemplo, la combinación
,
+
serÃa: 41.61. Y la combinación
+
serÃa: 44.21.
Cuando uno asigna una tecla de usuario mediante A?D, la asignación se realiza solamente a la combinación que uno utilizó cuando A?D te pidió la tecla (diciendo: AsnK).
Si en vez de
, hubieras presionado
,Â
+Â
, la asignación solamente se habrÃa realizado para 63.61. Por lo tanto solo esa combinación escribirÃa el 1 que le asignamos. Cualquier otra combinación funcionarÃa de la forma predeterminada (la “normal”).
Tené en cuenta que si asignás algo a una combinación de teclas, a la hora de borrar esa asignación (presionando A?D por unos instantes), tenés que darle la combinación correcta que querés borrar. ¿Se entiende? A?D va a borrar solamente esa combinación (la que le des), las otras no se tocarán.
Los comandos RclK y K&SA.
El comando RclK espera a que presiones una tecla, o cualquier variante de ella (combinación), y te devuelve la asignación de usuario que tiene esa combinación si es que tiene alguna. Sino simplemente dice XX.XX not asnd, siendo XX.XX la combinación que hayas presionado.
El comando K&SA también espera a que presiones alguna combinación. Pero en vez de darte la asignación de usuario que tiene esa combinación, te da, en el nivel “2:” (o “3:”) del stack el código XX.XX de la combinación que presionaste y en el  nivel “1:” la función del sistema que se ejecuta predeterminadamente (la “normal”) para esa combinación. También puede mostrar otras cosas. Fijate en la documentación de Keyman que otras cosas muestra a veces.
Lo que más nos interesa de K&SA es que devuelve la combinación que presionaste. Esto ayuda cuando uno no se acuerda de memoria el código para una combinación. De paso, el código se llama rc.p: r=row(fila), c=column(columna), p=plane(plano). El resto que devuelve lo podemos borrar nomás y la utilizamos para ver el código.
Asignar programas.
Uno puede asignar cualquier cosa que esté en el stack a una combinación rc.p.
Por ejemplo. En electrónica es muy común tener que realizar el cálculo del valor final de una combinación de resistores en paralelo. La fórmula del valor de resistencia equivalente, teniendo resistores R1, R2, R3… Rn en paralelo, es 1/(1/R1+1/R2+1/R3+…+1/Rn).
El siguiente programita hace ese cálculo:
Lo puedo asignar, por ejemplo, a la combinaciónÂ
+
(44.31), que me recuerda a Paralelo y no interfiere con la llamada a CAT, ya que a CAT puedo acceder mediante
,Â
(44.3).
Entonces ahora puedo poner los valores de los resistores (8, 5 y 6) en el stack seguidos por el número de resistores (3):
Y luego, presionando
+Â
ya los tengo metidos en la fórmula:
Doble clic y clic largo.
¿Qué pasarÃa si a una rp.p le asignara un programa que quedara a la espera a ver si la vuelvo presionar luego de algunas décimas de segundo (doble clic), y en tal caso hiciera una cosa, y en caso de que pasaran las décimas de segundo y no la volviera a presionar hiciera otra? Pues eso hace el comando IFD (if double clic).
También podrÃa hacer otro programa que esperara a ver si sigo presionando la tecla por algunas décimas de segundo, y si es asà hiciera una cosa, y sino otra (clic largo). El comando IFL (if long clic) lo hace.
Poné en el stack una cadena que diga “DOBLE” y otra “NORMAL” (abrà comillas con
,
y escribà la cadena presionando
para poder ingresar las letras) . AsÃ:
Luego presioná IFD. Queda asà si no tenés instalado extable2:
Y asà si tenés extable2 y la flag -85 set:
Eso que hay en el stack es un programa en SysRPL que dice que si detecta doble clic, escribe la cadena “DOBLE”, sino, escribe “NORMAL”.
Asigná el programa a la tecla X por ejemplo. O sea, presioná A?D y luego
. Probá haciendo clic o doble clic en
. Para borrar la asignación presioná A?D por unos instantes y luego
.
Ese código se lo podés asignar a cualquier combinación. Lo mismo podés hacer con IFL para detectar clics largos.
Repetà los pasos de arriba pero no lo asignes a la tecla. Ahora escribà “LARGO”:
Presioná
para invertir las posiciones (para que “LARGO” quede arriba):
Ahora presioná IFL. Asigná (con A?D) el resultado a algún rc.p que quieras, por ejemplo a
,Â
. Ahora probá haciendo
,Â
. Haciendo
, doble clicÂ
. Y
, manteniendoÂ
presionada.
Como verás, ya le asignamos tres códigos diferentes para una combinación. Una si la combinación recibe un click, otra si recibe doble clic y otra si recibe un clic largo. Asà se puede hacer para cada combinación para cada tecla, por lo tanto las posibilidades son muchÃsimas.
Si querés asignar a una tecla un comportamiento con doble clic, y para el clic común querés el comportamiento “normal”, tenés que poner arriba lo que querés que haga la tecla para doble clic, abajo el código rc.p de la tecla y presionar IFD. De este modo para doble clic se ejecuta lo de arriba y sino se ejecuta lo que harÃa normalmente el código rc.p que pusiste. Consultá el manual de Keyman para más información y ejemplos.
Otros comandos.
Los otros comandos están explicados en la documentación de Keyman (KeymanE.html) en el archivo zip.  Creo que con esta explicación ya se puede tener una base suficiente como para ir directamente a la documentación, que tiene varios ejemplos.
Documentar las asignaciones.
Cuando empieces a crearte muchos accesos directos en tu teclado te vas a empezar a olvidar de todo lo que tenés.
Una forma simple de documentar tus teclas es la siguiente.
- Elegà una combinación de documentación. Por ejemplo
+ tecla.
- Cada vez que asignes algo a alguna tecla, asignale a
+ esa tecla la explicación de lo que hace. O agregale a una explicación anterior si es que ya tenÃas una.
Ejemplo:
Le vamos a asignar a
+Â
un programa que ponga “HOLA” en el stack:
Asignalo (con A?D) a
+Â
.
Ahora hacé lo mismo con un programa que diga << “CHAU” >> pero asignalo a
,Â
(soltá el shift antes de presionar X).
Ahora creá un programa que diga: << “LS+: DICE CHAU(este sÃmbolo rojo
)RS: DICE HOLA” >>
Se ve asà si lo editás (EDIT):

Asignalo a
+
. Ahora cada vez que presiones
+
vas a poder ver todas las asignaciones que tenés para la tecla
. Obviamente tenés que ir actualizando la información cada vez que asignás algo nuevo.
En este caso LS+ significa LEFT SHIFT (el blanco) y sin soltar (por eso el +) la tecla en cuestión. Y RS significa RIGHT SHIFT (el rojo), pero soltándolo antes de presionar la tecla en cuestión.
Otra cosa que me sirve es asignar << 1200 MENU >> a la tecla
para clic largo. De esta forma haciendo un clic largo en
se abre el menú de la librerÃa Keyman.