diff options
| author | Jack Humbert <jack.humb@gmail.com> | 2017-02-07 15:46:29 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-02-07 15:46:29 -0500 |
| commit | f5c8c5d4c854c5ae4dc586066c9b03557786c4c2 (patch) | |
| tree | 4793a10faaa502340a6dc9322f07856f451cf9de | |
| parent | d639bd2021b697849bb11e521fc142292ab7e023 (diff) | |
| parent | 56d2198b3d85f112317b4b0d09d5cf6a5c915db8 (diff) | |
| download | qmk_firmware-f5c8c5d4c854c5ae4dc586066c9b03557786c4c2.tar.gz qmk_firmware-f5c8c5d4c854c5ae4dc586066c9b03557786c4c2.zip | |
Merge pull request #1070 from jimmyhchan/fixSplit
Lets split readme eeprom master hand fixes
| -rw-r--r-- | keyboards/lets_split/Makefile | 4 | ||||
| -rw-r--r-- | keyboards/lets_split/eeprom-lefthand.eep | 2 | ||||
| -rw-r--r-- | keyboards/lets_split/eeprom-righthand.eep | 2 | ||||
| -rw-r--r-- | keyboards/lets_split/keymaps/i2c/config.h | 7 | ||||
| -rw-r--r-- | keyboards/lets_split/keymaps/serial/config.h | 6 | ||||
| -rw-r--r-- | keyboards/lets_split/readme.md | 86 | ||||
| -rw-r--r-- | keyboards/lets_split/split_util.c | 3 |
7 files changed, 87 insertions, 23 deletions
diff --git a/keyboards/lets_split/Makefile b/keyboards/lets_split/Makefile index 4e2a6f00f..f5c87d4d6 100644 --- a/keyboards/lets_split/Makefile +++ b/keyboards/lets_split/Makefile | |||
| @@ -1,3 +1,5 @@ | |||
| 1 | SUBPROJECT_DEFAULT = rev2 | ||
| 2 | |||
| 1 | ifndef MAKEFILE_INCLUDED | 3 | ifndef MAKEFILE_INCLUDED |
| 2 | include ../../Makefile | 4 | include ../../Makefile |
| 3 | endif \ No newline at end of file | 5 | endif |
diff --git a/keyboards/lets_split/eeprom-lefthand.eep b/keyboards/lets_split/eeprom-lefthand.eep index a92200b12..b9666a74c 100644 --- a/keyboards/lets_split/eeprom-lefthand.eep +++ b/keyboards/lets_split/eeprom-lefthand.eep | |||
| @@ -1,2 +1,2 @@ | |||
| 1 | :080000000000000000000001F7 | 1 | :0B0000000000000000000000000001F4 |
| 2 | :00000001FF | 2 | :00000001FF |
diff --git a/keyboards/lets_split/eeprom-righthand.eep b/keyboards/lets_split/eeprom-righthand.eep index 91a683170..94cc5be7f 100644 --- a/keyboards/lets_split/eeprom-righthand.eep +++ b/keyboards/lets_split/eeprom-righthand.eep | |||
| @@ -1,2 +1,2 @@ | |||
| 1 | :080000000000000000000000F8 | 1 | :0B0000000000000000000000000000F5 |
| 2 | :00000001FF | 2 | :00000001FF |
diff --git a/keyboards/lets_split/keymaps/i2c/config.h b/keyboards/lets_split/keymaps/i2c/config.h index 332c990fc..013542731 100644 --- a/keyboards/lets_split/keymaps/i2c/config.h +++ b/keyboards/lets_split/keymaps/i2c/config.h | |||
| @@ -16,8 +16,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 16 | */ | 16 | */ |
| 17 | #define USE_I2C | 17 | #define USE_I2C |
| 18 | 18 | ||
| 19 | #define I2C_MASTER_LEFT | 19 | #define MASTER_LEFT |
| 20 | // #define I2C_MASTER_RIGHT | 20 | // #define _MASTER_RIGHT |
| 21 | // #define EE_HANDS | ||
| 21 | 22 | ||
| 22 | #ifdef SUBPROJECT_rev1 | 23 | #ifdef SUBPROJECT_rev1 |
| 23 | #include "../../rev1/config.h" | 24 | #include "../../rev1/config.h" |
| @@ -27,4 +28,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 27 | #endif | 28 | #endif |
| 28 | #ifdef SUBPROJECT_rev2fliphalf | 29 | #ifdef SUBPROJECT_rev2fliphalf |
| 29 | #include "../../rev2fliphalf/config.h" | 30 | #include "../../rev2fliphalf/config.h" |
| 30 | #endif \ No newline at end of file | 31 | #endif |
diff --git a/keyboards/lets_split/keymaps/serial/config.h b/keyboards/lets_split/keymaps/serial/config.h index 0e59b191b..ba271d1ac 100644 --- a/keyboards/lets_split/keymaps/serial/config.h +++ b/keyboards/lets_split/keymaps/serial/config.h | |||
| @@ -18,7 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 18 | 18 | ||
| 19 | #define USE_SERIAL | 19 | #define USE_SERIAL |
| 20 | 20 | ||
| 21 | #define EE_HANDS | 21 | #define MASTER_LEFT |
| 22 | // #define _MASTER_RIGHT | ||
| 23 | // #define EE_HANDS | ||
| 22 | 24 | ||
| 23 | 25 | ||
| 24 | #ifdef SUBPROJECT_rev1 | 26 | #ifdef SUBPROJECT_rev1 |
| @@ -29,4 +31,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 29 | #endif | 31 | #endif |
| 30 | #ifdef SUBPROJECT_rev2fliphalf | 32 | #ifdef SUBPROJECT_rev2fliphalf |
| 31 | #include "../../rev2fliphalf/config.h" | 33 | #include "../../rev2fliphalf/config.h" |
| 32 | #endif \ No newline at end of file | 34 | #endif |
diff --git a/keyboards/lets_split/readme.md b/keyboards/lets_split/readme.md index a63ce5907..ecce3f415 100644 --- a/keyboards/lets_split/readme.md +++ b/keyboards/lets_split/readme.md | |||
| @@ -6,9 +6,45 @@ This readme and most of the code are from https://github.com/ahtn/tmk_keyboard/ | |||
| 6 | Split keyboard firmware for Arduino Pro Micro or other ATmega32u4 | 6 | Split keyboard firmware for Arduino Pro Micro or other ATmega32u4 |
| 7 | based boards. | 7 | based boards. |
| 8 | 8 | ||
| 9 | |||
| 10 | ## First Time Setup | ||
| 11 | |||
| 12 | Download or clone the whole firmware and navigate to the keyboards/lets_split directory. Once your dev env is setup, you'll be able to generate the default .hex using: | ||
| 13 | |||
| 14 | ``` | ||
| 15 | $ make rev2 | ||
| 16 | ``` | ||
| 17 | |||
| 18 | You will see a lot of output and if everything worked correctly you will see the built hex files: | ||
| 19 | |||
| 20 | ``` | ||
| 21 | lets_split_rev2_serial.hex | ||
| 22 | lets_split_rev2_i2c.hex | ||
| 23 | ``` | ||
| 24 | |||
| 25 | If you would like to use one of the alternative keymaps, or create your own, copy one of the existing [keymaps](keymaps/) and run make like so: | ||
| 26 | |||
| 27 | |||
| 28 | ``` | ||
| 29 | $ make rev2-YOUR_KEYMAP_NAME | ||
| 30 | ``` | ||
| 31 | |||
| 32 | If everything worked correctly you will see a file: | ||
| 33 | |||
| 34 | ``` | ||
| 35 | lets_split_rev2_YOUR_KEYMAP_NAME.hex | ||
| 36 | ``` | ||
| 37 | |||
| 38 | For more information on customizing keymaps, take a look at the primary documentation for [Customizing Your Keymap](/readme.md##customizing-your-keymap) in the main readme.md. | ||
| 39 | |||
| 40 | ### Let's split 1.0 | ||
| 41 | If you have a first generation Let's Split you will need to use the revision 1 code. To do so, use `rev1` in all your commands instead. | ||
| 42 | |||
| 9 | Features | 43 | Features |
| 10 | -------- | 44 | -------- |
| 11 | 45 | ||
| 46 | For the full Quantum Mechanical Keyboard feature list, see [the parent readme.md](/readme.md). | ||
| 47 | |||
| 12 | Some features supported by the firmware: | 48 | Some features supported by the firmware: |
| 13 | 49 | ||
| 14 | * Either half can connect to the computer via USB, or both halves can be used | 50 | * Either half can connect to the computer via USB, or both halves can be used |
| @@ -62,7 +98,7 @@ unnecessary in simple use cases. | |||
| 62 | Notes on Software Configuration | 98 | Notes on Software Configuration |
| 63 | ------------------------------- | 99 | ------------------------------- |
| 64 | 100 | ||
| 65 | Configuring the firmware is similar to any other TMK project. One thing | 101 | Configuring the firmware is similar to any other QMK project. One thing |
| 66 | to note is that `MATIX_ROWS` in `config.h` is the total number of rows between | 102 | to note is that `MATIX_ROWS` in `config.h` is the total number of rows between |
| 67 | the two halves, i.e. if your split keyboard has 4 rows in each half, then | 103 | the two halves, i.e. if your split keyboard has 4 rows in each half, then |
| 68 | `MATRIX_ROWS=8`. | 104 | `MATRIX_ROWS=8`. |
| @@ -70,37 +106,59 @@ the two halves, i.e. if your split keyboard has 4 rows in each half, then | |||
| 70 | Also the current implementation assumes a maximum of 8 columns, but it would | 106 | Also the current implementation assumes a maximum of 8 columns, but it would |
| 71 | not be very difficult to adapt it to support more if required. | 107 | not be very difficult to adapt it to support more if required. |
| 72 | 108 | ||
| 73 | |||
| 74 | Flashing | 109 | Flashing |
| 110 | ------- | ||
| 111 | From the keymap directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing. | ||
| 112 | Example: `make rev2-serial-avrdude` | ||
| 113 | |||
| 114 | |||
| 115 | Choosing which board to plug the USB cable into (choosing Master) | ||
| 75 | -------- | 116 | -------- |
| 117 | Because the two boards are identical, the firmware has logic to differentiate the left and right board. | ||
| 76 | 118 | ||
| 77 | From the keymap directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing. | 119 | It uses two strategies to figure things out: look at the EEPROM (memory on the chip) or looks if the current board has the usb cable. |
| 78 | 120 | ||
| 79 | Example: `make rev2-serial-avrdude` | 121 | The EEPROM approach requires additional setup (flashing the eeeprom) but allows you to swap the usb cable to either side. |
| 122 | |||
| 123 | The USB cable approach is easier to setup and if you just want the usb cable on the left board, you do not need to do anything extra. | ||
| 80 | 124 | ||
| 125 | ### Setting the left hand as master | ||
| 126 | If you always plug the usb cable into the left board, nothing extra is needed as this is the default. Comment out `EE_HANDS` and comment out `I2C_MASTER_RIGHT` or `MASTER_RIGHT` if for some reason it was set. | ||
| 127 | |||
| 128 | ### Setting the right hand as master | ||
| 129 | If you always plug the usb cable into the right board, add an extra flag to your `config.h` | ||
| 130 | ``` | ||
| 131 | #define MASTER_RIGHT | ||
| 132 | ``` | ||
| 133 | |||
| 134 | ### Setting EE_hands to use either hands as master | ||
| 81 | If you define `EE_HANDS` in your `config.h`, you will need to set the | 135 | If you define `EE_HANDS` in your `config.h`, you will need to set the |
| 82 | EEPROM for the left and right halves. The EEPROM is used to store whether the | 136 | EEPROM for the left and right halves. |
| 137 | |||
| 138 | The EEPROM is used to store whether the | ||
| 83 | half is left handed or right handed. This makes it so that the same firmware | 139 | half is left handed or right handed. This makes it so that the same firmware |
| 84 | file will run on both hands instead of having to flash left and right handed | 140 | file will run on both hands instead of having to flash left and right handed |
| 85 | versions of the firmware to each half. To flash the EEPROM file for the left | 141 | versions of the firmware to each half. To flash the EEPROM file for the left |
| 86 | half run: | 142 | half run: |
| 87 | ``` | 143 | ``` |
| 88 | make eeprom-left | 144 | avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-lefthand.eep |
| 145 | // or the equivalent in dfu-programmer | ||
| 146 | |||
| 89 | ``` | 147 | ``` |
| 90 | and similarly for right half | 148 | and similarly for right half |
| 91 | ``` | 149 | ``` |
| 92 | make eeprom-right | 150 | avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-righhand.eep |
| 151 | // or the equivalent in dfu-programmer | ||
| 93 | ``` | 152 | ``` |
| 94 | 153 | ||
| 95 | After you have flashed the EEPROM for the first time, you then need to program | 154 | NOTE: replace `$(COM_PORT)` with the port of your device (e.g. `/dev/ttyACM0`) |
| 96 | the flash memory: | 155 | |
| 97 | ``` | 156 | After you have flashed the EEPROM, you then need to set `EE_HANDS` in your config.h, rebuild the hex files and reflash. |
| 98 | make program | 157 | |
| 99 | ``` | ||
| 100 | Note that you need to program both halves, but you have the option of using | 158 | Note that you need to program both halves, but you have the option of using |
| 101 | different keymaps for each half. You could program the left half with a QWERTY | 159 | different keymaps for each half. You could program the left half with a QWERTY |
| 102 | layout and the right half with a Colemak layout. Then if you connect the left | 160 | layout and the right half with a Colemak layout using bootmagic's default layout option. |
| 103 | half to a computer by USB the keyboard will use QWERTY and Colemak when the | 161 | Then if you connect the left half to a computer by USB the keyboard will use QWERTY and Colemak when the |
| 104 | right half is connected. | 162 | right half is connected. |
| 105 | 163 | ||
| 106 | 164 | ||
diff --git a/keyboards/lets_split/split_util.c b/keyboards/lets_split/split_util.c index 461921798..226dc1881 100644 --- a/keyboards/lets_split/split_util.c +++ b/keyboards/lets_split/split_util.c | |||
| @@ -21,7 +21,8 @@ static void setup_handedness(void) { | |||
| 21 | #ifdef EE_HANDS | 21 | #ifdef EE_HANDS |
| 22 | isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS); | 22 | isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS); |
| 23 | #else | 23 | #else |
| 24 | #ifdef I2C_MASTER_RIGHT | 24 | // I2C_MASTER_RIGHT is deprecated use MASTER_RIGHT instead since this works for both serial and i2c |
| 25 | #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT) | ||
| 25 | isLeftHand = !has_usb(); | 26 | isLeftHand = !has_usb(); |
| 26 | #else | 27 | #else |
| 27 | isLeftHand = has_usb(); | 28 | isLeftHand = has_usb(); |
