MILC logo

IndexVorigeVolgendeLeeg

Toetsenbord scanner
Genic Clubguide, 00-00-00


    
                     TOETSENBORD SCANNER

Van de heer R.van Dongen uit Opende ontving ik  de  volgende
brief :


Mijne Heren,

Allereerst mijn complimenten met uw voortreffelijk magazine,
naar mijn mening ŠŠn van de beste, zo niet  het  beste,  MSX
computerblad.

Maar nu terzake : Hoe kan  ik  vanuit  een  (BASIC)programma
opvragen of de CAPS- of de  SHIFT-Toets  ingedrukt  is ?

R. van Dongen, Opende


Inderdaad toetsen zoals  SHIFT,  CODE,  GRAPH,  CAPS  of  de
accenttoets zijn niet  rechtstreeks  van  uit  BASIC  op  te
vragen, met enig "gePEEK" lukt dit wel:

In het NEWKEY geheugen gebied staan namelijk  11  bytes  (88
bits) die bepalen of een toets al  dan  niet  is  ingedrukt:
normaal staan alle bits op 1, wordt er een toets  ingedrukt,
dan wordt het desbetreffende bit 0.

Die toetsenbordmatrix is als volgt geordend :


Voor een Europees Toetsenbord :

BIT    :  x7   x6   x5   x4   x3   x2   x1   x0
------------------------------------------------------
FBE5H  :   7    6    5    4    3    2    1    0
FBE6H  :   ;    ]?   [?   \    =    -    9    8
FBE7H  :   B    A  ACC.T. /    .    ,    `?   '?
FBE8H  :   J    I    H    G    F    E    D    C
FBE9H  :   R    Q    P    O    N    M    L    K
FBEAH  :   Z    Y    X    W    V    U    T    S
FBEBH  :  F3   F2   F1  CODE  CAP GRAPH CTRL SHIFT
FBECH  :  RET  SEL  BS  STOP  TAB  ESC  F5   F4
FBEDH  :  CR   CD   CU   CL   DEL  INS  HOME SPACE
FBEEH  :   4    3    2    1    0    /    +    *    } NUMERIC
FBEFH  :   .    ,    -    9    8    7    6    5    } PAD.

VERKL. CR= Cursor Right CD= Cursor Down CU=  Cursor  Up  CL=
Cursor Left. Achter sommige toetsen  staat  een  vraagteken,
gebruik deze toetsen bij  voorkeur  niet  omdat  ze  op  een
Japanse machine anders in de toetsenbordmatrix staan!

Als u wilt opvragen of b.v. de CTRL-Toets is  ingedrukt  dan
kunt u het volgende  gebruiken:  IF  PEEK(&HFEBB)=&B11111101
THEN... Maar bij deze methode schuilt een addertje onder het
gras, als bijvoorbeeld de CODE toets ook  ingedrukt  is  dan
zal FBEBH 11101101B bevatten en  het  programma  zal  gewoon
doorgaan alsof de CTRL-Toets niet ingedrukt is.

Een   betere   methode   is   daarom   :   IF   PEEK(&HFBEB)
AND&B00000010)=0 THEN.... Dit is een  betere  methode  omdat
hier alleen het zevende bit (en  dus  niet  het  hele  byte)
wordt gecontroleerd. Zie voor nadere  uitleg  over  logische
operaties, het speciale artikel over dit onderwerp.

In het software menu bevindt zich een  complete  toetsenbord
scanner van Stefan Boer.

    

Index

Vorige

Volgende