typedef struct {
int x, y;
int code;
- int active;
+ unsigned int active:1;
+ unsigned int tested:1;
const char *name;
} key_item;
static key_item key_items[] =
{
- { 66, 26, KEY_1, 0, "1" },
- { 133, 26, KEY_2, 0, "2" },
- { 200, 26, KEY_3, 0, "3" },
- { 266, 26, KEY_4, 0, "4" },
- { 333, 26, KEY_5, 0, "5" },
- { 400, 26, KEY_6, 0, "6" },
- { 466, 26, KEY_7, 0, "7" },
- { 533, 26, KEY_8, 0, "8" },
- { 600, 26, KEY_9, 0, "9" },
- { 666, 26, KEY_0, 0, "0" },
- { 733, 26, KEY_BACKSPACE, 0, "DEL" },
+ { 66, 26, KEY_1, 0, 0, "1" },
+ { 133, 26, KEY_2, 0, 0, "2" },
+ { 200, 26, KEY_3, 0, 0, "3" },
+ { 266, 26, KEY_4, 0, 0, "4" },
+ { 333, 26, KEY_5, 0, 0, "5" },
+ { 400, 26, KEY_6, 0, 0, "6" },
+ { 466, 26, KEY_7, 0, 0, "7" },
+ { 533, 26, KEY_8, 0, 0, "8" },
+ { 600, 26, KEY_9, 0, 0, "9" },
+ { 666, 26, KEY_0, 0, 0, "0" },
+ { 733, 26, KEY_BACKSPACE, 0, 0, "DEL" },
//
- { 10, 55, KEY_RIGHTSHIFT,0, "L" },
- { 10, 75, KEY_KPPLUS, 0, "L2" },
- { 758, 55, KEY_RIGHTCTRL, 0, "R" },
- { 758, 75, KEY_KPMINUS, 0, "R2" },
- { 10, 220, KEY_POWER, 0, "POWER" },
- { 10, 240, KEY_COFFEE, 0, "HOLD" },
+ { 10, 55, KEY_RIGHTSHIFT,0, 0, "L" },
+ { 10, 75, KEY_KPPLUS, 0, 0, "L2" },
+ { 758, 55, KEY_RIGHTCTRL, 0, 0, "R" },
+ { 758, 75, KEY_KPMINUS, 0, 0, "R2" },
+ { 10, 220, KEY_POWER, 0, 0, "POWER" },
+ { 10, 240, KEY_COFFEE, 0, 0, "HOLD" },
//
- { 130, 94, KEY_UP, 0, "U" },
- { 80, 163, KEY_LEFT, 0, "L" },
- { 180, 163, KEY_RIGHT, 0, "R" },
- { 130, 232, KEY_DOWN, 0, "D" },
- { 376, 94, KEY_LEFTALT,0, "ALT" },
- { 368, 163, KEY_LEFTCTRL,0,"CTRL" },
- { 368, 232, KEY_MENU, 0, "MENU" },
- { 700, 94, KEY_PAGEUP, 0, "1" },
- { 650, 163, KEY_HOME, 0, "4" },
- { 750, 163, KEY_END, 0, "2" },
- { 700, 232, KEY_PAGEDOWN,0, "3" },
+ { 130, 94, KEY_UP, 0, 0, "U" },
+ { 80, 163, KEY_LEFT, 0, 0, "L" },
+ { 180, 163, KEY_RIGHT, 0, 0, "R" },
+ { 130, 232, KEY_DOWN, 0, 0, "D" },
+ { 376, 94, KEY_LEFTALT,0, 0, "ALT" },
+ { 368, 163, KEY_LEFTCTRL,0,0, "CTRL" },
+ { 368, 232, KEY_MENU, 0, 0, "MENU" },
+ { 700, 94, KEY_PAGEUP, 0, 0, "Y" },
+ { 650, 163, KEY_HOME, 0, 0, "A" },
+ { 750, 163, KEY_END, 0, 0, "B" },
+ { 700, 232, KEY_PAGEDOWN,0,0, "X" },
//
- { 92, 300, KEY_Q, 0, "Q" },
- { 158, 300, KEY_W, 0, "W" },
- { 225, 300, KEY_E, 0, "E" },
- { 292, 300, KEY_R, 0, "R" },
- { 358, 300, KEY_T, 0, "T" },
- { 425, 300, KEY_Y, 0, "Y" },
- { 492, 300, KEY_U, 0, "U" },
- { 558, 300, KEY_I, 0, "I" },
- { 625, 300, KEY_O, 0, "O" },
- { 692, 300, KEY_P, 0, "P" },
+ { 92, 300, KEY_Q, 0, 0, "Q" },
+ { 158, 300, KEY_W, 0, 0, "W" },
+ { 225, 300, KEY_E, 0, 0, "E" },
+ { 292, 300, KEY_R, 0, 0, "R" },
+ { 358, 300, KEY_T, 0, 0, "T" },
+ { 425, 300, KEY_Y, 0, 0, "Y" },
+ { 492, 300, KEY_U, 0, 0, "U" },
+ { 558, 300, KEY_I, 0, 0, "I" },
+ { 625, 300, KEY_O, 0, 0, "O" },
+ { 692, 300, KEY_P, 0, 0, "P" },
//
- { 30, 369, KEY_LEFTSHIFT, 0, "SHIFT" },
- { 133, 369, KEY_A, 0, "A" },
- { 200, 369, KEY_S, 0, "S" },
- { 266, 369, KEY_D, 0, "D" },
- { 333, 369, KEY_F, 0, "F" },
- { 400, 369, KEY_G, 0, "G" },
- { 466, 369, KEY_H, 0, "H" },
- { 533, 369, KEY_J, 0, "J" },
- { 600, 369, KEY_K, 0, "K" },
- { 666, 369, KEY_L, 0, "L" },
- { 710, 369, KEY_ENTER, 0, "ENTER" },
+ { 30, 369, KEY_LEFTSHIFT, 0, 0, "SHIFT" },
+ { 133, 369, KEY_A, 0, 0, "A" },
+ { 200, 369, KEY_S, 0, 0, "S" },
+ { 266, 369, KEY_D, 0, 0, "D" },
+ { 333, 369, KEY_F, 0, 0, "F" },
+ { 400, 369, KEY_G, 0, 0, "G" },
+ { 466, 369, KEY_H, 0, 0, "H" },
+ { 533, 369, KEY_J, 0, 0, "J" },
+ { 600, 369, KEY_K, 0, 0, "K" },
+ { 666, 369, KEY_L, 0, 0, "L" },
+ { 710, 369, KEY_ENTER, 0, 0, "ENTER" },
//
- { 25, 437, KEY_COMMA, 0, "," },
- { 92, 437, KEY_DOT, 0, "." },
- { 158, 437, KEY_Z, 0, "Z" },
- { 225, 437, KEY_X, 0, "X" },
- { 292, 437, KEY_C, 0, "C" },
- { 358, 437, KEY_V, 0, "V" },
- { 425, 437, KEY_B, 0, "B" },
- { 492, 437, KEY_N, 0, "N" },
- { 558, 437, KEY_M, 0, "M" },
- { 625, 437, KEY_SPACE, 0, "SPACE" },
- { 758, 437, KEY_FN, 0, "Fn" },
+ { 25, 437, KEY_COMMA, 0, 0, "," },
+ { 92, 437, KEY_DOT, 0, 0, "." },
+ { 158, 437, KEY_Z, 0, 0, "Z" },
+ { 225, 437, KEY_X, 0, 0, "X" },
+ { 292, 437, KEY_C, 0, 0, "C" },
+ { 358, 437, KEY_V, 0, 0, "V" },
+ { 425, 437, KEY_B, 0, 0, "B" },
+ { 492, 437, KEY_N, 0, 0, "N" },
+ { 558, 437, KEY_M, 0, 0, "M" },
+ { 625, 437, KEY_SPACE, 0, 0, "SPACE" },
+ { 758, 437, KEY_FN, 0, 0, "Fn" },
};
#define KI_COUNT (sizeof(key_items) / sizeof(key_items[0]))
static void redraw_nubs(unsigned short *fb, int x1, int y1, int x2, int y2)
{
+ static int range_hit;
char buff[32];
int y;
text_out16(fb + 200, 32*2 + x1/8, 32*2 + y1/8, 0x001f, "@");
text_out16(fb + 450, 32*2 + x2/8, 32*2 + y2/8, 0x001f, "@");
- snprintf(buff, sizeof(buff), "%2i, %2i", x1/8, y1/8);
- text_out16_small(fb, 245, 130, 0x7bef, buff);
- snprintf(buff, sizeof(buff), "%2i, %2i", x2/8, y2/8);
- text_out16_small(fb, 495, 130, 0x7bef, buff);
+ if (x1 == -256) range_hit |= 0x01;
+ if (x1 == 256) range_hit |= 0x02;
+ if (y1 == -256) range_hit |= 0x04;
+ if (y1 == 256) range_hit |= 0x08;
+ if (x2 == -256) range_hit |= 0x10;
+ if (x2 == 256) range_hit |= 0x20;
+ if (y2 == -256) range_hit |= 0x40;
+ if (y2 == 256) range_hit |= 0x80;
+
+ snprintf(buff, sizeof(buff), "%3i", x1/8);
+ text_out16_small(fb, 235, 130, (range_hit & 0x03) == 0x03 ? 0xce6f : 0x7bef, buff);
+ snprintf(buff, sizeof(buff), "%3i", y1/8);
+ text_out16_small(fb, 270, 130, (range_hit & 0x0c) == 0x0c ? 0xce6f : 0x7bef, buff);
+
+ snprintf(buff, sizeof(buff), "%3i", x2/8);
+ text_out16_small(fb, 485, 130, (range_hit & 0x30) == 0x30 ? 0xce6f : 0x7bef, buff);
+ snprintf(buff, sizeof(buff), "%3i", y2/8);
+ text_out16_small(fb, 520, 130, (range_hit & 0xc0) == 0xc0 ? 0xce6f : 0x7bef, buff);
}
static void redraw_keys_lid(unsigned short *fb)
key = &key_items[i];
text_out16(fb, key->x, key->y,
- key->active ? 0x07e0 : 0x7bef, key->name);
+ key->active ? 0x07e0 : (key->tested ? 0xce6f : 0x7bef),
+ key->name);
}
text_out16(fb, 10, 260, lid_closed ? 0x07e0 : 0x7bef, "LID");
}
else
{
- key->active = val;
+ key->active = !!val;
+ key->tested |= !!val;
printf("%c %s\n", val ? '+' : '-', key->name);
}
}