Author Topic: ErgoDox - Custom split ergo keyboard.  (Read 913321 times)

0 Members and 1 Guest are viewing this topic.

Offline oneproduct

  • Posts: 858
  • Location: Montreal, Canada
  • @Ubisoft
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1850 on: Thu, 04 April 2013, 17:48:16 »
@sordna
Alright, here are some pictures. It was my first time soldering so it looks terrible, I know. This is also the first time I looked at it so zoomed in and it's even worse than even I thought haha. I didn't have good wire cutters at the time either so the remainders of the wire used to short the contacts near the 3.5mm jack are way too long aesthetically but I'll be cutting those shorter. I'm going to try to desolder as well as I can using the copper braid I have and redo everything pictured.
Layout: Colemak
Fastest typing speed: 131 WPM on typeracer, 136 WPM on 10fastfingers.
Daily driver: Filco Tenkeyless MX Brown with ergonomically weighted, lubed springs.
Ergo keyboards: Truly Ergonomic, Kinesis Advantage, Ergodox

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1851 on: Thu, 04 April 2013, 18:15:26 »
Soldering is not terribly bad, I've seen worse :-) My main point of concern is the lower rightmost joint in the last picture, that corner pin of the chip looks like a cold solder joint. Better redo that one. Some of the other ones on the same side look like they could use some more solder as well. If you could post 2 more hi-res photos showing the entire keyboard from top and bottom, it would help us see orientation of diodes and other components. I'm also wondering wether it's possible that the IO expander or even the TRRS cable is bad...
By the way, I wouldn't plug/unplug the TRRS cable while the keyboard is connected. Also, I wouldn't expect the computer to see this as a new USB device when plugged in, the left side of the keyboard is merely the rest of the same matrix, the computer sees this as 1 keyboard whether the left side is plugged in or not. The halves are designed for hot plugging/unplugging.
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline oneproduct

  • Posts: 858
  • Location: Montreal, Canada
  • @Ubisoft
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1852 on: Thu, 04 April 2013, 18:27:01 »
Sadly this is about as hi-res as I can get, I've only got a webcam or cellphone camera to work with, which are both quite terrible. This is actually probably the worst part of my soldering as it was near the beginning. Towards the end I was quite happy with how I did on the switches, getting that healthy kind of silver cone shape running up along the pins. I used built in diodes like you, so I didn't have to worry about the SMD diodes except on the LEDs which are all working fine.

Time to struggle with copper braid!
Layout: Colemak
Fastest typing speed: 131 WPM on typeracer, 136 WPM on 10fastfingers.
Daily driver: Filco Tenkeyless MX Brown with ergonomically weighted, lubed springs.
Ergo keyboards: Truly Ergonomic, Kinesis Advantage, Ergodox

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1853 on: Thu, 04 April 2013, 18:36:08 »
Wait !!! For switches with built-in diodes, you need to change the firmware because the cathodes on the left side face the circle pad instead of the square. Go to MD and download the source code when you build your layout, then change keyboard/ergodox/options.h so you have:

        #define  TEENSY__DRIVE_ROWS       0
        #define  TEENSY__DRIVE_COLUMNS    1
        #define  MCP23018__DRIVE_ROWS     1
        #define  MCP23018__DRIVE_COLUMNS  0

EDIT: Attaching a zip with the 3 default layouts (qwerty/dvorak/colemak) compiled with the options for switches that have integrated diodes. Pick one of the hex files and load it. This should make your left side work! Man, this has been discussed both here and MD, I asked them to allow downloading the source code for this very reason, see the Discussion tab in their layout configurator page. I'm very happy with their support on this!

* layouts_for_integrated_switch_diodes.zip (20.95 kB - downloaded 86 times.)
« Last Edit: Thu, 04 April 2013, 21:23:40 by sordna »
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline oneproduct

  • Posts: 858
  • Location: Montreal, Canada
  • @Ubisoft
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1854 on: Thu, 04 April 2013, 19:04:38 »
Ah, I didn't even think of that! How very true. If you'll allow me a moment I'll work on a layout real quick and then PM it to you just for a quick test. I'll get things set up to compile things on my own though later on so I don't have to hassle you. I could probably do so in linux actually but I'm not set up in Windows at the moment.

edit: Ah, see you've edited. Ignore this!
Layout: Colemak
Fastest typing speed: 131 WPM on typeracer, 136 WPM on 10fastfingers.
Daily driver: Filco Tenkeyless MX Brown with ergonomically weighted, lubed springs.
Ergo keyboards: Truly Ergonomic, Kinesis Advantage, Ergodox

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1855 on: Thu, 04 April 2013, 19:27:05 »
So, does it work? Also what did you do regarding the 3 switches on the right side where the LEDs are supposed to go?
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline oneproduct

  • Posts: 858
  • Location: Montreal, Canada
  • @Ubisoft
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1856 on: Thu, 04 April 2013, 19:28:36 »
For those ones I took out the built in diodes and used the SMD diodes. Sent you a PM just now.

Edit: Your hex worked perfectly. You saved me a bunch of troubleshooting and frustration, thanks!
« Last Edit: Thu, 04 April 2013, 19:48:23 by oneproduct »
Layout: Colemak
Fastest typing speed: 131 WPM on typeracer, 136 WPM on 10fastfingers.
Daily driver: Filco Tenkeyless MX Brown with ergonomically weighted, lubed springs.
Ergo keyboards: Truly Ergonomic, Kinesis Advantage, Ergodox

Offline danielucf

  • Horrible Mailman
  • * Elevated Elder
  • Posts: 2469
  • Location: Orlando
  • Hmmmm beer.
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1857 on: Thu, 04 April 2013, 20:36:56 »
well I finally got this bad boy working and man is it going to take a long time to get used to it. Took me minutes to type this accurately without turning on some crazy layer. Not sure if I even want to get used to it, what are the benefits again? :p the fun of the build is over lol
VE.A 67g Zealios | GH60 MX Clears |

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1858 on: Thu, 04 April 2013, 21:08:18 »
You can build a layout without layers, if they bother you :-)   
If you really think you won't use it, then sell it to a person that wants one but can't build it, there's a few people that are looking for an assembled keyboard.
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline oneproduct

  • Posts: 858
  • Location: Montreal, Canada
  • @Ubisoft
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1859 on: Thu, 04 April 2013, 21:47:18 »
Giving it a first spin now and the first thing that I notice is that the thumb keys are much further away than on the Kinesis. I've got pretty small hands so it's quite a stretch for me. I feel much more comfortable when shifting my fingers inwards one column but then all the lettering would be messed up.
Layout: Colemak
Fastest typing speed: 131 WPM on typeracer, 136 WPM on 10fastfingers.
Daily driver: Filco Tenkeyless MX Brown with ergonomically weighted, lubed springs.
Ergo keyboards: Truly Ergonomic, Kinesis Advantage, Ergodox

Offline Findecanor

  • Posts: 4570
  • Location: Koriko
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1860 on: Thu, 04 April 2013, 21:59:47 »
Giving it a first spin now and the first thing that I notice is that the thumb keys are much further away than on the Kinesis.
I was afraid of that. Have you tried using the innermost key on the bottom row as a thumbkey? I wonder if an off-center 1.25 Alt key from a G81-3000 keyboard would fit there..

Still waiting for my PCBs ... Argh, frustrating when others have got keyboards completed already. Soon now, I hope.
Man must shape his tools lest they shape him
-- Arthur Miller

Offline litster

  • Posts: 2868
  • rare caps?! THAT'S A SMILIN
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1861 on: Thu, 04 April 2013, 22:06:54 »
Been away for a while.  You guys are making good progress. 

For the stabilizers, you don't really need it.  You can do what sordna says, cut the clips and glue the thing to the plate, but I don't feel any difference without stabilizers for those keys.  They are short enough to not be affected.

Offline oneproduct

  • Posts: 858
  • Location: Montreal, Canada
  • @Ubisoft
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1862 on: Thu, 04 April 2013, 22:07:23 »
That innermost bottom row key does indeed seem like it could be a thumb key. My thumb is tempted to land between it and the actual thumb key, and either of them could probably work. I'll give it some more testing tomorrow and let you know how I feel about it.
Layout: Colemak
Fastest typing speed: 131 WPM on typeracer, 136 WPM on 10fastfingers.
Daily driver: Filco Tenkeyless MX Brown with ergonomically weighted, lubed springs.
Ergo keyboards: Truly Ergonomic, Kinesis Advantage, Ergodox

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1863 on: Thu, 04 April 2013, 22:41:29 »
I agree that the thumb clusters are too far away from the hands. If I could change something I would make the innermost column bottom key a 1x size key, which would allow to move the thumb cluster right next to the innermost bottom row key.

Alternatively, the whole thumbcluster could move a bit down and then to the right (and avoid resizing the inner column key).
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline Larken

  • Posts: 623
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1864 on: Thu, 04 April 2013, 22:53:57 »
Been using mine for about three days and muscle memory is finally starting to kick in. Still get certain button presses wrong and definitely not as fast as I was with a traditional layout, but I can definitely feel the difference in the decrease in the amount of finger movement and the fact that I probably never did learn how to touch type in the proper way in the past.

The innermost bottom row key is indeed a very good thumb button. For a while I used it as a spacebar until I realised that if I put it as a crutch there I'd never get used to using the actual thumb button as a spacebar. Now it serves nicely as a ctrl button on the left and a shift button on the right - the position of the qwerty "?" beside the right shift is just a tad too awkward to reach, for some reason.

Here's a picture of mine, with keys pulled from an old cherry g80-8113.




| Ergodox #1 | Ergodox #2 |


Filco Majestouch Brown | Ducky 1087 Brown | Cherry G80-3494 Reds | Unicomp Ultra Classics | Cherry G80-8113 Clears |

Offline WRXChris

  • Posts: 487
  • Location: Breckenridge, CO
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1865 on: Thu, 04 April 2013, 22:56:14 »
My kit arrived yesterday, after a shipping issue/delay and some excellent customer service by Massdrop that saved me a 40 minute drive to the UPS facility to pick it up.  Thanks Massdrop!

I plan on using SMT diodes and this will be my first time soldering SMT, but I have plenty of through-hole soldering experience.  Should I just use the .032" solder I have or should I order some .020"? 

Thanks in advance!

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1866 on: Thu, 04 April 2013, 23:02:45 »
Giving it a first spin now and the first thing that I notice is that the thumb keys are much further away than on the Kinesis. I've got pretty small hands so it's quite a stretch for me. I feel much more comfortable when shifting my fingers inwards one column but then all the lettering would be messed up.

So here are 2 alternative ways that would improve the thumbcluster position, either move it down and right, or make the lower innermost column key (the one without a keycap on the photo) a single width key, and move the thumbcluster just to the right.

« Last Edit: Thu, 04 April 2013, 23:04:16 by sordna »
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline wolfv

  • Posts: 252
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1867 on: Fri, 05 April 2013, 00:02:29 »
I am really surprised no one has put anime girls into that big-clear acrylic hand portion.

would've thought that's the first thing they'd do.. with all the miku-s and pokemons.

Sounds cool, but would take a lot of effort to cut it to fit around the keys.

LED-lit acrylic etchings on big hand portion :cool:.  Similar to: http://www.evilmadscientist.com/2008/edge-lit-holiday-cards/

Offline seferphier

  • Posts: 155
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1868 on: Fri, 05 April 2013, 02:46:44 »
Been using mine for about three days and muscle memory is finally starting to kick in. Still get certain button presses wrong and definitely not as fast as I was with a traditional layout, but I can definitely feel the difference in the decrease in the amount of finger movement and the fact that I probably never did learn how to touch type in the proper way in the past.

The innermost bottom row key is indeed a very good thumb button. For a while I used it as a spacebar until I realised that if I put it as a crutch there I'd never get used to using the actual thumb button as a spacebar. Now it serves nicely as a ctrl button on the left and a shift button on the right - the position of the qwerty "?" beside the right shift is just a tad too awkward to reach, for some reason.

Here's a picture of mine, with keys pulled from an old cherry g80-8113.

Show Image





Very very nice.

Offline wolfv

  • Posts: 252
Vote for sordna's second alternative way to improve the thumb cluster position
« Reply #1869 on: Fri, 05 April 2013, 10:11:36 »
Giving it a first spin now and the first thing that I notice is that the thumb keys are much further away than on the Kinesis. I've got pretty small hands so it's quite a stretch for me. I feel much more comfortable when shifting my fingers inwards one column but then all the lettering would be messed up.

So here are 2 alternative ways that would improve the thumbcluster position, either move it down and right, or make the lower innermost column key (the one without a keycap on the photo) a single width key, and move the thumbcluster just to the right.

I vote for sordna's second alternative way to improve the thumb cluster position:
make the lower innermost column key (the one without a keycap on the photo) a single width key, and move the thumbcluster just to the right.

I already put in an order for Massdrop's second batch of ErgoDox.  Is there some way to have the design changed before the PCB and cases are cut?
« Last Edit: Fri, 05 April 2013, 10:14:19 by wolfv »

Offline TheQsanity

  • Posts: 1165
  • SmallFry Lovin'
Re: Re: ErgoDox - Custom split ergo keyboard.
« Reply #1870 on: Fri, 05 April 2013, 10:26:21 »
My kit arrived yesterday, after a shipping issue/delay and some excellent customer service by Massdrop that saved me a 40 minute drive to the UPS facility to pick it up.  Thanks Massdrop!

I plan on using SMT diodes and this will be my first time soldering SMT, but I have plenty of through-hole soldering experience.  Should I just use the .032" solder I have or should I order some .020"? 

Thanks in advance!

Doesnt matter too much. It takes a little longer to melt the bigger one. I have both a .03 and a .022. I used .022 for smd only. They say they have the same amount of flux but the thinner one that I have doesnt leave a lot of extra flux when soldered on.

Anyone cleaned the flux off their pcb? And with what.
SmallFry! <3

Offline jcrouse

  • Posts: 709
  • Location: Missouri, USA
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1871 on: Fri, 05 April 2013, 12:24:59 »
Are the tiny solder pads for the smd's pre-soldered or are they bare pads? I am guessing bare but thought I would ask.

Thanks,
John

Offline Tafryn

  • Posts: 7
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1872 on: Fri, 05 April 2013, 13:14:18 »
Are the tiny solder pads for the smd's pre-soldered or are they bare pads? I am guessing bare but thought I would ask.

Thanks,
John

They are bare pads.

Offline vatin

  • Posts: 174
  • Location: Bangkok, Thailand
Re: Re: ErgoDox - Custom split ergo keyboard.
« Reply #1873 on: Fri, 05 April 2013, 14:10:42 »
Giving it a first spin now and the first thing that I notice is that the thumb keys are much further away than on the Kinesis. I've got pretty small hands so it's quite a stretch for me. I feel much more comfortable when shifting my fingers inwards one column but then all the lettering would be messed up.

Thank you for this important info. Another reason to give ergodox a miss. Having tiny hands the kinesis thumb cluster is already a stretch for me. Until better design comes along...
Keyboardio Model01

Offline bebuxe

  • Posts: 146
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1874 on: Fri, 05 April 2013, 15:28:13 »
@vatin
Um, I am not so sure about the condition of your hand, but if it is tiny, you should be typing with more arm and wrist movement (using the bigger muscles). I suggest a complete matrix KB (squares only), or maybe glove input device. Even then, if your hands are the issue, I need to make my pen device, for the arm handicapped.

Offline Findecanor

  • Posts: 4570
  • Location: Koriko
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1875 on: Fri, 05 April 2013, 16:59:48 »
That innermost bottom row key does indeed seem like it could be a thumb key. My thumb is tempted to land between it and the actual thumb key, and either of them could probably work.
I have got an idea for extending the key from the thumb cluster into the gap.
First, instead of using 12 keyscaps, you would have to use 11 keyscaps, but instead of a regular 1-unit key for Space, use the end part of an actual Space Bar keycap, cut at an angle. Because the keycap mounts are the same for switches and stabilisers, you can attach the end of a space bar to a switch. (There are weird space bars that won't fit, but they are unusual.)
I'll show you once I have my PCBs...
« Last Edit: Fri, 05 April 2013, 17:04:57 by Findecanor »
Man must shape his tools lest they shape him
-- Arthur Miller

Offline AloisiusFauxly

  • Posts: 32
I already put in an order for Massdrop's second batch of ErgoDox.  Is there some way to have the design changed before the PCB and cases are cut?

Almost certainly not. It took something like two years to realize this keyboard.

Offline WRXChris

  • Posts: 487
  • Location: Breckenridge, CO
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1877 on: Fri, 05 April 2013, 18:55:10 »
My kit arrived yesterday, after a shipping issue/delay and some excellent customer service by Massdrop that saved me a 40 minute drive to the UPS facility to pick it up.  Thanks Massdrop!

I plan on using SMT diodes and this will be my first time soldering SMT, but I have plenty of through-hole soldering experience.  Should I just use the .032" solder I have or should I order some .020"? 

Thanks in advance!

Doesnt matter too much. It takes a little longer to melt the bigger one. I have both a .03 and a .022. I used .022 for smd only. They say they have the same amount of flux but the thinner one that I have doesnt leave a lot of extra flux when soldered on.

Anyone cleaned the flux off their pcb? And with what.

thanks man, I think I'm going to order some .02, but good to know that .03 will be okay!

I use 91+ percent rubbing alcohol and a toothbrush to clean flux, and I'm pretty sure it does the trick but I would wait for an expert to chime in.

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1878 on: Fri, 05 April 2013, 19:08:40 »
Got OrangeJewce's today! I'll  be composing a build log after I finish the first one.

Offline CPTBadAss

  • Woke up like this
  • Posts: 14305
  • Location: CT, USA
  • Rich Homie Huang.
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1879 on: Fri, 05 April 2013, 19:09:31 »
It's beautiful....and it has blues!! Plus that bench is awesome :D
Please check out TactileZine.com!

Offline Halverson

  • Traitor Supreme
  • Posts: 6790
  • GIRLSHARK WIZBRO
ErgoDox - Custom split ergo keyboard.
« Reply #1880 on: Fri, 05 April 2013, 19:26:23 »
Just need to put switches in mine and figure out the teensy. And probably won't work cause I suck :D

Offline wolfv

  • Posts: 252
I already put in an order for Massdrop's second batch of ErgoDox.  Is there some way to have the design changed before the PCB and cases are cut?

Almost certainly not. It took something like two years to realize this keyboard.

Thanks AloisiusFauxly.  That makes sense.

How do design decisions get made on this open source project? (moving the thumb cluster closer to the hand for example)?
Seems like Massdrop is responsive to customers; what and who are they listening too?
There are so many places to express ErgoDox opinions:

Offline william

  • Posts: 26
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1882 on: Fri, 05 April 2013, 19:56:43 »
Since there hasn't been a whole lot of talk about macros, I thought I'd share with you what I've figured out so far. I don't know how to program in C, so the best I have come up with is copying, pasting, and modifying bits of Ben's existing code. Here are my results.

Tutorial
Adding a Shift modifier:


The code for this is already in the firmware, and can be applied to any existing keybinding relatively easily. Navigate to ...\keyboard\ergodox\layout\ and open the .c file that corresponds with your chosen layout. Toward the bottom of the file there should be a section like this:
Code: [Select]
// ----------------------------------------------------------------------------

// PRESS ----------------------------------------------------------------------
const void_funptr_t PROGMEM _kb_layout_press[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
// LAYER 0
KB_MATRIX_LAYER(
// unused
NULL,
// left hand
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, sshprre,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, sshprre,
cntprre, cntprre, cntprre, cntprre, kprrel,
kprrel, kprrel,
NULL, NULL, kprrel,
kprrel, kprrel, kprrel,
// right hand
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
sshprre, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
lpush1, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel,
kprrel, NULL, NULL,
kprrel, kprrel, kprrel
),
The code should be (more or less) formatted to look like the two halves of your keyboard. This section of the code tells us what sort of signal a key sends when it is pressed down. There is a corresponding section of code to in a minute.

All the "kprrel" represent keys that function normally with no modifiers. Keys labeled "sshprre" represent a key that will behave as if the shift key were being held when you press it. Keys labeled "lpush1" push the first layer to the top. The keys labeled "cntprre" behave as if the control key is being held when they are pressed. I had to add in a couple lines of code to make this work, which I will show you how to do soon.

If you modify any of the press states, you also need to modify their corresponding release states. They are found lower down in the code; this is what mine looks like:

Code: [Select]
// ----------------------------------------------------------------------------

// RELEASE --------------------------------------------------------------------
const void_funptr_t PROGMEM _kb_layout_release[KB_LAYERS][KB_ROWS][KB_COLUMNS] = {
// LAYER 0
KB_MATRIX_LAYER(
// unused
NULL,
// left hand
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, sshprre,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, sshprre,
cntprre, cntprre, cntprre, cntprre, kprrel,
kprrel, kprrel,
NULL, NULL, kprrel,
kprrel, kprrel, kprrel,
// right hand
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
sshprre, kprrel, kprrel, kprrel, kprrel, kprrel, kprrel,
lpop1, kprrel, kprrel, kprrel, kprrel,
kprrel, kprrel,
kprrel, NULL, NULL,
kprrel, kprrel, kprrel
),
Note that the only difference between this section and the PRESS section is that "lpush1" is now "lpop1". That is because in my layout, this is a layer toggle key. It is only active while held down.

To change a normal key into a key shift-modified version of itself, replace "kprrel" with "sshprre" in both the PRESS and RELEASE section corresponding to that key.

Adding a Control modifier:

Adding a control modifier also requires that you change "kprrel" in both the press and release sections of the code, but they need to be changed to "cntprre", and we need to add in a couple of code snippets. Towards the to of this file is a section of code titled DEFINITIONS. Paste this line of code onto a new line somewhere in this area
Code: [Select]
#define  cntprre  &kbfun_control_press_release
Next we need to locate ...\src\lib\key-functions\public\special.c

not too far down you should find some code that looks almost identical to this:
Code: [Select]
void kbfun_control_press_release(void) {
_kbfun_press_release(IS_PRESSED, KEY_LeftControl);
kbfun_press_release();
}

Paste the above code onto a new line near the very similar code.

Locate ...\lib\key-functions\public.h
Scroll down to the section titled \\special, and paste the following code on a new line:
Code: [Select]
void kbfun_control_press_release         (void);
And that's it! Now any key can be made to act as if the control key is held when pressed. I hope this information is useful to someone.

Offline AloisiusFauxly

  • Posts: 32
How do design decisions get made on this open source project? (moving the thumb cluster closer to the hand for example)?
Seems like Massdrop is responsive to customers; what and who are they listening too?

Massdrop is handling the logistics based on the work of forum members here and on Deskthority. They're doing great work to get kits assembled and shipped to people, but they haven't done anything on the design side of the project.

Dox came up with the idea (hence the name), and numerous people contributed to the design process both in this thread (seriously, go to page 1 and start reading) and a matching one on DT. At this point, the keyboard is done and Dox has moved on to other projects.

If you don't like the thumb cluster position, start a new thread for the ErgoWolf and see if there's any interest.

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1884 on: Fri, 05 April 2013, 20:51:44 »
Show Image

I just realized I put the switches in the plates backwards... dammit.

Offline esoomenona

  • Gnillort?
  • Posts: 5323
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1885 on: Fri, 05 April 2013, 20:58:03 »
Tsk.

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1886 on: Fri, 05 April 2013, 21:31:08 »
Ok, since I put them in backwards... Question time. What happens if you put the Teensy in the other side? (We really need a different thread for building stuff)

Offline esoomenona

  • Gnillort?
  • Posts: 5323
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1887 on: Fri, 05 April 2013, 21:40:21 »
Are you trying to work around not taking them out and putting them in properly? That thing doesn't look ergonomical anymore...

Offline Larken

  • Posts: 623
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1888 on: Fri, 05 April 2013, 21:40:32 »
i remember reading the ergodox thread from start to end at one point and I vaguely recall that the thumb clusters were already shifted once. After using mine for a couple of days, I find that the thumb buttons are fine where they are, and I have a feeling that bringing them closer as suggested might actually interfere with certain button presses, and it will cause problems for those with bigger hands. Muscle memory is a wonderful thing, and you'd get used to the layout as it is if you give it a chance.

p.s. I agree with the comment about the bench. it does look awesome.

| Ergodox #1 | Ergodox #2 |


Filco Majestouch Brown | Ducky 1087 Brown | Cherry G80-3494 Reds | Unicomp Ultra Classics | Cherry G80-8113 Clears |

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1889 on: Fri, 05 April 2013, 21:49:14 »
Are you trying to work around not taking them out and putting them in properly? That thing doesn't look ergonomical anymore...
No... I mean put the Teensy in the left hand (under the PCB, as to not screw up the pin assignments) and the I/O expander on the right hand(under the PCB again) so that you could unplug the right half from the left and still have a half a keyboard or use it like a gamer pad.

Offline bearcat

  • Posts: 99
  • Location: Seattle, WA
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1890 on: Fri, 05 April 2013, 21:57:48 »
For what it's worth, if people are interested in a smaller version of the ergodox, I've been working on one with an easier to reach thumb cluster, and a few less buttons.  More details here: http://geekhack.org/index.php?topic=40970.0.  I've got a prototype built, and i'll probably try it as my daily driver for a few more weeks to see if the thumb buttons need to shift out any further.

I am a huge fan of the ergodox -- i ordered two :) -- but once that door was opened, of course i started seeing things i wanted to change :D

If you guys are encouraged to change things around, go for it!  Prototyping, getting plates made, designing a case, these things can be done -- dox, litster, ic07 & bpiphany have blazed a great trail for us if we want to follow
« Last Edit: Fri, 05 April 2013, 22:04:08 by bearcat »

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1891 on: Fri, 05 April 2013, 22:09:47 »
i remember reading the ergodox thread from start to end at one point and I vaguely recall that the thumb clusters were already shifted once. After using mine for a couple of days, I find that the thumb buttons are fine where they are, and I have a feeling that bringing them closer as suggested might actually interfere with certain button presses, and it will cause problems for those with bigger hands. Muscle memory is a wonderful thing, and you'd get used to the layout as it is if you give it a chance.

I have very big hands and still find the thumb keys hard to reach compared to my kinesis advantage. I'm already used to the layout, I did 103 WPM on typeracer yesterday, which is actually better than what I usually get on my Advantage!
But the far large thumbkeys (ie the Enter key) is a bigger stretch compared to the Advantage.
It would only bring a benefit to move the thumbclusters closer to the hands in a future revision.
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline wolfv

  • Posts: 252
Massdrop is handling the logistics based on the work of forum members here and on Deskthority. They're doing great work to get kits assembled and shipped to people, but they haven't done anything on the design side of the project.

Dox came up with the idea (hence the name), and numerous people contributed to the design process both in this thread (seriously, go to page 1 and start reading) and a matching one on DT. At this point, the keyboard is done and Dox has moved on to other projects.

If you don't like the thumb cluster position, start a new thread for the ErgoWolf and see if there's any interest.
Thank you for the comprehensive answer AloisiusFauxly.
I am impressed with how the organizing came together, given the complexity of the hardware.
Really haven't seen anything like it before.  This online community is amazing.

I was hoping there might be on going development.  I will not be starting a keyboard thread.  I am lucky to have found ErgoDox when I needed it.

Offline Larken

  • Posts: 623
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1893 on: Fri, 05 April 2013, 22:34:09 »
i remember reading the ergodox thread from start to end at one point and I vaguely recall that the thumb clusters were already shifted once. After using mine for a couple of days, I find that the thumb buttons are fine where they are, and I have a feeling that bringing them closer as suggested might actually interfere with certain button presses, and it will cause problems for those with bigger hands. Muscle memory is a wonderful thing, and you'd get used to the layout as it is if you give it a chance.

I have very big hands and still find the thumb keys hard to reach compared to my kinesis advantage. I'm already used to the layout, I did 103 WPM on typeracer yesterday, which is actually better than what I usually get on my Advantage!
But the far large thumbkeys (ie the Enter key) is a bigger stretch compared to the Advantage.
It would only bring a benefit to move the thumbclusters closer to the hands in a future revision.

I'll take your word for it, as I'll admit that I haven't actually been using the further 2x thumb buttons as much as I should (still stuck on using the rightmost row as an enter due to sheer habit). But the furthest 1x buttons on the inside is definitely a reach for me, to the point where I use them mainly for pushing and popping layers only. But as it is, the current ergodox feels pretty good under my fingers so far. I'd love to see a new revision in the future, but I'm good for now.

on a different note, are you going to tent your ergodox? love to see what ideas you have for it.
| Ergodox #1 | Ergodox #2 |


Filco Majestouch Brown | Ducky 1087 Brown | Cherry G80-3494 Reds | Unicomp Ultra Classics | Cherry G80-8113 Clears |

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1894 on: Fri, 05 April 2013, 22:41:45 »
Don't get me wrong, I love it, but there is always room for improvement. Yes I will tent it using cardboard probably. I'll post some photos when I get around to do it. For now I am still thrilled I got my clicky buzzer to work, which turns my cherry reds into clicky switches :-)

Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1895 on: Fri, 05 April 2013, 23:19:15 »
So... Idea here...
What if you installed the Teensy underneath the Left Hand and the I/O expander under the Right hand, like so...

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1896 on: Fri, 05 April 2013, 23:30:22 »
You can absolutely invert the design. Easiest way to think about it, would be to basically build the keyboard normally (chips, resistors, connectors, diodes on the top side) but then flip it around to install the switches! The holes are plated through anyway, so soldering on top or bottom doesn't matter. But you'll have to modify the case or avoid using the bottom plates because the teensy and connectors will be on the bottom.
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1897 on: Fri, 05 April 2013, 23:31:36 »
What about firmware? Also, this would make an epic game/macro pad or chorded keyboard if done right.
The two configurators (one not quite ready) are out there... so would the layout just be backwards?
Advanced configurator
KISS configurator
« Last Edit: Sat, 06 April 2013, 00:28:11 by SmallFry »

Offline sordna

  • Posts: 2247
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1898 on: Sat, 06 April 2013, 00:17:51 »
Good question about the firmware. Yep, the default layout would probably have the key assignments mirrored! So you'd need to do build a mirrored layout on the configurator so it works properly on the ergodox. Unless you hack the main firmware to do it for you.
BTW both your links are the same, pointing to massdrop's configurator.

Firmware is very hackable, I now made the teensy LED light up whenever I am not in the main layer, it's super useful, and shows very nicely through the acrylic case! Code patch below, includes the buzzer stuff.

Code: [Select]
diff -upr ../src/keyboard/ergodox/controller/teensy-2-0--led.h src/keyboard/ergodox/controller/teensy-2-0--led.h
--- ../src/keyboard/ergodox/controller/teensy-2-0--led.h 2013-04-01 15:06:12.000000000 -0700
+++ src/keyboard/ergodox/controller/teensy-2-0--led.h 2013-04-05 21:52:11.000000000 -0700
@@ -30,17 +30,29 @@
  #define _kb_led_3_set(n)         (OCR1C = (uint8_t)(n))
  #define _kb_led_3_set_percent(n) (OCR1C = (uint8_t)((n) * 0xFF))
 
+ #define _kb_led_4_on()           (PORTD |=  (1<<5))
+ #define _kb_led_4_off()          (PORTD &= ~(1<<5))
+ #define _kb_led_5_on()           (PORTD |=  (1<<4))
+ #define _kb_led_5_off()          (PORTD &= ~(1<<4))
+ #define _kb_led_6_on()           (PORTD |=  (1<<6))
+ #define _kb_led_6_off()          (PORTD &= ~(1<<6))
 
  #define _kb_led_all_on() do { \
  _kb_led_1_on(); \
  _kb_led_2_on(); \
  _kb_led_3_on(); \
+ _kb_led_4_on(); \
+ _kb_led_5_on(); \
+ _kb_led_6_on(); \
  } while(0)
 
  #define _kb_led_all_off() do { \
  _kb_led_1_off(); \
  _kb_led_2_off(); \
  _kb_led_3_off(); \
+ _kb_led_4_off(); \
+ _kb_led_5_off(); \
+ _kb_led_6_off(); \
  } while(0)
 
  #define _kb_led_all_set(n) do { \
diff -upr ../src/main.c src/main.c
--- ../src/main.c 2013-04-01 15:06:12.000000000 -0700
+++ src/main.c 2013-04-05 21:54:38.000000000 -0700
@@ -24,6 +24,7 @@
 
 // ----------------------------------------------------------------------------
 
+uint8_t       layers_head = 0;
 static bool _main_kb_is_pressed[KB_ROWS][KB_COLUMNS];
 bool (*main_kb_is_pressed)[KB_ROWS][KB_COLUMNS] = &_main_kb_is_pressed;
 
@@ -50,6 +51,17 @@ bool    main_arg_was_pressed;
 int main(void) {
  kb_init();  // does controller initialization too
 
+ // set internal pull-up off for both pins
+ PORTD &= ~(1<<4);
+ PORTD &= ~(1<<5);
+ PORTD &= ~(1<<6);
+
+ // set the pins as output
+ // (because we cleared the applicable PORT bits above, the pins will now be driving low)
+ DDRD |= (1<<4);
+ DDRD |= (1<<5);
+ DDRD |= (1<<6);
+
  kb_led_state_power_on();
 
  usb_init();
@@ -63,6 +75,7 @@ int main(void) {
  bool (*temp)[KB_ROWS][KB_COLUMNS] = main_kb_was_pressed;
  main_kb_was_pressed = main_kb_is_pressed;
  main_kb_is_pressed = temp;
+ _kb_led_4_off(); // buzzer off
 
  kb_update_matrix(*main_kb_is_pressed);
 
@@ -82,15 +95,23 @@ int main(void) {
  #define is_pressed   main_arg_is_pressed
  #define was_pressed  main_arg_was_pressed
  for (row=0; row<KB_ROWS; row++) {
+ if (layers_head != 0)
+ _kb_led_6_on(); // layer led on
+ else
+ _kb_led_6_off(); // layer led off
+
  for (col=0; col<KB_COLUMNS; col++) {
  is_pressed = (*main_kb_is_pressed)[row][col];
  was_pressed = (*main_kb_was_pressed)[row][col];
 
  if (is_pressed != was_pressed) {
  if (is_pressed) {
+         _kb_led_4_on(); // buzzer on
+         _kb_led_5_on(); // key led on
  layer = main_layers_peek(0);
  main_layers_pressed[row][col] = layer;
  } else {
+ _kb_led_5_off(); // key led off
  layer = main_layers_pressed[row][col];
  }
 
@@ -175,7 +197,6 @@ struct layers {
 // ----------------------------------------------------------------------------
 
 struct layers layers[MAX_ACTIVE_LAYERS];
-uint8_t       layers_head = 0;
 uint8_t       layers_ids_in_use[MAX_ACTIVE_LAYERS] = {true};
 
 /*
diff -upr ../src/makefile-options src/makefile-options
--- ../src/makefile-options 2013-04-01 15:06:12.000000000 -0700
+++ src/makefile-options 2013-04-03 16:54:14.000000000 -0700
@@ -9,7 +9,7 @@
 
 TARGET   := firmware  # the name we want for our program binary
 KEYBOARD := ergodox   # keyboard model; see "src/keyboard" for what's available
-LAYOUT   := default-kinesis-mod  # keyboard layout
+LAYOUT   := default--layout  # keyboard layout
  # see "src/keyboard/*/layout" for what's
  # available
 

And here are the changes just for the layer indicator by itself, which doesn't need any hardware mod. Just download the source from massdrop's layer configurator, and make the changes by hand or apply the patch with: patch -p0 < filename.patch

Code: [Select]
--- ../src/keyboard/ergodox/controller/teensy-2-0--led.h 2013-04-01 15:06:12.000000000 -0700
+++ keyboard/ergodox/controller/teensy-2-0--led.h 2013-04-05 21:52:11.000000000 -0700
@@ -30,17 +30,21 @@
  #define _kb_led_3_set(n)         (OCR1C = (uint8_t)(n))
  #define _kb_led_3_set_percent(n) (OCR1C = (uint8_t)((n) * 0xFF))
 
+ #define _kb_led_6_on()           (PORTD |=  (1<<6))
+ #define _kb_led_6_off()          (PORTD &= ~(1<<6))
 
  #define _kb_led_all_on() do { \
  _kb_led_1_on(); \
  _kb_led_2_on(); \
  _kb_led_3_on(); \
+ _kb_led_6_on(); \
  } while(0)
 
  #define _kb_led_all_off() do { \
  _kb_led_1_off(); \
  _kb_led_2_off(); \
  _kb_led_3_off(); \
+ _kb_led_6_off(); \
  } while(0)
 
  #define _kb_led_all_set(n) do { \
--- ../src/main.c 2013-04-01 15:06:12.000000000 -0700
+++ main.c 2013-04-05 21:54:38.000000000 -0700
@@ -24,6 +24,7 @@
 
 // ----------------------------------------------------------------------------
 
+uint8_t       layers_head = 0;
 static bool _main_kb_is_pressed[KB_ROWS][KB_COLUMNS];
 bool (*main_kb_is_pressed)[KB_ROWS][KB_COLUMNS] = &_main_kb_is_pressed;
 
@@ -50,6 +51,9 @@ bool    main_arg_was_pressed;
 int main(void) {
  kb_init();  // does controller initialization too
 
+ PORTD &= ~(1<<6);
+ DDRD |= (1<<6);
+
  kb_led_state_power_on();
 
  usb_init();
@@ -82,6 +95,11 @@ int main(void) {
  #define is_pressed   main_arg_is_pressed
  #define was_pressed  main_arg_was_pressed
  for (row=0; row<KB_ROWS; row++) {
+ if (layers_head != 0)
+ _kb_led_6_on(); // layer led on
+ else
+ _kb_led_6_off(); // layer led off
+
  for (col=0; col<KB_COLUMNS; col++) {
  is_pressed = (*main_kb_is_pressed)[row][col];
  was_pressed = (*main_kb_was_pressed)[row][col];
@@ -175,7 +197,6 @@ struct layers {
 // ----------------------------------------------------------------------------
 
 struct layers layers[MAX_ACTIVE_LAYERS];
-uint8_t       layers_head = 0;
 uint8_t       layers_ids_in_use[MAX_ACTIVE_LAYERS] = {true};
 
 /*
--- ../src/makefile-options 2013-04-01 15:06:12.000000000 -0700
+++ makefile-options 2013-04-03 16:54:14.000000000 -0700
@@ -9,7 +9,7 @@
 
 TARGET   := firmware  # the name we want for our program binary
 KEYBOARD := ergodox   # keyboard model; see "src/keyboard" for what's available
-LAYOUT   := default-kinesis-mod  # keyboard layout
+LAYOUT   := default--layout  # keyboard layout
  # see "src/keyboard/*/layout" for what's
  # available
 

If you try it let me know how it worked for you!
« Last Edit: Sat, 06 April 2013, 02:20:43 by sordna »
Kinesis Contoured Advantage & Advantage2 LF with Cherry MX Red switches / Extra keys mod / O-ring dampening mod / Dvorak layout. ErgoDox with buzzer and LED mod.
Also: Kinesis Advantage Classic, Kinesis Advantage2, Data911 TG3, Fingerworks Touchstream LP, IBM SSK (Buckling spring), Goldtouch GTU-0077 keyboard

Offline SmallFry

  • ** Moderator Emeritus
  • Posts: 3887
  • Location: Wisconsin, USA
  • Leaving 6/15; returning 6/22 or so.
Re: ErgoDox - Custom split ergo keyboard.
« Reply #1899 on: Sat, 06 April 2013, 00:29:35 »
I fixed my links, thanks. If all I have to do is make a mirrored layout, that would be perfect! I just can't screw up on these things, since they aren't actually mine. Heh.