Adapters are used to communicate between virtual hardware and the browser (or nodejs, or anything else). Currently, there are 3 adapters: Keyboard, Mouse and Screen. Adapters are passed through settings.keyboard_adapter, settings.mouse_adapter and settings.screen_adapter respectively, but they can also be undefined.
Here is a list of functions that must be implemented by adapters:
ScreenAdapter:
put_pixel(x, y, color)put_pixel_linear(offset, color_part)put_char(row, col, chr, bg_color, fg_color)update_cursor(row, col)update_cursor_scanline(start, end)clear_screen()timer_graphical()timer_text()set_mode(is_graphical)set_size_graphical(width, height)set_size_text(rows, cols)destroy()KeyboardAdapter:
init(send_code_fn)destroy()enabledMouseAdapter:
init(click_fn, move_fn, wheel_fn)destroy()enabledMore
In addition to adapters, the following functions must be provided in global scope (TODO: Improve that).
next_tick()set_tick(fn)log(str) - only in debug modes