Sfoglia il codice sorgente

[keymap] Add VIA support for Hub16 (#9638)

* fix encoder switch not staying depressed

* add via support

* change default keymap

* change VID-PID

* remove LTO

* fix hold bug keeping debouncing
Josh Johnson 6 anni fa
parent
commit
07a817d3e5

+ 4 - 4
keyboards/hub16/config.h

@@ -20,8 +20,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "config_common.h"
 
 /* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x8F73
+#define VENDOR_ID 0x6A6A
+#define PRODUCT_ID 0x4810
 #define DEVICE_VER 0x0001
 #define MANUFACTURER Josh Johnson
 #define PRODUCT Hub16
@@ -42,9 +42,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  */
 #define MATRIX_ROW_PINS \
-    { F0, C7, C6, B6, E6}  
+    { F0, C7, C6, B6, E6}
 #define MATRIX_COL_PINS \
-    { F4, F1, D5, D3 }  
+    { F4, F1, D5, D3 }
 
 /* COL2ROW, ROW2COL*/
 #define DIODE_DIRECTION COL2ROW

+ 66 - 0
keyboards/hub16/keymaps/via/keymap.c

@@ -0,0 +1,66 @@
+/* Copyright 2019 Josh Johnson
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [0] = LAYOUT( /* Base */
+      KC_MUTE,   KC_MPLY,
+    KC_7, KC_8, KC_9, KC_PAST,
+    KC_4, KC_5, KC_6, KC_PMNS,
+    KC_1, KC_2, KC_3, KC_PPLS,
+    MO(1), KC_0, KC_PDOT, KC_PENT
+  ),
+
+  [1] = LAYOUT( /* LED Control */
+        _______,           _______,
+    _______, RGB_MOD, RGB_RMOD, RGB_TOG,
+    RGB_VAD, RGB_VAI, RGB_HUD,  RGB_HUI,
+    RGB_SAD, RGB_SAI, _______,  _______,
+    _______, _______, RESET,    _______
+  ),
+
+  [2] = LAYOUT(
+        _______,           _______,
+    _______, _______, _______, _______,
+    _______, _______, _______, _______,
+    _______, _______, _______, _______,
+    _______, _______, _______, _______
+  ),
+
+  [3] = LAYOUT(
+        _______,           _______,
+    _______, _______, _______, _______,
+    _______, _______, _______, _______,
+    _______, _______, _______, _______,
+    _______, _______, _______, _______
+  ),
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+    if (index == 0) { /* Left Encoder */
+        if (clockwise) {
+            tap_code(KC_VOLD);
+        } else {
+            tap_code(KC_VOLU);
+        }
+    } else if (index == 1) { /* Right Encoder */
+        if (clockwise) {
+            tap_code(KC_MPRV);
+        } else {
+            tap_code(KC_MNXT);
+        }
+    }
+}

+ 4 - 0
keyboards/hub16/keymaps/via/rules.mk

@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+TAP_DANCE_ENABLE = no

+ 13 - 17
keyboards/hub16/matrix.c

@@ -25,7 +25,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // Encoder things
 #define SWITCH_1 F7
 #define SWITCH_2 D7
-static bool read_encoder_values(matrix_row_t current_matrix[], uint8_t current_row);
+static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row);
 
 #ifdef MATRIX_MASKED
 extern const matrix_row_t matrix_mask[];
@@ -128,7 +128,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
     }
 
     // Unselect row
-    unselect_row(current_row); 
+    unselect_row(current_row);
 
     return (last_row_value != current_matrix[current_row]);
 }
@@ -223,27 +223,23 @@ uint8_t matrix_scan(void) {
     debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
 
     // Read encoder switches, already debounced
-    changed |= read_encoder_values(matrix, 4);    
+    changed |= read_encoder_switches(matrix, 4);
 
     matrix_scan_quantum();
     return (uint8_t)changed;
 }
 
 // Customisations for the encoders
-void matrix_init_kb(void){
+void matrix_init_kb(void) {
     setPinInput(SWITCH_1);
     setPinInput(SWITCH_2);
 }
 
-void matrix_scan_kb(void){
+void matrix_scan_kb(void) {}
 
-}
-
-void matrix_print(void){
-
-}
+void matrix_print(void) {}
 
-static bool read_encoder_values(matrix_row_t current_matrix[], uint8_t current_row) {
+static bool read_encoder_switches(matrix_row_t current_matrix[], uint8_t current_row) {
     // Store last value of row prior to reading
     matrix_row_t last_row_value = current_matrix[current_row];
 
@@ -253,18 +249,18 @@ static bool read_encoder_values(matrix_row_t current_matrix[], uint8_t current_r
     // Debounce the encoder buttons using a shift register
     static uint8_t btn_1_array;
     static uint8_t btn_2_array;
-    bool    btn_1_rising = 0;
-    bool    btn_2_rising = 0;
+    bool           btn_1_pressed = 0;
+    bool           btn_2_pressed = 0;
     btn_1_array <<= 1;
     btn_2_array <<= 1;
     btn_1_array |= readPin(SWITCH_1);
     btn_2_array |= readPin(SWITCH_2);
-    (btn_1_array == 0b01111111) ? (btn_1_rising = 1) : (btn_1_rising = 0);
-    (btn_2_array == 0b01111111) ? (btn_2_rising = 1) : (btn_2_rising = 0);
+    (btn_1_array == 0b11111111) ? (btn_1_pressed = 1) : (btn_1_pressed = 0);
+    (btn_2_array == 0b11111111) ? (btn_2_pressed = 1) : (btn_2_pressed = 0);
 
     // Populate the matrix row with the state of the encoder
-    current_matrix[current_row] |= btn_1_rising ? (1 << 0) : 0;
-    current_matrix[current_row] |= btn_2_rising ? (1 << 1) : 0;
+    current_matrix[current_row] |= btn_1_pressed ? (1 << 0) : 0;
+    current_matrix[current_row] |= btn_2_pressed ? (1 << 1) : 0;
 
     return (last_row_value != current_matrix[current_row]);
 }