Skip to content

Commit

Permalink
keychron/c2_pro/ansi/white: Fix column 19 in the custom matrix (qmk#2…
Browse files Browse the repository at this point in the history
…1805)

Although `keychron/c2_pro/ansi/rgb` and `keychron/c2_pro/ansi/white` use
the same custom matrix code, the matrix layouts are slightly different;
in particular, only the `keychron/c2_pro/ansi/white` board actually uses
column 19.  However, the handling of column 19 in the custom matrix code
was broken, therefore that column did not work.

Looks like the custom matrix code assumes that `SHIFT_COL_END` refers to
the last column connected to the shift register, and not to the column
past that; so the value of `SHIFT_COL_END` needs to be changed from 19
to 18 (columns 11...18 are connected to the shift register, and column
19 is connected to the C14 pin).

Also the code which was determining `SIZE_T` and `UNSELECT_ALL_COL` had
an off-by-one bug when counting the required number of bits (again due
to the confusion on the `SHIFT_COL_END` meaning); this had been fixed
too (the actual behavior of that part of the code did not change,
because both the old and the new version select the 8 bit variant).
  • Loading branch information
sigprof authored Aug 23, 2023
1 parent c2b8375 commit b1fbfaa
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
2 changes: 1 addition & 1 deletion keyboards/keychron/c2_pro/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@
#define HC595_SHCP A1
#define HC595_DS C15
#define SHIFT_COL_START 11
#define SHIFT_COL_END 19
#define SHIFT_COL_END 18
4 changes: 2 additions & 2 deletions keyboards/keychron/c2_pro/matrix.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@
#endif

#if defined(SHIFT_COL_START) && defined(SHIFT_COL_END)
# if ((SHIFT_COL_END - SHIFT_COL_START) > 16)
# if ((SHIFT_COL_END - SHIFT_COL_START + 1) > 16)
# define SIZE_T uint32_t
# define UNSELECT_ALL_COL 0xFFFFFFFF
# elif ((SHIFT_COL_END - SHIFT_COL_START) > 8)
# elif ((SHIFT_COL_END - SHIFT_COL_START + 1) > 8)
# define SIZE_T uint16_t
# define UNSELECT_ALL_COL 0xFFFF
# else
Expand Down

0 comments on commit b1fbfaa

Please sign in to comment.