'===========================================================================
' Subject: LEFT/RIGHT SHIFT (USING BITS)      Date: 04-13-96 (11:22)       
'  Author: Jeremy Stanley                     Code: QB, QBasic, PDS        
'  Origin: FidoNet QUIK_BAS Echo            Packet: KEYBOARD.ABC
'===========================================================================
'> "There's a byte in the BIOS area, the bits of which say which Ctrl, Alt and
'> Shift keys are depressed.  There's another which helps you differentiate left
'> from right keys.  But I can't remember what they are... Anyone?"

'The first byte in question is at 0040:0017.  This example program should
'demonstrate how to read the status of these keys:

DEFINT A-Z

CLS
PRINT "Byte at 0040:0017  Press ESC to exit"
PRINT "   - bit 0 - Right shift"
PRINT "   - bit 1 - Left shift"
PRINT "   - bit 2 - Ctrl"
PRINT "   - bit 3 - Alt"
PRINT "   - bit 4 - Scroll lock"
PRINT "   - bit 5 - Num lock"
PRINT "   - bit 6 - Caps lock"
PRINT "   - bit 7 - Insert"

DEF SEG = &H40

DO
  c = PEEK(&H17)
  FOR x = 0 TO 7
    LOCATE x + 2, 1
    e = 2 ^ x
    PRINT (c AND e) \ e
  NEXT
LOOP UNTIL INKEY$ = CHR$(27)

DEF SEG

'jeremy.stanley@darkstarbbs.com
'http://pages.prodigy.com/perigee/

