displaywriter: added support for xwhatsit controller, not tested
[jackhill/qmk/firmware.git] / keyboards / xwhatsit / post_config.h
index 69eb150..d2e2930 100644 (file)
@@ -71,7 +71,7 @@
 
 #    define CAPSENSE_CONDUCTIVE_PLASTIC_IS_PULLED_UP_ON_KEYPRESS
 
-#elif defined(CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F)
+#elif defined(CONTROLLER_IS_XWHATSIT_MODEL_F_OR_WCASS_MODEL_F) || defined(CONTROLLER_IS_XWHATSIT_DISPLAYWRITER)
 
 #    define CAPSENSE_DAC_SCLK   B1
 #    define CAPSENSE_DAC_DIN    B2
 #    define CAPSENSE_READ_ROWS_OUTPUT_CONSTRAINTS [dest_row_1] "=&r" (dest_row_1), [dest_row_2] "=&r" (dest_row_2)
 #    define CAPSENSE_READ_ROWS_INPUT_CONSTRAINTS [ioreg_row_1] "I" (CAPSENSE_READ_ROWS_PIN_1), [ioreg_row_2] "I" (CAPSENSE_READ_ROWS_PIN_2)
 #    define CAPSENSE_READ_ROWS_LOCAL_VARS uint8_t dest_row_1, dest_row_2
-#    define CAPSENSE_READ_ROWS_VALUE ((dest_row_1 >> 4) | (dest_row_2 << 4))
 #    define CAPSENSE_READ_ROWS_EXTRACT_FROM_ARRAY do { dest_row_1 = array[p0++]; dest_row_2 = array[p0++]; } while (0)
 
-#    define CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(row) (7-(row))
-#    define CAPSENSE_PHYSICAL_ROW_TO_KEYMAP_ROW(row) (7-(row))
 #    ifndef CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL
 #        define CAPSENSE_KEYMAP_COL_TO_PHYSICAL_COL(col) (col)
 #    endif
 
-#    define CAPSENSE_CONDUCTIVE_PLASTIC_IS_PUSHED_DOWN_ON_KEYPRESS
+#    if defined(CONTROLLER_IS_XWHATSIT_DISPLAYWRITER)
+#        define CAPSENSE_CONDUCTIVE_PLASTIC_IS_PULLED_UP_ON_KEYPRESS
+#        define CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(row) (row)
+#        define CAPSENSE_PHYSICAL_ROW_TO_KEYMAP_ROW(row) (row)
+#        define CAPSENSE_READ_ROWS_VALUE ( \
+                    (((dest_row_1 >> 4) & 1) << (7-1)) | \
+                    (((dest_row_1 >> 5) & 1) << (5-1)) | \
+                    (((dest_row_1 >> 6) & 1) << (3-1)) | \
+                    (((dest_row_1 >> 7) & 1) << (1-1)) | \
+                    (((dest_row_2 >> 0) & 1) << (2-1)) | \
+                    (((dest_row_2 >> 1) & 1) << (4-1)) | \
+                    (((dest_row_2 >> 2) & 1) << (6-1)) | \
+                    (((dest_row_2 >> 3) & 1) << (8-1)))
+#    else
+#        define CAPSENSE_CONDUCTIVE_PLASTIC_IS_PUSHED_DOWN_ON_KEYPRESS
+#        define CAPSENSE_KEYMAP_ROW_TO_PHYSICAL_ROW(row) (7-(row))
+#        define CAPSENSE_PHYSICAL_ROW_TO_KEYMAP_ROW(row) (7-(row))
+#        define CAPSENSE_READ_ROWS_VALUE ((dest_row_1 >> 4) | (dest_row_2 << 4))
+#    endif
 
 #elif defined(CONTROLLER_IS_THROUGH_HOLE_BEAMSPRING) || defined(CONTROLLER_IS_THROUGH_HOLE_MODEL_F)