I think I have the keyboard and mouse interface syntax defined and working. You can either poll SDL for events or wait within SDL for an event. We have four ways to return key values.
- UNICODE
- KeyCode
- ScanCode
- SDL Key Name
The
BBC_GETKEY function has been enhanced to return one of the three possibilities.
BBC_GETKEY(0) - unicode poll
BBC_GETKEY(1) - unicode wait
BBC_GETKEY(2) - keycode poll
BBC_GETKEY(3) - keycode wait
BBC_GETKEY(4) - scancode poll
BBC_GETKEY(5) - scancode wait
BBC_KEYNAME(0) - keyname poll
BBC_KEYNAME(1) - keyname wait
ScriptBasic keyboard test programDECLARE SUB BBC_OPEN ALIAS "BBC_OPEN" LIB "bbc"
DECLARE SUB BBC_GETKEY ALIAS "BBC_GETKEY" LIB "bbc"
DECLARE SUB BBC_KEYNAME ALIAS "BBC_KEYNAME" LIB "bbc"
DECLARE SUB BBC_CLOSE ALIAS "BBC_CLOSE" LIB "bbc"
BBC_OPEN "Test BBC_GETKEY"
REPEAT
' k = BBC_GETKEY(5)
k = BBC_KEYNAME(1)
' PRINT "Unicode: ",k," Character: ",CHR(k),"\n"
' PRINT "Keycode: ",k," Character: ",CHR(k),"\n"
' PRINT "Scancode: ",k," Character: ",CHR(k),"\n"
PRINT "Key Name: ",k,"\n"
UNTIL k = "-escape"
BBC_CLOSE
UNICODEjrs@laptop:~/sb/sb22/sdl$ scriba getkey.sb
Unicode: 97 Character: a
Unicode: 98 Character: b
Unicode: 99 Character: c
Unicode: 0 Character:
Unicode: 65 Character: A
Unicode: 66 Character: B
Unicode: 67 Character: C
Unicode: 27 Character:
jrs@laptop:~/sb/sb22/sdl$
KeyCodejrs@laptop:~/sb/sb22/sdl$ scriba getkey.sb
Keycode: 97 Character: a
Keycode: 98 Character: b
Keycode: 99 Character: c
Keycode: 304 Character: 0
Keycode: 97 Character: a
Keycode: 98 Character: b
Keycode: 99 Character: c
Keycode: 27 Character:
jrs@laptop:~/sb/sb22/sdl$
ScanCodejrs@laptop:~/sb/sb22/sdl$ scriba getkey.sb
Scancode: 38 Character: &
Scancode: 56 Character: 8
Scancode: 54 Character: 6
Scancode: 50 Character: 2
Scancode: 38 Character: &
Scancode: 56 Character: 8
Scancode: 54 Character: 6
Scancode: 9 Character:
jrs@laptop:~/sb/sb22/sdl$
BBC_KEYNAME (SDL_GetKeyName +down / -up key events)
jrs@laptop:~/sb/sb22/sdl$ scriba getkey.sb
Key Name: +a
Key Name: -a
Key Name: +b
Key Name: -b
Key Name: +c
Key Name: -c
Key Name: +left shift
Key Name: +a
Key Name: -a
Key Name: +b
Key Name: -b
Key Name: +c
Key Name: -c
Key Name: -left shift
Key Name: +escape
Key Name: -escape
jrs@laptop:~/sb/sb22/sdl$