in libs/hw---rpi/keys.cpp [87:120]
static int isPressed(const char *name, int keyPos) {
static uint64_t parsedPin[(int)Key::EXIT + 1];
if (useScanCodes) {
auto pins = getConfigInts(name);
for (int i = 0; pins[i] != ENDMARK; ++i) {
auto p = pins[i];
if (p < (int)sizeof(pressedScanCodes) && pressedScanCodes[p])
return 1;
}
return 0;
}
if (parsedPin[keyPos] == 0) {
auto pins = getConfigInts(name);
for (int i = 0; pins[i] != ENDMARK; ++i) {
auto p = pins[i];
auto mask = 1ULL << p;
parsedPin[keyPos] |= mask;
pinMode(p, INPUT);
pullUpDnControl(p, PUD_UP);
}
// make sure it's non-zero
parsedPin[keyPos] |= 1ULL << 63;
}
for (int i = 0; i < 63; ++i) {
if ((parsedPin[keyPos] >> i) & 1)
if (!digitalRead(i))
return 1;
}
return 0;
}