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()
enabled
MouseAdapter:
init(click_fn, move_fn, wheel_fn)
destroy()
enabled
More
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