Synopsis #

Header: fxcg/keyboard.h
Syscall index: 0x0D39
Function signature: void PRGM_GetKey_OS(unsigned char* p)

Reads the keyboard input without blocking.

Parameters #

  • p - pointer to 12 bytes unsigned char array that will receive the keyboard status.

Returns #

0 if AC/on is pressed, 1 otherwise.

Comments #

This syscall calls GetKeyWait_OS with KEYWAIT_HALTOFF_TIMEROFF as parameter, hence why it doesn’t block.

p receives the keyboard status as a BCD-coded value. If no key is pressed, the BCD value is 0. If the AC/on key is pressed, the BCD value will have exponent 0xF00 and first nibble of the mantissa 1. Otherwise, it the BCD value will contain the key matrix-code, with the row number decremented by 1 to prevent the occurrence of an invalid BCD digit.

To yield the same function result as legacy syscall PRGM_GetKey, one can use the PRGM_GetKey routine included in libfxcg in <fxcg/keyboard.h>.