kint icon indicating copy to clipboard operation
kint copied to clipboard

Adding Kinesis Triple Pedal Support

Open afonsoguerra opened this issue 3 years ago • 7 comments

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:

  • It includes a plug to re-use the original cable
  • exposes pins so one can craft a small microUSB cable (or other option) for the Teensy
  • takes the pins from the foot pedal switch (currently 4 = ground+1 per switch) and aggregates them with diodes so that only two pins of the teensy are needed.
  • connect those two pins to the teensy so they can be used as normal keys within QMK.

Notes:

  • I don't have a KB500 to see how the inside/plug is setup
  • I don't necessarily need the three switches, but at least one would help a lot.
  • A foot pedal is very easy to build using an easily available electric piano pedal (<10 bucks online) a 6.3mm female plug + RJ11 plug.
  • I am planning to use a Teensy 4.1, so can happily use the extra pins and avoid disrupting the current pinout.

Ideas and feedback welcomed.

afonsoguerra avatar May 20 '21 09:05 afonsoguerra

  • I don't have a KB500 to see how the inside/plug is setup

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

stapelberg avatar May 20 '21 15:05 stapelberg

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 avatar Jun 05 '21 09:06 afonsoguerra

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?

afonsoguerra avatar Jul 08 '21 07:07 afonsoguerra

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 :)

stapelberg avatar Jul 08 '21 08:07 stapelberg

@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.

hellmind avatar Jul 17 '23 03:07 hellmind

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.

afonsoguerra avatar Jul 17 '23 05:07 afonsoguerra

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.

nateprice7 avatar Jan 02 '24 15:01 nateprice7