You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

514 lines
16 KiB

Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
Handwired/Dactyl keyboard (#2058) * Copy the ergodox_ez code to handwired/dactyl Differences from the Ergodox: * Use QMK_SUBPROJECT_H instead of QMK_KEYBOARD_H, since it's under handwired * Omitted several keymaps. They'll eventually be broken (since the Dactyl has fewer keys), and I don't want to try to fix them. * Omitted the keymap images for the default layout, since they depict a different keyboard. * Everything that said Ergodox now says Dactyl, naturally. * [whitespace] Delete trailing whitespace My editor does this automatically so it's just gonna keep cropping up... * Cut the dactyl down to the right number of columns (Remember, throughout matrix.c, everything called "row" is really a column, and vice-versa). * Remove LED-related code * Tighten up the Dactyl's build options * Whitespace cleanup in twimaster.c * Hardtabs -> spaces * No more trailing whitespace * Typo fix * Correct the CPU frequency units The Teensy's CPU definitely doesn't run at 16 petahertz... * Restore access to ONEHAND_ENABLE I turned it off in 26d47cb42622d990a7c3335e7fcc151aa3edfbf0 while desperately debugging; I just wanted to ensure it wasn't causing the problem I was seeing. It was not, in fact, causing the problem, so it's back. Also fixed the swap matrix in dactyl.c, since it still referred to columns that exist in the Ergodox but not the Dactyl. * Clearer phrasing about TWI's effect on scan rate * Fix up the Dactyl's firmware-loading instructions Sadly, the Dactyl has no hole for the onboard reset button. * Dvorak keymap for the Dactyl * The Erincalling Layout * Erincalling layout: Add a := key I've been working in Go, which uses := a lot, and it's awkward to type in this layout. * Dactyl README: link to the dactyl-keyboard repo * Add a missing copyright line I don't know how much this matters? Honestly, it's enough for me that my name is on the git commit. But hey, let's be consistent until there's a specific reason not to be, right? * Dactyl: remove commented-out code I hate it I hate it I hate it There's not even any information about what it was trying to do!!!! >:( * Add a note about the row/column ridiculousness * [whitespace] realign some constants * Don't claim B4 is tied to VCC It doesn't matter at all? I honestly don't know what the reason ever was. It looks like it dates back to the original ErgoDox and I've never seen one sentence about the purpose. I've been skipping that wire for some time, and I promise it works fine. * Dactyl keymaps: Send RALT for right-hand alt key Not terribly important but I just like things tidy OK * typo fix * Refer to "dactyl.h" explicitly QMK_SUBPROJECT_H has been working locally, but fails in CI. Strange! * Dactyl: Don't use QMK_SUBPROJECT_H at all It's still breaking in CI, even though it was a never a problem locally.
6 years ago
Bring dactyl/matrix.c in line with quantum/matrix.c (#2613) * Use the new debounce algorithm in dactyl/matrix.c [#2065] This incorporates the fixed/optimized debounce code added to quantum/matrix.c in: * 508eddf8ba8548d3f71e1c09a404839beb49f45c * 4c6960835c0a6e29670dabdc27117d7d3c7f99f5 * 32f88c07173b795c6981c779057dceba00aeb1cb * f4030289744fc6dc82dd85c955070c0845813cc5 * a06115df19a74d39b08758472b221e630c3680d3 * Fix the row/column swap in dactyl [#2065] With a column-driven keyboard, reading from the mcp23081 returns a column-state, which takes some extra work to translate into the row-state used in the actual matrix. The ergodox_ez code sidestepped that problem by calling rows "columns" and columns "rows." With this change, the dactyl now calls rows "rows" and columns "columns." * Cleanup: variable names, documentation [#2065] * Support MATRIX_MASKED in dactyl/matrix.c [#2065] * Only unselect one col in unselect_col [#2065] Bonus: saves one i2c transaction per matrix_scan! * Implement COL2ROW in dactyl/matrix.c [#2065] * Fix a typo in dactyl/matrix.c This entirely doesn't matter. The PORT values are set during init_keyboard and never change. They're repeatedly set to the same thing. These PORT lines shouldn't even exist, but since they do, they should at least look right. * Implement COL_PINS/ROW_PINS for dactyl [#2065] * Rename "mcp23018" to "expander" [#2065] I honestly don't know whether/how well this code works with other I/O expanders, but at least in theory, it should be generic enough to work with others. Given that, the variable names shouldn't refer to a specific model of expander. * Remove matrix_power_up from dactyl/matrix.c [#2065] It's commented out in quantum/matrix.c, and the dactyl has no power up/down behavior beyond being unplugged (which goes to matrix_init), so there's no sense keeping it around. * Only initialize expander_input_mask once [#2065] ...and rename input_mask to expander_input_mask, since now that it isn't scoped to init_expander it isn't clear that it's only for the expander.
6 years ago
  1. /*
  2. Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
  3. Copyright 2017 Erin Call <hello@erincall.com>
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 2 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. #include <stdint.h>
  16. #include <stdbool.h>
  17. #include <avr/io.h>
  18. #include "wait.h"
  19. #include "action_layer.h"
  20. #include "print.h"
  21. #include "debug.h"
  22. #include "util.h"
  23. #include "matrix.h"
  24. #include "dactyl.h"
  25. #include "i2cmaster.h"
  26. #include "timer.h"
  27. /* Set 0 if debouncing isn't needed */
  28. #ifndef DEBOUNCE
  29. # define DEBOUNCE 5
  30. #endif
  31. #if (DEBOUNCE > 0)
  32. static uint16_t debouncing_time;
  33. static bool debouncing = false;
  34. #endif
  35. #ifdef MATRIX_MASKED
  36. extern const matrix_row_t matrix_mask[];
  37. #endif
  38. #if (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW)
  39. static const uint8_t onboard_row_pins[MATRIX_ROWS] = MATRIX_ONBOARD_ROW_PINS;
  40. static const uint8_t onboard_col_pins[MATRIX_COLS] = MATRIX_ONBOARD_COL_PINS;
  41. static const bool col_expanded[MATRIX_COLS] = COL_EXPANDED;
  42. #endif
  43. /* matrix state(1:on, 0:off) */
  44. static matrix_row_t matrix[MATRIX_ROWS];
  45. static matrix_row_t matrix_debouncing[MATRIX_ROWS];
  46. #if (DIODE_DIRECTION == COL2ROW)
  47. static const uint8_t expander_col_pins[MATRIX_COLS] = MATRIX_EXPANDER_COL_PINS;
  48. static void init_cols(void);
  49. static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row);
  50. static void unselect_rows(void);
  51. static void select_row(uint8_t row);
  52. static void unselect_row(uint8_t row);
  53. #elif (DIODE_DIRECTION == ROW2COL)
  54. static const uint8_t expander_row_pins[MATRIX_ROWS] = MATRIX_EXPANDER_ROW_PINS;
  55. static void init_rows(void);
  56. static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col);
  57. static void unselect_cols(void);
  58. static void select_col(uint8_t col);
  59. static void unselect_col(uint8_t col);
  60. #endif
  61. static uint8_t expander_reset_loop;
  62. uint8_t expander_status;
  63. uint8_t expander_input_pin_mask;
  64. bool i2c_initialized = false;
  65. #define ROW_SHIFTER ((matrix_row_t)1)
  66. __attribute__ ((weak))
  67. void matrix_init_user(void) {}
  68. __attribute__ ((weak))
  69. void matrix_scan_user(void) {}
  70. __attribute__ ((weak))
  71. void matrix_init_kb(void) {
  72. matrix_init_user();
  73. }
  74. __attribute__ ((weak))
  75. void matrix_scan_kb(void) {
  76. matrix_scan_user();
  77. }
  78. inline
  79. uint8_t matrix_rows(void)
  80. {
  81. return MATRIX_ROWS;
  82. }
  83. inline
  84. uint8_t matrix_cols(void)
  85. {
  86. return MATRIX_COLS;
  87. }
  88. void matrix_init(void)
  89. {
  90. init_expander();
  91. #if (DIODE_DIRECTION == COL2ROW)
  92. unselect_rows();
  93. init_cols();
  94. #elif (DIODE_DIRECTION == ROW2COL)
  95. unselect_cols();
  96. init_rows();
  97. #endif
  98. // initialize matrix state: all keys off
  99. for (uint8_t i=0; i < MATRIX_ROWS; i++) {
  100. matrix[i] = 0;
  101. matrix_debouncing[i] = 0;
  102. }
  103. matrix_init_quantum();
  104. }
  105. void init_expander(void) {
  106. if (! i2c_initialized) {
  107. i2c_init();
  108. wait_us(1000000);
  109. }
  110. if (! expander_input_pin_mask) {
  111. #if (DIODE_DIRECTION == COL2ROW)
  112. for (int col = 0; col < MATRIX_COLS; col++) {
  113. if (col_expanded[col]) {
  114. expander_input_pin_mask |= (1 << expander_col_pins[col]);
  115. }
  116. }
  117. #elif (DIODE_DIRECTION == ROW2COL)
  118. for (int row = 0; row < MATRIX_ROWS; row++) {
  119. expander_input_pin_mask |= (1 << expander_row_pins[row]);
  120. }
  121. #endif
  122. }
  123. expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out;
  124. expander_status = i2c_write(IODIRA); if (expander_status) goto out;
  125. /*
  126. Pin direction and pull-up depends on both the diode direction
  127. and on whether the column register is GPIOA or GPIOB
  128. +-------+---------------+---------------+
  129. | | ROW2COL | COL2ROW |
  130. +-------+---------------+---------------+
  131. | GPIOA | input, output | output, input |
  132. +-------+---------------+---------------+
  133. | GPIOB | output, input | input, output |
  134. +-------+---------------+---------------+
  135. */
  136. #if (EXPANDER_COL_REGISTER == GPIOA)
  137. # if (DIODE_DIRECTION == COL2ROW)
  138. expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out;
  139. expander_status = i2c_write(0); if (expander_status) goto out;
  140. # elif (DIODE_DIRECTION == ROW2COL)
  141. expander_status = i2c_write(0); if (expander_status) goto out;
  142. expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out;
  143. # endif
  144. #elif (EXPANDER_COL_REGISTER == GPIOB)
  145. # if (DIODE_DIRECTION == COL2ROW)
  146. expander_status = i2c_write(0); if (expander_status) goto out;
  147. expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out;
  148. # elif (DIODE_DIRECTION == ROW2COL)
  149. expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out;
  150. expander_status = i2c_write(0); if (expander_status) goto out;
  151. # endif
  152. #endif
  153. i2c_stop();
  154. // set pull-up
  155. // - unused : off : 0
  156. // - input : on : 1
  157. // - driving : off : 0
  158. expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out;
  159. expander_status = i2c_write(GPPUA); if (expander_status) goto out;
  160. #if (EXPANDER_COL_REGISTER == GPIOA)
  161. # if (DIODE_DIRECTION == COL2ROW)
  162. expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out;
  163. expander_status = i2c_write(0); if (expander_status) goto out;
  164. # elif (DIODE_DIRECTION == ROW2COL)
  165. expander_status = i2c_write(0); if (expander_status) goto out;
  166. expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out;
  167. # endif
  168. #elif (EXPANDER_COL_REGISTER == GPIOB)
  169. # if (DIODE_DIRECTION == COL2ROW)
  170. expander_status = i2c_write(0); if (expander_status) goto out;
  171. expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out;
  172. # elif (DIODE_DIRECTION == ROW2COL)
  173. expander_status = i2c_write(expander_input_pin_mask); if (expander_status) goto out;
  174. expander_status = i2c_write(0); if (expander_status) goto out;
  175. # endif
  176. #endif
  177. out:
  178. i2c_stop();
  179. }
  180. uint8_t matrix_scan(void)
  181. {
  182. if (expander_status) { // if there was an error
  183. if (++expander_reset_loop == 0) {
  184. // since expander_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
  185. // this will be approx bit more frequent than once per second
  186. print("trying to reset expander\n");
  187. init_expander();
  188. if (expander_status) {
  189. print("left side not responding\n");
  190. } else {
  191. print("left side attached\n");
  192. }
  193. }
  194. }
  195. #if (DIODE_DIRECTION == COL2ROW)
  196. for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
  197. # if (DEBOUNCE > 0)
  198. bool matrix_changed = read_cols_on_row(matrix_debouncing, current_row);
  199. if (matrix_changed) {
  200. debouncing = true;
  201. debouncing_time = timer_read();
  202. }
  203. # else
  204. read_cols_on_row(matrix, current_row);
  205. # endif
  206. }
  207. #elif (DIODE_DIRECTION == ROW2COL)
  208. for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
  209. # if (DEBOUNCE > 0)
  210. bool matrix_changed = read_rows_on_col(matrix_debouncing, current_col);
  211. if (matrix_changed) {
  212. debouncing = true;
  213. debouncing_time = timer_read();
  214. }
  215. # else
  216. read_rows_on_col(matrix, current_col);
  217. # endif
  218. }
  219. #endif
  220. # if (DEBOUNCE > 0)
  221. if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCE)) {
  222. for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
  223. matrix[i] = matrix_debouncing[i];
  224. }
  225. debouncing = false;
  226. }
  227. # endif
  228. matrix_scan_quantum();
  229. return 1;
  230. }
  231. bool matrix_is_modified(void) // deprecated and evidently not called.
  232. {
  233. #if (DEBOUNCE > 0)
  234. if (debouncing) return false;
  235. #endif
  236. return true;
  237. }
  238. inline
  239. bool matrix_is_on(uint8_t row, uint8_t col)
  240. {
  241. return (matrix[row] & (ROW_SHIFTER << col));
  242. }
  243. inline
  244. matrix_row_t matrix_get_row(uint8_t row)
  245. {
  246. #ifdef MATRIX_MASKED
  247. return matrix[row] & matrix_mask[row];
  248. #else
  249. return matrix[row];
  250. #endif
  251. }
  252. void matrix_print(void)
  253. {
  254. print("\nr/c 0123456789ABCDEF\n");
  255. for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
  256. phex(row); print(": ");
  257. pbin_reverse16(matrix_get_row(row));
  258. print("\n");
  259. }
  260. }
  261. uint8_t matrix_key_count(void)
  262. {
  263. uint8_t count = 0;
  264. for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
  265. count += bitpop16(matrix[i]);
  266. }
  267. return count;
  268. }
  269. #if (DIODE_DIRECTION == COL2ROW)
  270. static void init_cols(void) {
  271. for (uint8_t x = 0; x < MATRIX_COLS; x++) {
  272. if (! col_expanded[x]) {
  273. uint8_t pin = onboard_col_pins[x];
  274. _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
  275. _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
  276. }
  277. }
  278. }
  279. static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
  280. // Store last value of row prior to reading
  281. matrix_row_t last_row_value = current_matrix[current_row];
  282. // Clear data in matrix row
  283. current_matrix[current_row] = 0;
  284. // Select row and wait for row selection to stabilize
  285. select_row(current_row);
  286. wait_us(30);
  287. // Read columns from expander, unless it's in an error state
  288. if (! expander_status) {
  289. expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out;
  290. expander_status = i2c_write(EXPANDER_COL_REGISTER); if (expander_status) goto out;
  291. expander_status = i2c_start(I2C_ADDR_READ); if (expander_status) goto out;
  292. current_matrix[current_row] |= (~i2c_readNak()) & expander_input_pin_mask;
  293. out:
  294. i2c_stop();
  295. }
  296. // Read columns from onboard pins
  297. for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
  298. if (! col_expanded[col_index]) {
  299. uint8_t pin = onboard_col_pins[col_index];
  300. uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
  301. current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index);
  302. }
  303. }
  304. unselect_row(current_row);
  305. return (last_row_value != current_matrix[current_row]);
  306. }
  307. static void select_row(uint8_t row) {
  308. // select on expander, unless it's in an error state
  309. if (! expander_status) {
  310. // set active row low : 0
  311. // set other rows hi-Z : 1
  312. expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out;
  313. expander_status = i2c_write(EXPANDER_ROW_REGISTER); if (expander_status) goto out;
  314. expander_status = i2c_write(0xFF & ~(1<<row)); if (expander_status) goto out;
  315. out:
  316. i2c_stop();
  317. }
  318. // select on teensy
  319. uint8_t pin = onboard_row_pins[row];
  320. _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
  321. _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
  322. }
  323. static void unselect_row(uint8_t row)
  324. {
  325. // No need to explicitly unselect expander pins--their I/O state is
  326. // set simultaneously, with a single bitmask sent to i2c_write. When
  327. // select_row selects a single pin, it implicitly unselects all the
  328. // other ones.
  329. // unselect on teensy
  330. uint8_t pin = onboard_row_pins[row];
  331. _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // OUT
  332. _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // LOW
  333. }
  334. static void unselect_rows(void) {
  335. for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
  336. unselect_row(x);
  337. }
  338. }
  339. #elif (DIODE_DIRECTION == ROW2COL)
  340. static void init_rows(void)
  341. {
  342. for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
  343. uint8_t pin = onboard_row_pins[x];
  344. _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
  345. _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
  346. }
  347. }
  348. static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
  349. {
  350. bool matrix_changed = false;
  351. uint8_t column_state = 0;
  352. //select col and wait for selection to stabilize
  353. select_col(current_col);
  354. wait_us(30);
  355. if (current_col < 6) {
  356. // read rows from expander
  357. if (expander_status) {
  358. // it's already in an error state; nothing we can do
  359. return false;
  360. }
  361. expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out;
  362. expander_status = i2c_write(EXPANDER_ROW_REGISTER); if (expander_status) goto out;
  363. expander_status = i2c_start(I2C_ADDR_READ); if (expander_status) goto out;
  364. column_state = i2c_readNak();
  365. out:
  366. i2c_stop();
  367. column_state = ~column_state;
  368. } else {
  369. for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
  370. if ((_SFR_IO8(onboard_row_pins[current_row] >> 4) & _BV(onboard_row_pins[current_row] & 0xF)) == 0) {
  371. column_state |= (1 << current_row);
  372. }
  373. }
  374. }
  375. for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
  376. // Store last value of row prior to reading
  377. matrix_row_t last_row_value = current_matrix[current_row];
  378. if (column_state & (1 << current_row)) {
  379. // key closed; set state bit in matrix
  380. current_matrix[current_row] |= (ROW_SHIFTER << current_col);
  381. } else {
  382. // key open; clear state bit in matrix
  383. current_matrix[current_row] &= ~(ROW_SHIFTER << current_col);
  384. }
  385. // Determine whether the matrix changed state
  386. if ((last_row_value != current_matrix[current_row]) && !(matrix_changed))
  387. {
  388. matrix_changed = true;
  389. }
  390. }
  391. unselect_col(current_col);
  392. return matrix_changed;
  393. }
  394. static void select_col(uint8_t col)
  395. {
  396. if (col_expanded[col]) {
  397. // select on expander
  398. if (expander_status) { // if there was an error
  399. // do nothing
  400. } else {
  401. // set active col low : 0
  402. // set other cols hi-Z : 1
  403. expander_status = i2c_start(I2C_ADDR_WRITE); if (expander_status) goto out;
  404. expander_status = i2c_write(EXPANDER_COL_REGISTER); if (expander_status) goto out;
  405. expander_status = i2c_write(0xFF & ~(1<<col)); if (expander_status) goto out;
  406. out:
  407. i2c_stop();
  408. }
  409. } else {
  410. // select on teensy
  411. uint8_t pin = onboard_col_pins[col];
  412. _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT
  413. _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
  414. }
  415. }
  416. static void unselect_col(uint8_t col)
  417. {
  418. if (col_expanded[col]) {
  419. // No need to explicitly unselect expander pins--their I/O state is
  420. // set simultaneously, with a single bitmask sent to i2c_write. When
  421. // select_col selects a single pin, it implicitly unselects all the
  422. // other ones.
  423. } else {
  424. // unselect on teensy
  425. uint8_t pin = onboard_col_pins[col];
  426. _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
  427. _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI
  428. }
  429. }
  430. static void unselect_cols(void)
  431. {
  432. for(uint8_t x = 0; x < MATRIX_COLS; x++) {
  433. unselect_col(x);
  434. }
  435. }
  436. #endif