kinx-project / kint

kinT keyboard controller (Kinesis controller replacement)
Other
321 stars 39 forks source link

Adding Kinesis Triple Pedal Support #35

Open afonsoguerra opened 3 years ago

afonsoguerra commented 3 years ago

I am a current user of the KB600 + foot pedal. Foot pedal helps me avoid typing chords, so it includes layer switch, shift and control.

I would be very interested in teaming up to implement support for this. I can see in Issue #9 that the foot pedal connector comes out with the standard plug / original USB cable and is well labelled there.

In an ideal world, I would love some help to modify the PCB so that:

Notes:

Ideas and feedback welcomed.

stapelberg commented 3 years ago
  • I don't have a KB500 to see how the inside/plug is setup

AFAICT, the USB cable is unchanged between KB500 and KB600.

afonsoguerra commented 3 years ago

I have decided to try to source some boards and attempt to get this working in practice. Hopefully once I get this sorted it will be easy for someone with more experience than me to change the PCB to implement it there.

afonsoguerra commented 3 years ago

The board is working great, and I finally sourced some plugs for the original cable (that were sold out in digikey). Now, as a start, I would like to just try to get this to work for me. The easiest way is for me to connect the pedal hard wired into a keyboard key. Can you help me find the Teensy 4.0 pins that are connected to the "keypad" key on the keyboard?

stapelberg commented 3 years ago

Can you help me find the Teensy 4.0 pins that are connected to the "keypad" key on the keyboard?

Take a look at https://github.com/kinx-project/kint/issues/16, that should contain everything you need to get started :)

hellmind commented 1 year ago

@afonsoguerra Were you able to get your pedal working? I'd like to connect mine. Right now, I'm using it with the original controller for the Kinesis Advantage 2, simulating the num lock key.

afonsoguerra commented 1 year ago

Due to lack of time I abandoned the original idea. I got it working instead by modifying a dumbpad macropad to have the plug for the triple pedal (phone cable).

If you don't need it to be programmable and always want the same key it should be easy to solder to the kint board.

I find that for the kint with qmk, there are other good ways to switch layers, like autoshift and one shot modifiers, that means I don't need the pedals that much on the kinesis. They are a godsend for repetitive tasks though.

nateprice7 commented 9 months ago

In case it helps anyone I got the triple foot pedal working recently by soldering the wires for pedal 1, 2, and 3 to pins 35, 34, and 33 respectively on a teensy 4.1. I then wired the common to a ground pin(probably could have connected it to pin 36, but didn't try) and made the following changes to the qmk_repo to build the keymap.

diff --git a/keyboards/kinesis/kint41/info.json b/keyboards/kinesis/kint41/info.json
index eec726cf51..07ab52d955 100644
--- a/keyboards/kinesis/kint41/info.json
+++ b/keyboards/kinesis/kint41/info.json
@@ -21,8 +21,8 @@
         "debounce_type": "sym_eager_pk"
     },
     "matrix_pins": {
-        "cols": ["LINE_PIN18", "LINE_PIN14", "LINE_PIN15", "LINE_PIN20", "LINE_PIN22", "LINE_PIN19", "LINE_PIN6"],
-        "rows": ["LINE_PIN8", "LINE_PIN9", "LINE_PIN10", "LINE_PIN11", "LINE_PIN7", "LINE_PIN16", "LINE_PIN5", "LINE_PIN3", "LINE_PIN4", "LINE_PIN1", "LINE_PIN0", "LINE_PIN2", "LINE_PIN17", "LINE_PIN23", "LINE_PIN21"]
+        "cols": ["LINE_PIN18", "LINE_PIN14", "LINE_PIN15", "LINE_PIN20", "LINE_PIN22", "LINE_PIN19", "LINE_PIN6", "LINE_PIN35", "LINE_PIN34", "LINE_PIN33"],
+        "rows": ["LINE_PIN8", "LINE_PIN9", "LINE_PIN10", "LINE_PIN11", "LINE_PIN7", "LINE_PIN16", "LINE_PIN5", "LINE_PIN3", "LINE_PIN4", "LINE_PIN1", "LINE_PIN0", "LINE_PIN2", "LINE_PIN17", "LINE_PIN23", "LINE_PIN21", "LINE_PIN36"]
     },
     "diode_direction": "COL2ROW",
     "indicators": {
@@ -121,7 +121,10 @@
                 {"matrix": [2, 5], "x": 6.25, "y": 8},
                 {"matrix": [6, 6], "x": 8.25, "y": 8},
                 {"matrix": [7, 5], "x": 9.25, "y": 7, "h": 2},
-                {"matrix": [6, 5], "x": 10.25, "y": 7, "h": 2}
+                {"matrix": [6, 5], "x": 10.25, "y": 7, "h": 2},
+                {"matrix": [15, 7], "x": 16, "y": 0, "h": 0.85},
+                {"matrix": [15, 8], "x": 17, "y": 0, "h": 0.85},
+                {"matrix": [15, 9], "x": 18, "y": 0, "h": 0.85}
             ]
         }
     }

diff --git a/keyboards/kinesis/keymaps/default/keymap.c b/keyboards/kinesis/keymaps/default/keymap.c
index b60b7ddf3b..d9307197e0 100644
--- a/keyboards/kinesis/keymaps/default/keymap.c
+++ b/keyboards/kinesis/keymaps/default/keymap.c
@@ -30,6 +30,9 @@
 *                                 | BkSp | Del  |------|         |------|Return| Space|
 *                                 |      |      | End  |         | PgDn |      |      |
 *                                 `--------------------'         `--------------------'
+*                                                ,-------------------.
+*                                                | Esc | Esc  |  Esc |
+*                                                `-------------------'
 */

 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -43,7 +46,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
               KC_GRV,   KC_INS,   KC_LEFT,  KC_RGHT,                                                                                       KC_UP,    KC_DOWN,  KC_LBRC,  KC_RBRC,
                                                       KC_LCTL,  KC_LALT,                                               KC_RGUI,  KC_RCTL,
                                                                 KC_HOME,                                               KC_PGUP,
-                                            KC_BSPC,  KC_DEL,   KC_END,                                                KC_PGDN,  KC_ENTER, KC_SPC
+                                            KC_BSPC,  KC_DEL,   KC_END,                                                KC_PGDN,  KC_ENTER, KC_SPC,
+                                            KC_ESC,KC_ESC,KC_ESC
   )

 };

I'm really new to QMK so there are probably better ways to do this, but it has been working for me and may be a good starting point for someone else.