29 lines
893 B
C
29 lines
893 B
C
|
#include <stdint.h>
|
||
|
#include <SFML/Window.h>
|
||
|
|
||
|
extern uint8_t systemRegister;
|
||
|
|
||
|
static uint8_t keyboardResult;
|
||
|
|
||
|
static sfKeyCode scanMatrix[48] = {
|
||
|
sfKeyNum1, sfKeyNum2, sfKeyNum3, sfKeyNum4, sfKeyNum5, sfKeyNum6, sfKeyNum7, sfKeyNum8,
|
||
|
sfKeyQ, sfKeyW, sfKeyE, sfKeyR, sfKeyT, sfKeyY, sfKeyU, sfKeyI,
|
||
|
sfKeyA, sfKeyS, sfKeyD, sfKeyF, sfKeyG, sfKeyH, sfKeyJ, sfKeyK,
|
||
|
sfKeyZ, sfKeyX, sfKeyC, sfKeyV, sfKeyB, sfKeyN, sfKeyM, sfKeyComma,
|
||
|
sfKeyNum9, sfKeyNum0, sfKeyL, sfKeyO, sfKeyP, sfKeyPeriod,sfKeyEnter, sfKeyBackspace,
|
||
|
sfKeyLShift,sfKeyLControl, sfKeyLAlt, sfKeySpace, sfKeyUp, sfKeyRight, sfKeyDown, sfKeyLeft,
|
||
|
};
|
||
|
|
||
|
|
||
|
void scanKeyboard(const sfKeyCode key){
|
||
|
keyboardResult = 0;
|
||
|
|
||
|
for (int i = 0; i < 8; i++) {
|
||
|
if (key == scanMatrix[i + (((systemRegister & 0x07) % 6) * 8)]){
|
||
|
keyboardResult |= (0x80 >> i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
keyboardResult ^= 0xFF;
|
||
|
}
|