diff options
author | zwnk <david@impstyle.com> | 2019-02-18 13:49:11 -0300 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2019-02-18 08:49:11 -0800 |
commit | 7639edb0aeea7b16f49cad9963d32b7eace9434d (patch) | |
tree | 0d87da015f9011aa668f15cac104e8bcd1666090 | |
parent | 0e68b6c1a9f5223fa1dc6b18d9204137b4edd921 (diff) | |
download | qmk_firmware-7639edb0aeea7b16f49cad9963d32b7eace9434d.tar.gz qmk_firmware-7639edb0aeea7b16f49cad9963d32b7eace9434d.zip |
[Keyboard] handwired dactyl with 2 pro micros added (#5113)
* handwired dactyl with 2 pro micros added
* dactyl_promicro README updated
* dactyl_promicro default layout fixed
* requested changes
* dactyl_promicro README updated
* qmk toolbox link fixed
* layout reflects phys. keys positions
10 files changed, 441 insertions, 12 deletions
diff --git a/keyboards/handwired/dactyl_manuform/readme.md b/keyboards/handwired/dactyl_manuform/readme.md index 0d08c67a0..3221da0e9 100644 --- a/keyboards/handwired/dactyl_manuform/readme.md +++ b/keyboards/handwired/dactyl_manuform/readme.md | |||
@@ -131,17 +131,9 @@ file will run on both hands instead of having to flash left and right handed | |||
131 | versions of the firmware to each half. To flash the EEPROM file for the left | 131 | versions of the firmware to each half. To flash the EEPROM file for the left |
132 | half run: | 132 | half run: |
133 | ``` | 133 | ``` |
134 | avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:"./quantum/split_common/eeprom-lefthand.eep" | 134 | make handwired/dactyl_promicro:default:dfu-split-left |
135 | // or the equivalent in dfu-programmer | 135 | make handwired/dactyl_promicro:default:dfu-split-right |
136 | |||
137 | ``` | ||
138 | and similarly for right half | ||
139 | ``` | 136 | ``` |
140 | avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:"./quantum/split_common/eeprom-righthand.eep" | ||
141 | // or the equivalent in dfu-programmer | ||
142 | ``` | ||
143 | |||
144 | NOTE: replace `$(COM_PORT)` with the port of your device (e.g. `/dev/ttyACM0`) | ||
145 | 137 | ||
146 | After you have flashed the EEPROM, you then need to set `EE_HANDS` in your config.h, rebuild the hex files and reflash. | 138 | After you have flashed the EEPROM, you then need to set `EE_HANDS` in your config.h, rebuild the hex files and reflash. |
147 | 139 | ||
@@ -162,6 +154,6 @@ Also, if the slave board is producing weird characters in certain columns, | |||
162 | update the following line in `matrix.c` to the following: | 154 | update the following line in `matrix.c` to the following: |
163 | 155 | ||
164 | ``` | 156 | ``` |
165 | // _delay_us(30); // without this wait read unstable value. | 157 | // wait_us(30); // without this wait read unstable value. |
166 | _delay_us(300); // without this wait read unstable value. | 158 | wait_us(300); // without this wait read unstable value. |
167 | ``` | 159 | ``` |
diff --git a/keyboards/handwired/dactyl_promicro/config.h b/keyboards/handwired/dactyl_promicro/config.h new file mode 100644 index 000000000..f81b3de51 --- /dev/null +++ b/keyboards/handwired/dactyl_promicro/config.h | |||
@@ -0,0 +1,83 @@ | |||
1 | /* | ||
2 | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
3 | Copyright 2015 Jack Humbert | ||
4 | |||
5 | This program is free software: you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation, either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
17 | */ | ||
18 | |||
19 | #pragma once | ||
20 | |||
21 | #include "config_common.h" | ||
22 | #define PRODUCT Dactyl Ergo(6x6) | ||
23 | |||
24 | /* key matrix size */ | ||
25 | // Rows are doubled-up | ||
26 | #define MATRIX_ROWS 12 | ||
27 | #define MATRIX_COLS 6 | ||
28 | |||
29 | // wiring of each half | ||
30 | #define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 } | ||
31 | #define MATRIX_ROW_PINS { F6, F7, B1, B3, B2, B6 } | ||
32 | |||
33 | /* USB Device descriptor parameter */ | ||
34 | #define VENDOR_ID 0xFEED | ||
35 | #define PRODUCT_ID 0x3060 | ||
36 | #define DEVICE_VER 0x0001 | ||
37 | //#define MANUFACTURER tshort | ||
38 | // defined in subfolder | ||
39 | #define DESCRIPTION A split keyboard | ||
40 | |||
41 | /* mouse config */ | ||
42 | #define MOUSEKEY_INTERVAL 20 | ||
43 | #define MOUSEKEY_DELAY 0 | ||
44 | #define MOUSEKEY_TIME_TO_MAX 60 | ||
45 | #define MOUSEKEY_MAX_SPEED 7 | ||
46 | #define MOUSEKEY_WHEEL_DELAY 0 | ||
47 | |||
48 | /* Set 0 if debouncing isn't needed */ | ||
49 | #define DEBOUNCING_DELAY 5 | ||
50 | |||
51 | /* serial.c configuration for split keyboard */ | ||
52 | #define SOFT_SERIAL_PIN D0 | ||
53 | |||
54 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||
55 | #define LOCKING_SUPPORT_ENABLE | ||
56 | /* Locking resynchronize hack */ | ||
57 | #define LOCKING_RESYNC_ENABLE | ||
58 | |||
59 | /* Enables This makes it easier for fast typists to use dual-function keys */ | ||
60 | #define PERMISSIVE_HOLD | ||
61 | |||
62 | /* ws2812 RGB LED */ | ||
63 | #define RGB_DI_PIN D3 | ||
64 | |||
65 | #define RGBLED_NUM 12 // Number of LEDs | ||
66 | |||
67 | /* | ||
68 | * Feature disable options | ||
69 | * These options are also useful to firmware size reduction. | ||
70 | */ | ||
71 | |||
72 | /* disable debug print */ | ||
73 | // #define NO_DEBUG | ||
74 | |||
75 | /* disable print */ | ||
76 | // #define NO_PRINT | ||
77 | |||
78 | /* disable action features */ | ||
79 | //#define NO_ACTION_LAYER | ||
80 | //#define NO_ACTION_TAPPING | ||
81 | //#define NO_ACTION_ONESHOT | ||
82 | //#define NO_ACTION_MACRO | ||
83 | //#define NO_ACTION_FUNCTION | ||
diff --git a/keyboards/handwired/dactyl_promicro/dactyl_promicro.c b/keyboards/handwired/dactyl_promicro/dactyl_promicro.c new file mode 100644 index 000000000..5d708cf48 --- /dev/null +++ b/keyboards/handwired/dactyl_promicro/dactyl_promicro.c | |||
@@ -0,0 +1,12 @@ | |||
1 | #include "dactyl_promicro.h" | ||
2 | |||
3 | #ifdef SSD1306OLED | ||
4 | void led_set_kb(uint8_t usb_led) { | ||
5 | // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here | ||
6 | led_set_user(usb_led); | ||
7 | } | ||
8 | #endif | ||
9 | |||
10 | void matrix_init_kb(void) { | ||
11 | matrix_init_user(); | ||
12 | }; \ No newline at end of file | ||
diff --git a/keyboards/handwired/dactyl_promicro/dactyl_promicro.h b/keyboards/handwired/dactyl_promicro/dactyl_promicro.h new file mode 100644 index 000000000..5dfc42f2a --- /dev/null +++ b/keyboards/handwired/dactyl_promicro/dactyl_promicro.h | |||
@@ -0,0 +1,39 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #include "quantum.h" | ||
4 | |||
5 | |||
6 | #ifdef USE_I2C | ||
7 | #include <stddef.h> | ||
8 | #ifdef __AVR__ | ||
9 | #include <avr/io.h> | ||
10 | #include <avr/interrupt.h> | ||
11 | #endif | ||
12 | #endif | ||
13 | |||
14 | |||
15 | #define LAYOUT_6x6(\ | ||
16 | L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ | ||
17 | L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ | ||
18 | L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ | ||
19 | L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ | ||
20 | L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, \ | ||
21 | L55, L51, L52, R53, R54, R50, \ | ||
22 | L53, R52, \ | ||
23 | L54, R51 \ | ||
24 | )\ | ||
25 | { \ | ||
26 | { L00, L01, L02, L03, L04, L05 }, \ | ||
27 | { L10, L11, L12, L13, L14, L15 }, \ | ||
28 | { L20, L21, L22, L23, L24, L25 }, \ | ||
29 | { L30, L31, L32, L33, L34, L35 }, \ | ||
30 | { L40, L41, L42, L43, L44, L45 }, \ | ||
31 | { KC_NO, L51, L52, L53, L54, L55 }, \ | ||
32 | \ | ||
33 | { R00, R01, R02, R03, R04, R05 }, \ | ||
34 | { R10, R11, R12, R13, R14, R15 }, \ | ||
35 | { R20, R21, R22, R23, R24, R25 }, \ | ||
36 | { R30, R31, R32, R33, R34, R35 }, \ | ||
37 | { R40, R41, R42, R43, R44, R45 }, \ | ||
38 | { R50, R51, R52, R53, R54, KC_NO }, \ | ||
39 | } | ||
diff --git a/keyboards/handwired/dactyl_promicro/keymaps/default/config.h b/keyboards/handwired/dactyl_promicro/keymaps/default/config.h new file mode 100644 index 000000000..ce8f3501a --- /dev/null +++ b/keyboards/handwired/dactyl_promicro/keymaps/default/config.h | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
3 | |||
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 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #pragma once | ||
19 | |||
20 | #define USE_SERIAL | ||
21 | |||
22 | #define MASTER_RIGHT | ||
23 | // #define MASTER_RIGHT | ||
24 | //#define EE_HANDS | ||
25 | // Rows are doubled-up | ||
diff --git a/keyboards/handwired/dactyl_promicro/keymaps/default/keymap.c b/keyboards/handwired/dactyl_promicro/keymaps/default/keymap.c new file mode 100644 index 000000000..d396e4676 --- /dev/null +++ b/keyboards/handwired/dactyl_promicro/keymaps/default/keymap.c | |||
@@ -0,0 +1,47 @@ | |||
1 | |||
2 | /* A QWERTY 3 Layer layout for the Dactyl Manuform 6x6 Keyboard */ | ||
3 | |||
4 | #include QMK_KEYBOARD_H | ||
5 | |||
6 | extern keymap_config_t keymap_config; | ||
7 | |||
8 | #define _QWERTY 0 | ||
9 | #define _LOWER 1 | ||
10 | #define _RAISE 2 | ||
11 | |||
12 | #define RAISE MO(_RAISE) | ||
13 | #define LOWER MO(_LOWER) | ||
14 | |||
15 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
16 | |||
17 | |||
18 | [_QWERTY] = LAYOUT_6x6( | ||
19 | KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, | ||
20 | KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS, | ||
21 | KC_LSFT , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, | ||
22 | KC_LCTL , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM , KC_DOT ,KC_SLSH,KC_BSLASH, | ||
23 | KC_PLUS , KC_LEFT,KC_UP ,KC_DOWN, KC_RGHT, RAISE , LOWER , KC_HOME, KC_PGUP, KC_PGDN,KC_END ,KC_EQL, | ||
24 | _______,KC_LALT,KC_PSCR, KC_LGUI, KC_SPC, KC_ENT,KC_GRAVE, KC_AT ,KC_PSCR ,_______ | ||
25 | |||
26 | ), | ||
27 | |||
28 | |||
29 | [_LOWER] = LAYOUT_6x6( | ||
30 | KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL, | ||
31 | _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, | ||
32 | _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, | ||
33 | _______,_______,_______,_______,_______,KC_PSCR, KC_P0 , KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, | ||
34 | _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, | ||
35 | _______,_______,_______,_______,_______, _______,_______,_______,_______,_______ | ||
36 | ), | ||
37 | |||
38 | [_RAISE] = LAYOUT_6x6( | ||
39 | KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , | ||
40 | _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE, | ||
41 | _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, | ||
42 | _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, | ||
43 | _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, | ||
44 | _______,_______,_______,_______,_______, _______,_______,_______,_______,_______ | ||
45 | ), | ||
46 | |||
47 | }; | ||
diff --git a/keyboards/handwired/dactyl_promicro/keymaps/impstyle/config.h b/keyboards/handwired/dactyl_promicro/keymaps/impstyle/config.h new file mode 100644 index 000000000..ce8f3501a --- /dev/null +++ b/keyboards/handwired/dactyl_promicro/keymaps/impstyle/config.h | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||
3 | |||
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 | |||
9 | This program is distributed in the hope that it will be useful, | ||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | GNU General Public License for more details. | ||
13 | |||
14 | You should have received a copy of the GNU General Public License | ||
15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | |||
18 | #pragma once | ||
19 | |||
20 | #define USE_SERIAL | ||
21 | |||
22 | #define MASTER_RIGHT | ||
23 | // #define MASTER_RIGHT | ||
24 | //#define EE_HANDS | ||
25 | // Rows are doubled-up | ||
diff --git a/keyboards/handwired/dactyl_promicro/keymaps/impstyle/keymap.c b/keyboards/handwired/dactyl_promicro/keymaps/impstyle/keymap.c new file mode 100644 index 000000000..d396e4676 --- /dev/null +++ b/keyboards/handwired/dactyl_promicro/keymaps/impstyle/keymap.c | |||
@@ -0,0 +1,47 @@ | |||
1 | |||
2 | /* A QWERTY 3 Layer layout for the Dactyl Manuform 6x6 Keyboard */ | ||
3 | |||
4 | #include QMK_KEYBOARD_H | ||
5 | |||
6 | extern keymap_config_t keymap_config; | ||
7 | |||
8 | #define _QWERTY 0 | ||
9 | #define _LOWER 1 | ||
10 | #define _RAISE 2 | ||
11 | |||
12 | #define RAISE MO(_RAISE) | ||
13 | #define LOWER MO(_LOWER) | ||
14 | |||
15 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
16 | |||
17 | |||
18 | [_QWERTY] = LAYOUT_6x6( | ||
19 | KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, | ||
20 | KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS, | ||
21 | KC_LSFT , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, | ||
22 | KC_LCTL , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM , KC_DOT ,KC_SLSH,KC_BSLASH, | ||
23 | KC_PLUS , KC_LEFT,KC_UP ,KC_DOWN, KC_RGHT, RAISE , LOWER , KC_HOME, KC_PGUP, KC_PGDN,KC_END ,KC_EQL, | ||
24 | _______,KC_LALT,KC_PSCR, KC_LGUI, KC_SPC, KC_ENT,KC_GRAVE, KC_AT ,KC_PSCR ,_______ | ||
25 | |||
26 | ), | ||
27 | |||
28 | |||
29 | [_LOWER] = LAYOUT_6x6( | ||
30 | KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL, | ||
31 | _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, | ||
32 | _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, | ||
33 | _______,_______,_______,_______,_______,KC_PSCR, KC_P0 , KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, | ||
34 | _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, | ||
35 | _______,_______,_______,_______,_______, _______,_______,_______,_______,_______ | ||
36 | ), | ||
37 | |||
38 | [_RAISE] = LAYOUT_6x6( | ||
39 | KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , | ||
40 | _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE, | ||
41 | _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, | ||
42 | _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, | ||
43 | _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, | ||
44 | _______,_______,_______,_______,_______, _______,_______,_______,_______,_______ | ||
45 | ), | ||
46 | |||
47 | }; | ||
diff --git a/keyboards/handwired/dactyl_promicro/readme.md b/keyboards/handwired/dactyl_promicro/readme.md new file mode 100644 index 000000000..a426319b4 --- /dev/null +++ b/keyboards/handwired/dactyl_promicro/readme.md | |||
@@ -0,0 +1,93 @@ | |||
1 | # Dactyl with Arduino Pro Micro | ||
2 | |||
3 | See https://github.com/adereth/dactyl-keyboard for the original Version. | ||
4 | |||
5 | This Dactyl uses the Arduino Pro Mirco (2x). | ||
6 | Wiring is a 6x6 Matrix like the [Dactyl Manuform](https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/dactyl_manuform) | ||
7 | |||
8 | |||
9 | ## Build the Firmware: | ||
10 | |||
11 | - Build the firmware with `make handwired/dactyl_promicro:<keymapname>`, for example `make handwired/dactyl:default` | ||
12 | - This will result in a hex file called `handwired_dactyl_promicro_<keymapname>.hex`, e.g. | ||
13 | `handwired_dactyl_promicro_default.hex` | ||
14 | |||
15 | How to setup your build enviroment can be found here: [Installing Build Tools](https://docs.qmk.fm/#/getting_started_build_tools) | ||
16 | |||
17 | ## Required Hardware | ||
18 | |||
19 | Apart from diodes and key switches for the keyboard matrix in each half, you | ||
20 | will need: | ||
21 | |||
22 | * 2 Arduino Pro Micros. You can find these on AliExpress for ≈3.50USD each. | ||
23 | * 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 1 TRS cable | ||
24 | |||
25 | Alternatively, you can use any sort of cable and socket that has at least 3 | ||
26 | wires. If you want to use I2C to communicate between halves, you will need a | ||
27 | cable with at least 4 wires and 2x 4.7kΩ pull-up resistors | ||
28 | |||
29 | ## Optional Hardware | ||
30 | A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and turned on via `AUDIO_ENABLE`. | ||
31 | |||
32 | ## Wiring | ||
33 | |||
34 | The 3 wires of the TRS/TRRS cable need to connect GND, VCC, and digital pin 3 (i.e. | ||
35 | PD0 on the ATmega32u4) between the two Pro Micros. | ||
36 | |||
37 | Next, wire your key matrix to any of the remaining 17 IO pins of the pro micro | ||
38 | and modify the `matrix.c` accordingly. | ||
39 | |||
40 | The wiring for serial: | ||
41 | |||
42 |  | ||
43 | |||
44 | The wiring for i2c: | ||
45 | |||
46 |  | ||
47 | |||
48 | The pull-up resistors may be placed on either half. It is also possible | ||
49 | to use 4 resistors and have the pull-ups in both halves, but this is | ||
50 | unnecessary in simple use cases. | ||
51 | |||
52 | You can change your configuration between serial and i2c by modifying your `config.h` file. | ||
53 | |||
54 | ## Notes on Software Configuration | ||
55 | |||
56 | the keymaps in here are for the 4x5 layout of the keyboard only. | ||
57 | |||
58 | ## Flashing | ||
59 | |||
60 | To flash your firmware take a look at: [Flashing Instructions and Bootloader Information](https://docs.qmk.fm/#/flashing). | ||
61 | |||
62 | Under Windows the most convenient way is installing the [QMK Drivers](https://github.com/qmk/qmk_driver_installer/releases) and use the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases). | ||
63 | |||
64 | |||
65 | ## Choosing which board to plug the USB cable into (choosing Master) | ||
66 | |||
67 | ### Setting the right or left hand as master | ||
68 | |||
69 | If you always plug the usb cable into the right board, add an extra flag to your `config.h` | ||
70 | ``` | ||
71 | #define MASTER_RIGHT | ||
72 | ``` | ||
73 | |||
74 | OR | ||
75 | |||
76 | ``` | ||
77 | #define MASTER_LEFT | ||
78 | ``` | ||
79 | |||
80 | |||
81 | Notes on Using Pro Micro 3.3V | ||
82 | ----------------------------- | ||
83 | |||
84 | Do update the `F_CPU` parameter in `rules.mk` to `8000000` which reflects | ||
85 | the frequency on the 3.3V board. | ||
86 | |||
87 | Also, if the slave board is producing weird characters in certain columns, | ||
88 | update the following line in `matrix.c` to the following: | ||
89 | |||
90 | ``` | ||
91 | // _delay_us(30); // without this wait read unstable value. | ||
92 | _delay_us(300); // without this wait read unstable value. | ||
93 | ``` | ||
diff --git a/keyboards/handwired/dactyl_promicro/rules.mk b/keyboards/handwired/dactyl_promicro/rules.mk new file mode 100644 index 000000000..a93de3685 --- /dev/null +++ b/keyboards/handwired/dactyl_promicro/rules.mk | |||
@@ -0,0 +1,66 @@ | |||
1 | # MCU name | ||
2 | #MCU = at90usb1287 | ||
3 | MCU = atmega32u4 | ||
4 | |||
5 | # Processor frequency. | ||
6 | # This will define a symbol, F_CPU, in all source code files equal to the | ||
7 | # processor frequency in Hz. You can then use this symbol in your source code to | ||
8 | # calculate timings. Do NOT tack on a 'UL' at the end, this will be done | ||
9 | # automatically to create a 32-bit value in your source code. | ||
10 | # | ||
11 | # This will be an integer division of F_USB below, as it is sourced by | ||
12 | # F_USB after it has run through any CPU prescalers. Note that this value | ||
13 | # does not *change* the processor frequency - it should merely be updated to | ||
14 | # reflect the processor speed set externally so that the code can use accurate | ||
15 | # software delays. | ||
16 | F_CPU = 16000000 | ||
17 | |||
18 | # | ||
19 | # LUFA specific | ||
20 | # | ||
21 | # Target architecture (see library "Board Types" documentation). | ||
22 | ARCH = AVR8 | ||
23 | |||
24 | # Input clock frequency. | ||
25 | # This will define a symbol, F_USB, in all source code files equal to the | ||
26 | # input clock frequency (before any prescaling is performed) in Hz. This value may | ||
27 | # differ from F_CPU if prescaling is used on the latter, and is required as the | ||
28 | # raw input clock is fed directly to the PLL sections of the AVR for high speed | ||
29 | # clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' | ||
30 | # at the end, this will be done automatically to create a 32-bit value in your | ||
31 | # source code. | ||
32 | # | ||
33 | # If no clock division is performed on the input clock inside the AVR (via the | ||
34 | # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. | ||
35 | F_USB = $(F_CPU) | ||
36 | |||
37 | # Bootloader | ||
38 | # This definition is optional, and if your keyboard supports multiple bootloaders of | ||
39 | # different sizes, comment this out, and the correct address will be loaded | ||
40 | # automatically (+60). See bootloader.mk for all options. | ||
41 | BOOTLOADER = caterina | ||
42 | |||
43 | # Interrupt driven control endpoint task(+60) | ||
44 | OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT | ||
45 | |||
46 | # Build Options | ||
47 | # change to "no" to disable the options, or define them in the Makefile in | ||
48 | # the appropriate keymap folder that will get included automatically | ||
49 | # | ||
50 | BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) | ||
51 | MOUSEKEY_ENABLE = yes # Mouse keys(+4700) | ||
52 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | ||
53 | CONSOLE_ENABLE = no # Console for debug(+400) | ||
54 | COMMAND_ENABLE = yes # Commands for debug and configuration | ||
55 | NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||
56 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | ||
57 | MIDI_ENABLE = no # MIDI controls | ||
58 | AUDIO_ENABLE = no # Audio output on port C6 | ||
59 | UNICODE_ENABLE = no # Unicode | ||
60 | BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID | ||
61 | RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. | ||
62 | |||
63 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | ||
64 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | ||
65 | |||
66 | SPLIT_KEYBOARD = yes | ||