show keys that have been checked
authorGrazvydas Ignotas <notasas@gmail.com>
Sun, 16 Jan 2011 17:46:04 +0000 (19:46 +0200)
committerGrazvydas Ignotas <notasas@gmail.com>
Wed, 9 Feb 2011 14:05:43 +0000 (16:05 +0200)
op_test_inputs.c

index a4af31a..6db1b07 100644 (file)
 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]))
@@ -193,6 +194,7 @@ static void text_out16_small(unsigned short *fb, int x, int y, unsigned short co
 
 static void redraw_nubs(unsigned short *fb, int x1, int y1, int x2, int y2)
 {
+       static int range_hit;
        char buff[32];
        int y;
 
@@ -207,10 +209,24 @@ static void redraw_nubs(unsigned short *fb, int x1, int y1, int x2, int y2)
        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)
@@ -223,7 +239,8 @@ 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");
@@ -249,7 +266,8 @@ static void set_key(int code, int val)
        }
        else
        {
-               key->active = val;
+               key->active = !!val;
+               key->tested |= !!val;
                printf("%c %s\n", val ? '+' : '-', key->name);
        }
 }