Gt911 Register: Map
| Addr | Field | Range | Description | |------|-------|-------|-------------| | 0x8040 | Config Version | 0x01–0xFF | Config structure version | | 0x8041 | X Output Max (LSB) | 0–255 | Touch panel X resolution (low byte) | | 0x8042 | X Output Max (MSB) | 0–255 | High byte | | 0x8043 | Y Output Max (LSB) | 0–255 | Touch panel Y resolution (low byte) | | 0x8044 | Y Output Max (MSB) | 0–255 | High byte | | 0x8045 | Touch Number | 1–5 | Max simultaneous touches | | 0x8046 | Module Switch 1 | Bitfield | Interrupt/gesture modes | | 0x8047 | Module Switch 2 | Bitfield | Noise reduction, glove mode | | 0x8048 | Touch Threshold | 0–255 | Touch activation threshold (default 0x28) | | 0x8049 | Touch Release Threshold | 0–255 | Release detection threshold | | 0x804A | Sensitivity Factor | 0–255 | Analog gain (default 0x32) | | 0x804B | Noise Reduction | 0–255 | Filter level | | 0x804D | Key Threshold | 0–255 | For physical keys (if used) | | 0x8050 | Refresh Rate | 0–255 | Scan rate (Hz) | | 0x8051 | Gesture Enable | Bitfield | Enable/disable gestures | | ... | ... | ... | Extended config (up to 184 bytes) |
uint8_t status = i2c_read_byte(0x8148); if (status & 0x80) uint8_t touches = i2c_read_byte(0x8149); for (int i = 0; i < touches; i++) i2c_read_byte(base+1); y = i2c_read_byte(base+4) << 8 i2c_write_byte(0x814E, 0x00); // clear status gt911 register map

Amazing, thank you
Ya Ali Madad, where and when was this pic taken? Would anybody know who is sitting to the left of Sha Karim? Your help will be very much appreciated. Thank you kindly 🙏