+/* diode directions */
+#define COL2ROW 0
+#define ROW2COL 1
+/* I/O pins */
+#define B0 { .input_addr = 3, .bit = 0 }
+#define B1 { .input_addr = 3, .bit = 1 }
+#define B2 { .input_addr = 3, .bit = 2 }
+#define B3 { .input_addr = 3, .bit = 3 }
+#define B4 { .input_addr = 3, .bit = 4 }
+#define B5 { .input_addr = 3, .bit = 5 }
+#define B6 { .input_addr = 3, .bit = 6 }
+#define B7 { .input_addr = 3, .bit = 7 }
+#define C0 { .input_addr = 6, .bit = 0 }
+#define C1 { .input_addr = 6, .bit = 1 }
+#define C2 { .input_addr = 6, .bit = 2 }
+#define C3 { .input_addr = 6, .bit = 3 }
+#define C4 { .input_addr = 6, .bit = 4 }
+#define C5 { .input_addr = 6, .bit = 5 }
+#define C6 { .input_addr = 6, .bit = 6 }
+#define C7 { .input_addr = 6, .bit = 7 }
+#define D0 { .input_addr = 9, .bit = 0 }
+#define D1 { .input_addr = 9, .bit = 1 }
+#define D2 { .input_addr = 9, .bit = 2 }
+#define D3 { .input_addr = 9, .bit = 3 }
+#define D4 { .input_addr = 9, .bit = 4 }
+#define D5 { .input_addr = 9, .bit = 5 }
+#define D6 { .input_addr = 9, .bit = 6 }
+#define D7 { .input_addr = 9, .bit = 7 }
+#define E0 { .input_addr = 0xC, .bit = 0 }
+#define E1 { .input_addr = 0xC, .bit = 1 }
+#define E2 { .input_addr = 0xC, .bit = 2 }
+#define E3 { .input_addr = 0xC, .bit = 3 }
+#define E4 { .input_addr = 0xC, .bit = 4 }
+#define E5 { .input_addr = 0xC, .bit = 5 }
+#define E6 { .input_addr = 0xC, .bit = 6 }
+#define E7 { .input_addr = 0xC, .bit = 7 }
+#define F0 { .input_addr = 0xF, .bit = 0 }
+#define F1 { .input_addr = 0xF, .bit = 1 }
+#define F2 { .input_addr = 0xF, .bit = 2 }
+#define F3 { .input_addr = 0xF, .bit = 3 }
+#define F4 { .input_addr = 0xF, .bit = 4 }
+#define F5 { .input_addr = 0xF, .bit = 5 }
+#define F6 { .input_addr = 0xF, .bit = 6 }
+#define F7 { .input_addr = 0xF, .bit = 7 }