Hi matze1,
solange eine Taste gedrückt wird, enthält pressedKeyNumber die Nummer der Taste und releasedKeyNumber 0.
Solange keine Taste gedrückt wird, enthält pressedKeyNumber 0 und releasedKeyNumber die Nummer der zuletzt gedrückten Taste.

Eine Abfrageschleife kann z.B. so aussehen:
Code:
uint8_t last_releasedKeyNumber;

/**
 * M32 key state changed
 */
void keyStateChanged(void)
{
	writeString_P_WIFI("\n\n===> key state changed!!!\n"); 
	writeString_P_WIFI("ADC_KEYPAD value: ");
	writeInteger_WIFI(adcKeypad, DEC);
	writeChar_WIFI('\n');
	writeString_P_WIFI("Key is pressed:   ");
	if(interrupt_M32status.keypressed) writeString_P_WIFI("Yes\n");
	else writeString_P_WIFI("No\n");
	writeString_P_WIFI("[Last rel. key number: ");
	writeInteger_WIFI(last_releasedKeyNumber, DEC);
	writeString_P_WIFI("]\nReleased key number:   ");
	writeInteger_WIFI(releasedKeyNumber, DEC);
	writeChar_WIFI('\n');
	last_releasedKeyNumber = releasedKeyNumber;
	writeString_P_WIFI("Pressed key number:    ");
	writeInteger_WIFI(pressedKeyNumber, DEC);
	writeChar_WIFI('\n');
	writeChar_WIFI('\n');
}

	uint8_t regM32Buf[4];

	while(true) 
	{
		task_checkPCINT15();	// RP6 M32 main task
		if(interrupt_M32status.keyChange)
		{
			I2CTWI_readRegisters(I2C_RP6_M32_ADR, I2C_REG_ADC_KEYPAD_L, regM32Buf, 4);
			adcKeypad = regM32Buf[0] + (regM32Buf[1]<<8);
			releasedKeyNumber = regM32Buf[2];
			pressedKeyNumber = regM32Buf[3];
			keyStateChanged();
		}
		task_I2CTWI();
	}