1111#include < emscripten.h>
1212#include < emscripten/key_codes.h>
1313#include " include/osd.h"
14+ #include " common/inet.h"
1415#include " common/smbas.h"
1516#include " lib/maapi.h"
16- #include " ui/utils .h"
17+ #include " ui/audio .h"
1718#include " ui/theme.h"
19+ #include " ui/utils.h"
1820#include " platform/emcc/runtime.h"
1921#include " platform/emcc/main_bas.h"
2022#include " platform/emcc/keymap.h"
@@ -135,11 +137,11 @@ char *Runtime::loadResource(const char *fileName) {
135137bool Runtime::handleKeyboard (int eventType, const EmscriptenKeyboardEvent *e) {
136138 int keyCode = e->keyCode ;
137139 bool result = true ;
140+ static bool capsLock = false ;
138141 switch (e->keyCode ) {
139142 case DOM_VK_SHIFT:
140143 case DOM_VK_CONTROL:
141144 case DOM_VK_ALT:
142- case DOM_VK_CAPS_LOCK:
143145 // ignore press without modifier key
144146 result = false ;
145147 break ;
@@ -151,24 +153,25 @@ bool Runtime::handleKeyboard(int eventType, const EmscriptenKeyboardEvent *e) {
151153 result = false ;
152154 break ;
153155
156+ case DOM_VK_CAPS_LOCK:
157+ capsLock = !capsLock;
158+ break ;
159+
154160 default :
155161 for (int i = 0 ; i < KEYMAP_LEN; i++) {
156162 if (keyCode == KEYMAP[i][0 ]) {
157163 keyCode = KEYMAP[i][1 ];
158164 break ;
159165 }
160166 }
161-
162167 if (e->ctrlKey && e->altKey ) {
163168 pushEvent (getKeyPressedEvent (SB_KEY_CTRL_ALT (keyCode)));
164169 } else if (e->ctrlKey && e->shiftKey ) {
165170 pushEvent (getKeyPressedEvent (SB_KEY_SHIFT_CTRL (keyCode)));
166171 } else if (e->altKey && e->shiftKey ) {
167172 pushEvent (getKeyPressedEvent (SB_KEY_ALT_SHIFT (keyCode)));
168173 } else if (e->ctrlKey ) {
169- if (keyCode >= ' A' && keyCode <= ' Z' ) {
170- keyCode += (' a' - ' A' );
171- }
174+ keyCode = to_lower (keyCode);
172175 switch (keyCode) {
173176 case ' b' :
174177 pushEvent (getMotionEvent (EVENT_TYPE_BACK, nullptr ));
@@ -216,7 +219,7 @@ bool Runtime::handleKeyboard(int eventType, const EmscriptenKeyboardEvent *e) {
216219 pushEvent (getKeyPressedEvent (SB_KEY_SHIFT (keyCode)));
217220 }
218221 } else {
219- pushEvent (getKeyPressedEvent (keyCode));
222+ pushEvent (getKeyPressedEvent (capsLock ? keyCode : to_lower (keyCode) ));
220223 }
221224 break ;
222225 }
@@ -337,6 +340,8 @@ void Runtime::processEvent(MAEvent &event) {
337340
338341void Runtime::runShell () {
339342 logEntered ();
343+ audio_open ();
344+ net_init ();
340345 while (1 ) {
341346 runMain (MAIN_BAS);
342347 }
@@ -605,10 +610,6 @@ bool System::getPen3() {
605610 return result;
606611}
607612
608- void System::completeKeyword (int index) {
609- // empty
610- }
611-
612613//
613614// sbasic implementation
614615//
@@ -622,16 +623,10 @@ int osd_devrestore(void) {
622623 return 0 ;
623624}
624625
625-
626- void osd_audio (const char *path) {
627- }
628-
629- void osd_beep () {
630- }
631-
632- void osd_clear_sound_queue () {
633- }
634-
635- void osd_sound (int frequency, int millis, int volume, int background) {
636- }
637-
626+ //
627+ // not implemented
628+ //
629+ void System::completeKeyword (int index) {}
630+ void maHideVirtualKeyboard (void ) {}
631+ void maShowVirtualKeyboard (void ) {}
632+ void maUpdateScreen (void ) {}
0 commit comments