Marc's Place

E$XIB - Functietoetsen gebruiken en programmeren




Herkenning


De routines in E$XIB ondersteunen het gebruik van functietoetsen onder Microsoft Windows en met VT*-terminal(emulatie)s in 7- of 8-bits modus.


Hiermee komt een wereld van nieuwe mogelijkheden naar je toe. Het wordt nu tijd om 'event-loop' achtig te gaan programmeren, want dat maakt de overgang naar het programmeren van 'Microsoft Windows™'-look-and-feel veel makkelijker.


In de toekomst zal naast E$XIB een bibliotheek ontstaan die zelf geen inname meer doet maar dit overlaat aan de Toolkit. Hoe dat vorm gaat krijgen is in onderzoek.


Onderstaande afkortingen worden in alle handleidingen gebruikt:

  • CUP = Cursor UP toets
  • CDN = Cursos DOWN toets
  • CLE = Cursor LEFT toets
  • CRI = Cursor RIGHT toets
  • PUP = Page UP toets
  • PDN = Page DOWN toets
  • CTRL/xx = Toets xx met tegelijkertijd de CONTROL toets ingedrukt.

In- of uitschakelen


Het gebruik van de functie-toetsen kan in- en uitgeschakeld worden door de common variabele e$usr_fkys op 0 (uit) of 1 (aan) te zetten.


Verschillen


Er zijn verschillen per soort gebruik. Intern wordt elke toetsaanslag geconverteerd naar een MS-Windows/MS-DOS toetscode. Deze toetscode wordt in E$XIB weer omgezet naar de Multihouse-toetscode volgens PRG:KEYDEFS.INC, wegens compatibiliteit met de XIBOLs.


Werk je met een èchte VT-terminal, zet dan in de COMMUNICATIONS SET-UP het derde veld in de derde rij op 'UNLIMITED TRANSMIT'. Anders werkt E$XIB niet.


Hieronder volgt een lijst met toetsen die sowieso niet worden ondersteund:

  • Application-keypad keys
  • GOLD-key [wèl bij axchr]
  • F10 (= Synergy/DBL)

Hieronder volgt een lijst met functietoetsen die met een VT-terminal(emulator) niet beschikbaar zijn gewoonweg vanwege de VT-interface:

  • F1 (= Hold Screen) [vervanger: PF1]
  • F2 (= Print Screen) [vervanger: PF2]
  • F3 (= Setup) [vervanger: PF3]
  • F4 [vervanger: PF4]
  • F5 (= break)
  • F6 (= CTRL/Y)
  • F21 t/m F36
  • SHIFT + Besturingstoetsen (FIND, SELECT, REMOVE, PREV_SCREEN, etc.)
  • CTRL + Besturingstoetsen (FIND, SELECT, REMOVE, PREV_SCREEN, etc.)

Hieronder volgt een lijst met functietoetsen die onder Microsoft Windows niet beschikbaar zijn:

  • F22 (= SHIFT/F10 = Synergy/DBL)
  • F28 t/m F30
  • F34 (= CTRL/F10 = Synergy/DBL)

Hieronder volgt een lijst met toetsen die onder Microsoft Windows beschikbaar zijn en die gelijk aan elkaar zijn:

  • CTRL/Home = SHIFT/F4
  • CTRL/End = SHIFT/F2
  • CTRL/PgDn = SHIFT/F3
  • CTRL/F4 = F7
  • CTRL/F5 = F8
  • CTRL/F6 = F9
  • RETURN = KEYPAD/ENTER

Programmeren


Er zijn twee manieren om om te gaan met functietoetsen binnen je programma omdat er twee soorten common variabelen aanwezig zijn:


Een array van 36 elementen (D1) die elk een F-toets vertegenwoordigen. Hiermee kan snel en efficient getest worden op ingave van een toets:

xcall axalf (03026, klantcode)
if F03.or.F12 exitloop
if F04 call ZoekKlant

Een variabele e$_chr die is opgedeeld in twee kleinere eenheden, te weten ck (controlling key) en ky (key). De controlling key is 1 als SHIFT is gebruikt en 2 als CTRL is gebruikt. Deze registratie vindt niet plaats voor toetsen die al een ASCII waarde hebben zoals de hoofdletters (eigenlijk SHIFT-<kleine letter>) en de CTRL/A (001) t/m de CTRL/Z (026) toetsen. Met e$_chr kan een using-select worden opgebouwd:

xcall axalf (03026, klantcode)
using e$_chr.ky select
(K_PF3, K_F12), exitloop
(K_PF4), call ZoekKlant
endusing

Zolang je gebruik maakt van E$XIB routines moet je e$_chr.ky vergelijken met de constanten in e$lib:keydefs.inc. Voor alleen díe functietoetsen die door een VT-terminal(emulator) niet worden ondersteund maar door MS Windows wel, dien je te vergelijken met constanten uit e$lib:e$keys.h.


Als je keydefs.inc helemaal niet meer wilt gebruiken en je alles wilt vergelijken met de constanten uit e$lib:e$keys.h dan moet je de functie cvkey.dbl vervangen door een routine die eigenlijk niets doet zodat de E$LIB-keycode niet wordt geconverteerd. Deze routine moet je dan in de bibliotheek E$XIBOLB plaatsen:

.function CVKEY
p1, d
record
ascii, d5
.proc
ascii = p1
freturn ascii
.end
Routines Geprogrammeerde functietoetsen
 
axakk,
axakr,
axtkk,
axtkr,
axask,
axtsk,
axasr,
axtsr
F12 = N
F03 = NE
CDN = JV
CUP = JT
PDN = NR
 
axpcd,
axpdd
F02 = Schakelen tussen de inname van een geformatteerde, nederlandse postcode en een enkele string van 7 posities voor andere postcodes
 
axstp
F03 = Zelfde als het intoetsen van 'STOP'
F12 = Zelfde als het intoetsen van 'STOP'
 
dxtxt
F02 = Help
F03 = Einde
F04 = Zoeken in de tekst
F12 = Einde
F17 = Naar het begin van de tekst
F18 = Naar het einde van de tekst
CTRL/F = Zoeken in de tekst
CTRL/G = Volgende zoeken
 
dxerr,
xfout
F03 = Zelfde als het ingeven van <DEL>
F12 = Zelfde als het ingeven van <DEL>
 
xprop
F03 = Zelfde als ingeven van alleen <RET>
F12 = Zelfde als ingeven van alleen <RET>
 
alle inname routines
CTRL/R = Scherm verversen
CTRL/T = Subroutine trace-back in een venster
CTRL/V = Copyright en release info-scherm
CTRL/W = Scherm verversen
 
Standaard toetsen bij tekst inname-routines (ook die met masker)
 
backspace Verwijderd teken links van de cursor.
 
<TAB>
<CUP>
<CDN>
Accepteert hele veldinhoud. Er wordt teruggesprongen naar het aanroepende programma.
 
<RET>
<ENTER>
Accepteert hele veldinhoud links van de cursor. Indien het een routine met een standaardwaarde is, wordt de hele standaardwaarde overgenomen indien de cursor helemaal links staat. Er wordt teruggesprongen naar het aanroepende programma.
 
<ESC> Zet de initiële waarde weer terug. Er wordt teruggesprongen naar het aanroepende programma.
 
<HOME> Naar het begin van de tekst.
 
<END> Naar het einde van de tekst.
 
<CLE>
<CRI>
Eén positie naar links of rechts.
 
CTRL/B
CTRL/<CLE>
Eén woord of masker-element naar links.
 
CTRL/F
CTRL/<CRI>
Eén woord of masker-element naar rechts.
 
CTRL/N
CTRL/<INS>
Zet de initiële waarde weer terug.
 
<INS> Schakel invoegen / overtypen in of uit.
 
<DEL> Verwijder teken:
  • waarop de cursor zich bevindt (bij blok-cursors)
  • rechts van de cursor (bij I-beam cursors)
 
CTRL/<DEL> Wis de inhoud en presenteer een leeg veld.
 
Bij alle overige functietoetsen wordt de hele inhoud van het veld geaccepteerd en wordt teruggesprongen naar het aanroepende programma. De betreffende functietoets is op te vragen zoals eerder beschreven.
 
Standaard toetsen bij numerieke inname-routines (ook die met masker)
 
backspace Verwijderd teken links van de cursor.
 
<TAB>
<CUP>
<CDN>
Accepteert hele veldinhoud. Er wordt teruggesprongen naar het aanroepende programma.
 
<RET>
<ENTER>
Accepteert hele veldinhoud. Er wordt teruggesprongen naar het aanroepende programma.
 
<ESC> Zet de initiële waarde weer terug. Er wordt teruggesprongen naar het aanroepende programma.
 
CTRL/N
CTRL/<INS>
Zet de initiële waarde weer terug.
 
<DEL> Verwijder teken:
  • waarop de cursor zich bevindt (bij blok-cursors)
  • rechts van de cursor (bij I-beam cursors)
 
CTRL/<DEL> Wis de inhoud en presenteer een leeg veld.
 
+ Maakt de numerieke waarde positief. Werkt alleen bij axdec, axded, axdfx en axdfd.
 
- Schakelt tussen positief en negatief. Werkt alleen bij axdec, axded, axdfx en axdfd.
 
decimale .
decimale ,
Deze worden geaccepteerd, er wordt echter niets mee gedaan. Werkt alleen bij axdfx en axdfd.
 
Bij alle overige functietoetsen wordt de hele inhoud van het veld geaccepteerd en wordt teruggesprongen naar het aanroepende programma. De betreffende functietoets is op te vragen zoals eerder beschreven.
© 1997- Marc Vos (and others)   -   Privacy Statement   -    Contact Me

On this website, Google Analytics is used to track visitor statistics. These are anonymised data about the number of visitors, which pages they visit on this site, from which regions they visit, which web browsers they use, etc.. You will also see non-personalised ads via Google AdSense. Cookies from Paddle or Paypal are placed when you click on a 'Buy now!' or 'Donate!' button, and possible cookies from Disqus when you use that system to comment on one or more blogposts.
Privacy Statement