Author Topic: Custom 75% layout: "75% + 1" (With Danger Zone keycaps and Dyed Gateron Blues)  (Read 41218 times)

0 Members and 1 Guest are viewing this topic.

Offline xondat

  • i'm not a star
  • * Maker
  • Posts: 5366
  • Location: United Kingdom
I'm excited now ;D

I guess only a couple of days away from completing this project?

Offline nathanrosspowell

  • * Destiny Supporter
  • Posts: 1559
  • Location: Montreal, QC
    • nathanrosspowell.com
The end is drawing near!

Sip socketing is one of the few things I've not yet tried to do on one of my keyboards.... seems like a huge PITA  :p

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
I guess only a couple of days away from completing this project?
The end is drawing near!

The end is nigh!!!  :))

Sip socketing is one of the few things I've not yet tried to do on one of my keyboards.... seems like a huge PITA  :p

This is an accurate statement, much like the statements "Water is wet" or "The universe is big" are both also accurate statements.  :rolleyes:
Seriously though... It's tiny, fiddly, PITA work. You are certainly right about that!

Worth it in the end though... SO worth it!
« Last Edit: Wed, 17 February 2016, 18:58:08 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
128612-0
128614-1
All SIP sockets and LEDs are installed in the switches, and I had to FINALLY install my keycaps! It's BEAUTIFUL!!! I haven't wired the LEDs yet. That's gonna be a weekend project. I hope final wiring is all done by the weekend. Depends if I have a reel of resistors near the value I need. I gotta dig out my box of SMD resistors from the closet and see what I have. Might have to order, but Digi-key always ships fast, since they are so near me.

128616-2
128618-3
128620-4
128622-5
Here are pics of the Center Stem Stepped Caps Lock mod I had to do to make it fit. This was far easier than the plate mod. I'll add the light pipe later. I used a 1u "Tab" key as my stem donor, since I had two of them (Number Pad pack and Planck/Atomic pack both included one). Interesting view of the double shot from the wrong side!
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline xondat

  • i'm not a star
  • * Maker
  • Posts: 5366
  • Location: United Kingdom
(Attachment Link)
(Attachment Link)
All SIP sockets and LEDs are installed in the switches, and I had to FINALLY install my keycaps! It's BEAUTIFUL!!! I haven't wired the LEDs yet. That's gonna be a weekend project. I hope final wiring is all done by the weekend. Depends if I have a reel of resistors near the value I need. I gotta dig out my box of SMD resistors from the closet and see what I have. Might have to order, but Digi-key always ships fast, since they are so near me.

(Attachment Link)
(Attachment Link)
(Attachment Link)
(Attachment Link)
Here are pics of the Center Stem Stepped Caps Lock mod I had to do to make it fit. This was far easier than the plate mod. I'll add the light pipe later. I used a 1u "Tab" key as my stem donor, since I had two of them (Number Pad pack and Planck/Atomic pack both included one). Interesting view of the double shot from the wrong side!

Keyboard gore - didn't expect that.

Looks really good, nice to see you're satisfied!

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
That Tab key died, so my Stepped Caps Lock could go on... So noble... It checked it's stem donor box on its   drivers license   packing slip. A tear is shed... :'(

LOL
 :)) ;D :cool: :p

It takes a smidgen of guts to take a dremel to something you just spent a small fortune on...  :eek: Even if it was just a spare key!  :rolleyes:
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline AphelionXII

  • Posts: 4
As much as I am impressed by your mech, I am SUPER impressed with your choice in PC cases.  I love that build, and would love a tour inside  :-*

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
Got HAMMERED by both my jobs. I have not TOUCHED the keyboard since my last post. I have a free weekend though, so we'll see if I manage to do more work then...
Here's to not sleeping straight through the weekend, like my last two weekends off have been... :rolleyes:

I'll drop a few pics of the PC case sometime. I don't have a build log, per say... just plenty of pics.
« Last Edit: Fri, 18 March 2016, 01:56:02 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
Well, quick update. I got the USB port installed. Was simple, but I've been so busy with my two jobs, that I HONESTLY have not touched this keyboard build for a full month. :'(

Good news, is I'm making progress. I shifted a few diodes over a hair to make room for the tiny LED PCBs, and got all the hardest ones installed. Funny enough, the resistor I needed for the LEDs was only the second part I looked at in an entire unsorted box of resistors! :))

131582-0
I used a drill to drill the pilot hole, a modified scroll saw blade as a hand held fine tooth jab saw to square the hole, and a dremel cutting disc to create the slot for the PC board.

131584-1
You can see how it fits. The PC board fits the slot, and the Mini USB connector passes through the rectangular opening.

131586-2
Mini USB here! None of that flimsy Micro USB trash!  :p  :thumb:

131588-3
I drilled holes to line up with the PC board's mounting holes. screw diameter above the slot, smaller diameter (so the threads of the screw catch) below the slot, and then I countersunk the hole so the screws sit flush so the bottom cover is not interfered with, clearance wise.

131590-4
And as you can see, a Mini USB cable plugs in with plenty of clearance. The socket is nearly flush with the wood surface.

I'll come back with more pictures after the LEDs are wired.
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
131894-0
It's 3+ am, and I'm gonna crash soon, but I DID wanna share progress... I have not laced any of the new wiring yet. LED lighting is a heavier gauge, and is more rigid, thus it won't be laced. After rewiring the matrix from a 7 x 14 matrix to a 7 x 13 matrix, I ended up with a few unlaced new wires. I'll deal with them at the end, when I also lace the wires to the teensy.

131896-1
The LEDs are rather dim, but I don't want them to be so bright as to be overpowering. I actually wired the LEDs in series pairs, with a 100 Ω resistor. Each LED only has 8 mA passing through it. Won't even fully max out the USB power limit. It'll be barely a hair over 350 mA for the LEDs.

131898-2
I used one transistor to drive the Caps Lock LED, and 4 transistors to each drive 11 pairs of LEDs. I know I'm way under driving the transistors... But they will NEVER get hot. Each 2N3904 is only driving 88 mA, and they're rated to 200 mA. That being said... It's no wonder they get hot when people don't bank their LEDs into separate driven sets! The datasheet I had said 200 mA, so I certainly wasn't gonna try driving all the LEDs from one transistor. I had room and parts, so I just went with 4 banks. The control is all tied together, so one PWM pin on the Teensy can control all 4 banks as a single set of LEDs.

131900-3
SOOOOOO CLOOOOOSE!!!
I only need to wire the positive supplies to two rows of LEDs, wire the interconnects between the rows and columns to the Teensy, and hook up the 5 wires to my magnetic number pad port.

Soon™
« Last Edit: Wed, 23 March 2016, 03:30:05 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
132159-0
Just dropping this picture here. It looks more red in the pic, but in person, it's more amber.

So, the I2C magnetic serial port is almost wired. I wired a small PC board int he corner so i can desolder the connector wires should I ever need to disassemble it, without wrecking my laced wire runs back to the Teensy 2.0. All the wiring from the PC board to the Teensy is soldered. The LED controller board is now soldered to the Teensy, and all the LEDs are functional, including, obviously, the Caps Lock indicator. The ONLY thing that remains to do physically, is to solder the 7 rows, 13 columns, and to solder the flying leads of the magnetic connector to the small PC board. I'll do that tomorrow, after rate epoxy securing the tiny wires is cured.

For the serial port, I'm using a sense wire. This was the reason for requiring to a messier, but more efficient 13x7 matrix, when I added the backlighting LEDs. I literally needed every available I/O pin on the Teensy. Could not spare even one! Internal to the keyboard, the sense wire is pulled low. When an accessory is attached, the sense wire will be pulled high. All I need to do is monitor the input pin on the Teensy, and if it is high, then execute the code to read the I2C port expander. If the pin is low, then the software would skip executing the I2C code.

What that code would be...  :confused:

That's IT electrically, though!  :cool:

After that, I need to cut and drill and countersink the bottom panel, and add rubber feet. That's all!  ;D

After that, it's programming... Ugh... Software, the homework of tinkering...   :rolleyes:
« Last Edit: Fri, 25 March 2016, 08:42:01 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
132362-0

ALL electrical work is done. Every single wire, solder joint, and part is installed! ᴖᴗᴖ  :thumb:

Now all that remains is to make the bottom cover panel, and program the Teensy! That's all!

A shot of the final completed wiring, as well as the wire lacing. I also have a detail shot of the Teensy 2.0 and the wire lacing for each lead close up. ALL the new wiring is laced with a single cord (again, I use unflavored waxed dental floss). The cord starts in the top right and moves inward toward the Teensy, then it goes down the right side of the teensy, hooks right, turns down again when it hits the LED driver board, follows the bottom edge all the way to the left hand side, turns right, makes a slight detour by the shift key, and then continues up, goes left a key, then back right toward the Teensy, and then binds the left side and bottom of the Teensy. All one piece of string. No cuts, just knotting. Knotting and a LOT of feeding cord through loops!  :eek:

Enjoy!  ;D

132364-1
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
133173-0
Here it is... The main keyboard is physically done, and I also went ahead and built a wrist rest for it as well.

133175-1
The bottom panel was taken from a 1960s era Phase Angle Voltmeter, just a piece of old test equipment I had in storage. I kinda like the texture.

133177-2
The wood was a chunk of free cherry that I got from a friend who works at a cabinet door manufacturer (Elkay). This was a piece they considered "scrap". I guess it had a knot on the edge. I didn't need the whole length. All I know, is it looked good, and was free!  ;D

133179-3
It had a groove in the tapered edge (for a door panel to insert into), so I bought an oak dowel for $0.89 and painted that with some hobby model paints. The yellow is 3u wide, the same width as the WASD and Arrow clusters.

133181-4
Now that construction is 100% complete, all that remains now, is to program it... I'm kinda... Not sure where to start! Any firmware is fine, for now, since I don't yet have a number pad for it. Something easy, that I can program from a Mac. I guess I gotta look at those options now. In time, i'll get a plate for the number pad and add it. I'll revisit the firmware at that point to enable the hot swap functionality. For now, i want NOW functionality of what i have made!  :thumb:
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
133314-0
This is my schematic. I could have designed it better, but honestly, this worked out. If I had to do it again, I'd probably try to do something a little more logical.

I need to take a break. Spent all day trying to figure out firmware... It's 2:30 am now... Ugh... I don't even know which one I should use:confused:

I need future I2C expandability (using a port expander), so even if a firmware is easier than another, I imagine I should still stick with something that's more capable, so I don't have to redo everything with new software when I make the number pad. I am SO not good with software...

I was thinking, regarding number pad hot swapability, if I make the I2C writes and reads only occur when an input pin state is high... skipping a portion of the scan, and returning no results when low... would that work? I'm not exactly at the point yet where I need that yet, but I should think about it.

I was looking at TMK, but I swear it's making my brain spin!  :rolleyes:
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline UsualSuspectXXX

  • Posts: 3461
  • Location: Persephone
  • (⌐■_■)⊃━☆゚.*・。゚
Dude. This board looks really awesome. Great job!

Offline metalliqaz

  • * Maker
  • Posts: 4951
  • Location: the Making Stuff subforum
  • Leopold fanboy
Did you get it programmed?

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
Not yet... I really need to sit down and figure out what on earth I need to actually do to program it. Unfortunately, working 2 jobs sometimes leave me with little free time. Waiting for my next window of free time.
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline Bucake

  • Posts: 945
  • Location: The Netherlands
crazy cool project, looking really good
IBM Model F XT // Realforce 87U 55g Type-S // HHKBP2 45g Type-S // KBT Pure Pro Cherry MX Red

Offline Data

  • Posts: 2608
  • Location: Orlando, FL
Ten thumbs up.
 :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb:

(I'm all thumbs. Don't judge.)

Offline CPTBadAss

  • Woke up like this
  • Posts: 14363
    • Tactile Zine
Lovely build. Really like all the attention to detail. And I like that it doesn't have a crazy name lol. Sometimes it's just nice to have something simply named....I think we as a community go too far in that aspect. Myself included.

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
134759-0

Thanks to ALL of you who have sung your praises and proclaimed your compliments! Super thanks! :D  :thumb:

134757-1

So, Signature Plastics has started sending out replacement keys for the errors made in the Danger Zone production. Minor issues that don't much affect me, but certainly issues that have bothered others (no homing nipple/bump keys, Master Arm key the wrong color). Haha! That blue Master Arm key is a trophy to me! Proof of it being a first run! ;D

Also, major thanks to UsualSuspectXXX for selling me those Fallout keys. They make SUCH A GOOD PAIRING with Danger Zone! He had some trades to offer/sell.  :p :thumb:
https://geekhack.org/index.php?topic=77714

134761-2
« Last Edit: Mon, 18 April 2016, 15:48:45 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
Well... Update, work has had me swamped, and it gets no better in the next couple weeks. I STILL have yet to figure out how to program the thing, and I still have not spotted a group buy that I can get the plate for the number pad made. :confused: Since I want extra keys on my number pad, I can't really buy a stock number pad plate. I was thinking a 6x6, with a 2u "0", 2u "Enter", 1u "+", and possibly some 1.25u or 1.5u in the top row. That and I need the dimensions to fit my existing plate's height, screw hole spacing, and corner radius. Blue anodizing is an obvious must.

I really wanna get this finished, but either I'm missing plate group buys (that let you do custom plates), or there haven't been any since LeandreN's custom group buy last year. I don't know. I've been so busy lately. Ugh...

I can't believe I still have no idea how to program this thing...  :-[
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
So, here's my progress so far.

First, I've made up a nice layout worksheet that has all the electrical rows and columns identified not he physical layout. It's top down view, so it'll be useful for defining my key layout too.

143187-0

So, I did start with the TMK firmware. If it can do everything I need it to do, then I'll stick with it, but there's always the option of re-flashing it with something else in the future if I can't integrate the hot swappable port expander functionality into the code. The code for my Column and Row pin definitions are below:

Code: [Select]
/* Column pin configuration
 * col: 0   1   2   3   4   5   6   7   8   9   10  11  12
 * pin: F0  F1  F4  F5  F6  D4  D5  D2  B7  B3  B2  B1  B0

Code: [Select]
/* Row pin configuration
 * row: 0   1   2   3   4   5   6
 * pin: F7  B6  B5  B4  C7  C6  D3

I have a VERY dense matrix of 13x7. It was necessary to keep enough I/O pins open for the Caps Lock LED, Backlight LED PWM, a pair of I2C pins, and the numpad sense pin. The sense pin detects if the number pad is attached, and whether or not it should poll the numpad's port expander over I2C. I figure, software is changeable, so I can re-do code later, once I actually have the number pad built, and have half a clue what the heck I'm actually doing.

Anyway, since I had to keep the matrix small, That super dense layout has almost no gaps, and row 6 is actually a tight cluster of keys in the top right corner. An alteration part way in resulted in the very top right key having a completely nonsensical matrix position, because the change was literally a bodge. Only three intersections in the entire matrix go unused (c0-r6, c1-r6, and c12-r4). This means my matrix does not directly conform to the physical key layout in some areas (all of Row 6 is in the top right corner, and the bottom row is "electrically" compressed to the left, and then includes the keys physically in the bottom right corner well).

Now, I'm stumped at my current place in the code...

What have not figured out yet, is whether the matrix definitions need to be ordered by electrical sequence, or if the values are arbitrary, and allow for physical sequence (as long as the row and column values are correctly defined). The obviously functional way is to lay the matrix out electrically. This seems to be what's assumed with most keyboards, as most keyboards physical layout and electrical layout probably match.

My question then is which (either, or both, or neither, or 42   ;D ) would be correct?

Electrically based layout:
Code: [Select]
#define KEYMAP( \
    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
    K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,     \
    K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, \
              K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C  \
) { \
    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C }, \
    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C }, \
    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C }, \
    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C }, \
    { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_NO    }, \
    { KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57, KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C }, \
    { KC_NO,    KC_NO,    KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C }  \
}

or...

Physically based layout
Code: [Select]
#define KEYMAP( \
    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K62, K6B, K6C, K65, \
    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K63,      K69, K6A, \
    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K64,      K67, K68, \
    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C,           K5C, K66, \
    K40,      K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,           K5A, K5B, \
    K50, K51, K52,                K53,                K54, K55, K56,      K57, K58, K59  \
) { \
    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K62, KC_##K6B, KC_##K6C, KC_##K65 }, \
    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K63, KC_NO,    KC_##K69, KC_##K6A }, \
    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K64, KC_NO,    KC_##K67, KC_##K68 }, \
    { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_NO,    KC_NO,    KC_##K5C, KC_##K66 }, \
    { KC_##K40, KC_NO,    KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_NO,    KC_NO,    KC_##K5A, KC_##K5B}, \
    { KC_##K50, KC_##K51, KC_##K52, KC_NO,    KC_NO,    KC_NO,    KC_##K53, KC_NO,    KC_NO,    KC_NO,    KC_##K54, KC_##K55, KC_##K56, KC_NO,    KC_##K57, KC_##K58, KC_##K59 }  \

}

My question is, are the values entered into the table above dependent on position in the list, or just by content. It'd be FAR easier to follow the second layout, but I don't know if it screws with the code to mix and match rows and columns onto different lines in the list like that, or whether it's all good, as long as the numbers match.

My understanding of the code, is that those lists are not "technically" even different lines... That they are basically one long continuous list, with breaks to make it easier to read. What I don't know is whether the code expects to read the list strictly sequentially, the same way it's scanning the matrix, or whether the code is simply defining the physical layout of the key map and defining what matrix intersection applies to the physical layout. I'm confused!

Basically, is the code:

A: expecting all the rows and columns to be in a neat and orderly incrementing layout (all the columns, in order, 0 to the maximum, for row 0, then repeating for row 1, 2, 3... and so on)

or

B: Is this list arbitrarily defining the row/column intersection values for the (later to be entered) keymap, based on the row and column numbers entered. Basically, saying "I want this layout to have r0-c0 through r0-c12, then r6-c3, r6-c11, r6-c12, and finally r6-c5 in the first physical row of keys"... Basically, so later, when I enter the keymap, it knows that ESC is r0-c0, F1-F12 is r0-c1 through r0-c12, and that F13 is r6c3, F14 is r6-c11, F15 is r6-c12, and the media EJECT key is r6-c5 (using my top row as an example).

Does that make sense?   :confused:

I suppose I should add, I know software is flexible, and I can always integrate new features later on. For now, i just wanna get my keyboard up and running. In the long term though, I want to have the code check whether pin E6 changes states. Depending on whether it is high or low, I want to have it scan a 6x6 matrix on a port expander connected over I2C, or to skip the I2C part of the code altogether and ignore that part of the matrix. I don't yet know how I would go about doing this in the code, and I don't even know if this firmware can be modded to support it at all. Of course, that's the nice thing about software... There's always room for change.

I think, for the transistor driven under-lighting LEDs in each switch housing, I just want to have a default max brightness setting at power up, and the option to change the brightness with the keyboard. I already have the max brightness current limited to stay under the USB max current, but I think at power up it'd be wise to keep total draw under 200 mA, and then let the keyboard negotiate 500 mA if you increase brightness... Again, I imagine it's possible, but I don't know if TMK can do it, or how easy it'd be to mod that functionality in.
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
152220-0

So, quick update... Good news and bad news...

The good news, is it sounds like i've gotten in on a plate group buy and will finally be getting the number pad plates made. I should be paying for those soon, I would think. I also found some nice blue paracord with a yellow pattern that I think will work very nicely to sleeve a USB cable! With the number pad looking like it's going to finally be on it's way, I've decided I like Fallout novelty caps, and will probably stick a few on the number pad, treating those keys as additional function keys. I included a photo of some of the caps I have, temporarily placed in my main keyboard function row, just for the photo.

152218-1
152216-2

The bad news, is between getting back into construction on my Kerbal Space Program controller, and being busy at work, I've not sat down AT ALL to figure out the programming aspect of this. Seriously... It's been sitting untouched since my last post. I had questions about the firmware, and never got answers, not here, not at DA, not on the TMK tutorial thread... No responses. Being at a roadblock, right when work picked up killed all forward momentum on this project. regaining forward momentum on my other project has left this keyboard sitting.

I really wanna get this finished. I'm SO CLOSE!!! It's just software!

My goals are:

• Figure out the firmware so I can actually use it.
• Figure out how to read a port expander over I2C to read additional keys.
• Figure out how to "skip" the I2C read code when one of the Teensy inputs is low, but perform it when that input is high.

That's what I need to do yet. I can create a simple dummy setup with the port expander to do testing, till my number pad plate arrives. Wiring it will be super straight forward, thanks to the wood pieces already being made. I'll only need to screw the plate on, pop in the switches, install SIP pins and LEDs, and wire the small matrix for the key switches and for the LEDs. One wire of the port expander will go to a transistor driver to run the LEDs, and 12 of the port expander wires will feed the 6 rows and 6 columns of the switch matrix. It'll be a very straight forward build.

I guess there's no point in posting anything further on the software... all my questions remain the same, and are in the last post. I just gotta trudge through it, and maybe see if I can't make it work. I dunno... Software is definitely not my forte... Where designing and building hardware is my hobby and joy, software is like homework, or a job... One I barely am understanding.  :-[
« Last Edit: Wed, 28 December 2016, 22:53:56 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
155725-0

So, I gotta drop a big thanks to LeandreN for once again coming through and getting me the plate I needed to finish this project! Number pad plate came in today.

No idea when I'll get it finished, hopefully soon. I counted up my dyed switch tops... I have 30, needed 34. Grr... I gotta mix up a batch of dye for FOUR switch housings! I'm bummed I can't find transparent Plate Mount MX Stabilizers. Sorry, I don't care for Costar, and I don't have a PCB, so the Zeal transparent ones really aren't an option either.  For now, I gotta settle with black ones...

Anyway, I have the trim parts already cut out (I did this WAY back when I did the original ones for the main keyboard.

155727-1
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline Data

  • Posts: 2608
  • Location: Orlando, FL


Lookin' good!  Man that is a BEAST of a numpad.  :))

Offline samwisekoi

  • MAWG since 1997
  • * Administrator
  • Posts: 2480
  • Location: Mt. View, California
  • Sorry, moving houses. Be back ASAP.
    • Tweet samwisekoi
Nice build!  Would you be interested in a GH-36 PCB for that numpad?  Assuming that plate is correct at .75 spacing and a 6x6 matrix, the GH-36 PCB will fit right in.



Let me know and I'll drop one in the mail to you.

 - Ron | samwisekoi

I like keyboards and case modding.  Everything about a computer should be silent -- except the KEYBOARD!

'85 IBM F-122/Soarer Keyboard |  Leopold FC200 TKL (Browns) + GH36 Keypad (Browns/Greens) | GH-122 (Whites/Greens) with Nuclear Data Green keycaps in a Unicomp case

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
Quote
Lookin' good!  Man that is a BEAST of a numpad.
I gotta have room for all those Fallout keys! I'll probably throw in some of the special Danger Zone keys on there too.  :p

Quote
Nice build!  Would you be interested in a GH-36 PCB for that numpad?
I've got a very narrow amount of available space at the edge. If I recall, I think your PCB would stick out a bit too far for my particular design. The wood trim that I use to form my case probably comes a couple millimeters from the edges of the switch housings Comes so close to the edges of the switch housings, that I forgot I needed to shave the interior to clear the stabilizers for the 0 and Enter keys!. It's kind of you to offer though. Ultimately, I'll likely be hand wiring this section as well. I can generally hand wire it faster than I can make a PC board for it. Again, thanks though!

155858-0

On another note, it seems my dye might have been a bit... old. It came out more purple than blue. I attribute the color shift to it being LITERALLY a year and 2 months old. Fortunately, I only need four more keys (though I dyed six). I think if key caps are off, it'll stand out, but with key caps on, and if I place them int he center, it probably won't really be noticeable, so i'll pass them. If I ever have to work with blue dye again, and I have a new batch, I'll just do some fresh ones and replace them at a later date. My plate lets me pop key switch top housings off in place, so no worries there.
« Last Edit: Wed, 25 January 2017, 19:42:23 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
Got the switches dyed, installed, lubed, with SIP sockets inside and LEDs plugged in... That's as far as I've gotten.
The four switches that I just dyed are in the middle. They do look slightly more purple than blue, but it's only slight. I'm more than okay with it.

155882-0

And a pic of the assembly process... I think, if I could go back, I'd have put the numbers on the left, and the extra functions to the right. I just mimicked the typical layout of a full keyboard, but by doing so, I placed my number pad further away from the main keyboard than I needed to. Oh well. Can't change it, so it'll stay as it is. At least Enter will be easy to find by feel.

155884-1
« Last Edit: Thu, 22 December 2016, 02:02:58 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
155965-0
Just threw the number pad keys, and a bunch of various Fallout and mod keys, but yeah, I wanted to see how she looks!
I swapped ☮ and Hyper to get a bit more symmetry. All the keys are only temporarily on, so no reshot pics.

155967-1
She's a real beaut, isn't she!  ;D

155963-2
I can't WAIT to have this magnetic split functioning!
« Last Edit: Thu, 22 December 2016, 23:51:59 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
156351-0
I worked on this over the Christmas holiday break. You can see the final trim and layout assembly. I might change up the misc keys from time to time, as I get other more interesting key caps. That's why I have a 6x6 number pad! Plenty of room for creative keys!  :p

156353-1
The wrist rest is actually just wide enough to type comfortably, and still rest the left side of my right palm on it to reach the number pad, but I plan to make a wide wrist rest and a mini wrist rest in addition to the one I already have. I'll have a spot under my desk to stash the long one and the mini one, so i can bring out the one I want to use. I've also considered just attaching the wrist rests to the keyboard segments. Not really sure on that one yet. We'll see as I use the keyboard and get a feel for things.

I still have to finish some wiring in the number pad, and then do the programming. That's ALL!   ;D

I'll post more pics soon.
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline nathanrosspowell

  • * Destiny Supporter
  • Posts: 1559
  • Location: Montreal, QC
    • nathanrosspowell.com
Really nice! Been great following this build  :thumb:

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
If anyone is curious why all progress has stopped again... Murphy and his laws have decided to curse my January. My computer's motherboard died, I've gotten gut blastingly sick, slipped and fallen on the ice more times than I'd like to admit, covered for other people at work, retweaked my shoulder (but not badly)... and all around have had a miserable new year. I've not even touched this poor beautiful keyboard since my last post...  :'(

Here's to hoping February's misfortunes are as scarce as the month is short! LOL :D
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
Good news, I was able to get my motherboard repaired. Man, was Gigabyte slow with the whole RMA process.  >:D
With only a tablet to rely on, I've not done much here. I got back on my Kerbal Space Program instrument panel/controller build again, so I've made no progress on the keyboard. It doesn't at all have to do with 4 separate projects vying for space on my work bench, all at once... (Innocently whistles) :rolleyes:

Anyway, I definitely NEED to figure out this whole software thing. I have my first three day weekend in a long time coming up... And I'll undoubtedly waste it, or do hardware instead... That's what I'm craving! LOL  ;D

Maybe I can sit down again and just try... Even if i have to download some "bum code", just to see how it derps up.

Who knows? Maybe it'll actually work?! Beats me... I never did get an answer to any of my software questions. Maybe I need to start a new thread specific to that question. Too tired to do that now... I still have to get up for work one more time before my long weekend.

I feel bad for me, cause I have this lovely keyboard that looks absolutely stunning, but doesn't DO anything, and I feel a little bad cause people thought this project was "days away from completion" a full YEAR ago! Between work and other projects, delays in getting my number pad plate, MORE work delays, injuries (thanks work...), and above all else, my lack of software experience... This is taking painfully long to finish! :eek:
« Last Edit: Fri, 14 April 2017, 02:06:32 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline phorx

  • Posts: 467
  • Location: Canada
  • Ż\_(ツ)_/Ż
It's a real thing of beauty!  Has there been any updates since you last posted?  Oh if only there was a PCB-based kit to do a build in this layout I'd be such a happy man.

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
It's a real thing of beauty!  Has there been any updates since you last posted?  Oh if only there was a PCB-based kit to do a build in this layout I'd be such a happy man.

No PCB as of yet, but I DID finally learn how to use KiCAD, so maybe someday in the future. Right now, I'm super busy with my two jobs, and I STILL need to figure out firmware. i was thinking about the following matrix configuration:

Code: [Select]
    C0  C1  C2  C3  C4  C5  C6  C7  C8  C9 C10 C11 C12 C13 C14 C15 C16 C17 C18
R0  X   X   X   X   X   X   X   X   X   X   X   X   X
R1  X   X   X   X   X   X   X   X   X   X   X   X   X
R2  X   X   X   X   X   X   X   X   X   X   X   X   X
R3  X   X   X   X   X   X   X   X   X   X   X   X   X
R4  X   X   X   X   X   X   X   X   X   X   X   X   X
R5  X   X   X   X   X   X   X   X   X   X   X   X   X
R6  X   X   X   X   X   X   X   X   X   X   X   X   X
R7                                                      X   X   X   X   X   X
R8                                                      X   X   X   X   X   X
R9                                                      X   X   X   X   X   X
R10                                                     X   X   X   X   X   X
R11                                                     X   X   X   X   X   X
R12                                                     X   X   X   X   X   X

C0-12 and R0-R6 would always scan, looking for whether keys are pressed on the main keyboard.

When the matrix scan reaches R7-R12 and C13-C18, then it would check for the state of the "sense" input to determine if the number pad is present or not. If not present, it would bypass I2C communication and fill in all 36 matrix values with a null value (or whatever represents a button not being pressed). If the "sense" signal detects the presence of the number pad, then I2C commands would be sent to the port expander in the number pad to perform the remainder of the matrix scan.

Since I already have them, I'm gonna switch my LED controls to an I2C DAC (Digital to Analog Converter). It can piggyback on the I2C bus, but it also means I get set and forget LED brightness controls that will be identical on both the main and the numberpad sides of the keyboard interconnect. PWM controls would have been unreasonable on the numberpad side, since it did' have a proper dedicated controller. At once point, I'd considered the DAC on the numberpad side, feeding into a 555 timer chip to make a PWM signal, but then I realized I might as well eliminate flicker and just go with an analog value on both sides.

Now if only I had enough grasp of any firmwares or of C in general to actually make it happen...
« Last Edit: Fri, 16 February 2018, 09:02:08 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA


Good Lord, it's been a while! So, I actually sat down and worked on the numberpad LED wiring. This project has literally sat for two years! Originally, I got motivated into working on it, only to find I had made a mistake, and it just deflated any and all motivation. That was coupled with work becoming insanely hectic. Anyway, I'm sticking with my normal routine of splitting the LEDs up into multiple banks. One transistor can't drive all of them (without going to a beefier transistor), but two could. It is honestly just as easy to just split it into three pairs of columns and go that route. One modification that I need to make to this, and the way I'll wire this as well, is that I'll have an I2C Digital to analog converter provide a DC analog output that will drive the LED drive transistors. The thought of trying to do PWM over an I2C port expander sounds like absolute madness. I honestly don't even know if it's possible. I want to make sure the keyboard never draws over 500mA, so it can be easily powered from any USB port, including a common USB 2.0 port. The LEDs are set up so they are in series pairs, drawing about 8mA a pair. Including power dissipation by the resistors, thats about 488mA, with the numberpad attached. I also have to account for the power drawn by the Teensy, the port expander, and the Caps Lock key, which all together, would exceed 500mA.

My solution will be to simply cap the peak brightness when the numberpad is attached. I'd like a 10mA buffer, 30mA to power the teensy, and maybe 10ma for the port expander chip, since all it's doing is scanning the switch matrix. I'll set the I2C DAC inside the Numberpad and inside the main keyboard to the same address, so the teensy can just send out updates periodically, and both will update to matched values. It looks like I can drop current from 8mA to 3mA by just dropping the voltage from 5 volts to 4.5. If I configure the DAC to operate within the range of 4.2-5 volts, that should give me complete brightness control from 1mA to 8mA. Heck, even a mere 8 steps, from 4.2-5 would give me full range, incrementing the output voltage by 0.1 volts per step. 4.9v on the DAC would drop LED current by only 1mA, and allow all 122 keys to be lit at once, with plenty of overhead for the Teensy, etc.

Another thing I've thought about, is a keep alive circuit. Rather than the LEDs flickering out, I think I want a few capacitors in the numberpad, fed through a resistor and diode, to keep power going in case of brief circuit interruption. If I bump the keyboard, and the magsafe connector temporarily separates, having a keep alive circuit will keep the LEDs from flickering, and if the port expender requires any initial setup, it should retain that. The idea is that a resistor limits inrush current, but allows a bank of capacitors to slowly charge up while the keypad is connected. When disconnected, the LEDs and port expander will continue to draw power from he energy stored in the capacitors. It'd probably only be enough for one or two seconds of operation, but it's just a nice consideration to prevent hiccups. The idea came to me from the model train hobby. Locomotives with digital controllers often are fitted with keep alive circuits to allow the locomotive to stay powered when there is dirty track, poor joints, or troublesome track switch points. The capacitors keep the digital controller from resetting, and keep the motor powered for a second or two, so it can power through the area where power is dropping out.

I think I'm finally finding the motivation to get back on this project again!

I may still ask for advice regarding the firmware. I still need to have backlight controls send data to an I2C DAC periodically (on update, on sense pin change, and after time interval), I still need to incorporate the I2C port expander, and above all else, I need to scan a sense pin and have the code skip the Port Expander communications, and return null values, as a conditional based on the state of that sense pin, or possibly a scan timeout.

Soldering circuit boards for work, but once that's done with, I wanna finish the matrix and the rest of the LED wiring, and start looking into how to wire up the port expander, DAC, and transistor drivers.
« Last Edit: Thu, 05 December 2019, 00:35:13 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline Sintpinty

  • Carbon Based Life Form
  • Posts: 1667
  • Location: A can of beans in the cupboard
  • she/her/they/them/any except he him
    • My Roblox Profile
(Attachment Link)

***UPDATE***
The Main keyboard is now COMPLETE!!! I still need to build a number pad. I'll do this when I have a chance to get a plate.
At the moment, I still have to program it though.


I just purchased the "Danger Zone" keycap set off Massdrop. It's my very first custom key cap set, very first mechanical keyboard, and first time doing a custom keyboard. While I do plan on having a separate number pad I can set aside, and a Kerbal Space Program controller with actual flight instruments built into my desk, I wanted the primary keyboard to be both fully featured and compact. I discovered the 75% layout, and feel it is one of the best layouts out there, but I really wanted to retain a few more keys than that it offers.

I decided to do a layout with an extra column of keys, so it has 2 columns of keys to the right of the return and right shift keys, instead of just one column, as a standard 75% board does. This let me do a couple of things:

A: It let me slide the arrow keys over to the right by 1u, thus allowing both a standard sized right shift key, and the ability to use six 1.25u modifiers with a 6.25u or 6.5u spacebar. Alternately, seven modifiers can be used, if the left modifiers are three 1.25u, a 6.25u spacebar, and four 1u modifiers to the right. This is an exceptional degree of modifier row flexibility! I personally chose to use six modifiers, with a 6.25u spacebar, and made one modifier (the one immediately to the left of the spacebar) into a 1.5u modifier, to enhance it's use as a Mac keyboard layout. That was just my preference.

B: Because of the standard key sizes, this custom layout can be populated by most base TKL keycap sets, without having to dip into extra add-on options!

C: This custom layout provides 88 keys, while most 75% layouts only provide 84 keys. This means that you get 1 key more than a standard 87 key TKL, but have a smaller footprint. If a TKL keycap set has no real options to fill in the last 88th key... Great excuse for an artisan key! :thumb:

I used the renders of the Dangerzone keycap set to create a render of what I expect my keyboard to look like. I'm getting the custom plate made via the LeandreN Prototyper group buy http://leandren.bigcartel.com/prototyper-round-1. Invoicing is today, so orders should go out real soon! Like I said, i'm pretty excited! This is my first mechanical keyboard, and I decided to go   big  compact or go home...  :p

As for the case, I will use the keyboard to bridge my Kerbal Controller and my PC case, which have drastically different styles. The Computer case is a 1939 Philco radio cabinet, with brass accents, a nixie tube clock, and strong art deco stylings. The plate will be anodized blue, to match the keys, but I'll use brass screws on the keyboard to hold it all together. The plate will screw into four wood strips that I will glue into a rectangular ring bordering the perimeter of the plate, and I'll sand the corners round. I'll stain it to match the computer case, and then seal it. The bottom will be a metal plate with rubber feet. I may use brass for the bottom. I think it'll look very nice. I'll use some keys from the Danger Zone key set on the Kerbal Controller to get some style crossover there as well.

(Attachment Link)

Internally, I'll hand wire the matrix using the diode leads to connect from switch to switch. I don't know if it's worth it to mess with a Teensy or not. I run a "Hackintosh", basically Mac OS running on stock PC hardware. I have no PS2 ports. Macs tend to just have 6KRO, not NKRO. I'm half tempted to salvage the PC board from my old mac membrane keyboard and recreate the matrix. It WAS a good keyboard, till it lost a game of chicken with a can of pop. :rolleyes: I guess that's something i'd be happy to get advice on. Longtime DIYer, but VERY new to microcontrollers, completely inexperienced with C, and far more comfortable with a soldering iron than code. If i'm just running Mac OS, are there even any NKRO option for me? Is it worth the bother?

I am interested in both opinions on my custom layout, as well as 6KRO/NKRO options and issues on Macs.
Hope you all like my keyboard project!

***EDIT***
FIRST PHOTOS!!!

(Attachment Link)
(Attachment Link)
(Attachment Link)
(Attachment Link)

You did really well on this keyboard. Nice job.

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
Quote
You did really well on this keyboard. Nice job.
Thanks!


So with this small modification, I do belive the main keyboard is 100% hardware complete!
I did disconnect the PWM output D7 from the Teensy, freeing up one I/O line. That's not important,
but it did make my previous rework of the matrix from a 7x14 to a 7x13 very unnecessary! :rolleyes:



I have installed a small MCP4725 DAC (Digital to Analog Converter) board into the keyboard to control the LEDs.
It's output was threaded through the existing laced wire bundle, and fed underneath the Teensy.
It's wired to the input of the LED's transistor drivers, connecting where the Teensy's PWM D7 output once connected to.
Power and I2C connections have been made at the tiny board that attaches to the MagSafe port.


I finished the general matrix and LED wiring on the number pad as well! I still need to install the LED transistor drivers,
the port expander, and a second MCP4725 DAC board. There are two options for controlling the LEDs with this setup.
If the DAC boards can receive commands without response, then i can set both boards tot he same address,
and any update sent over I2C should update the output of both boards, changing LED brightness on both keyboard and num pad.
If the chips can't operate in tandem, then I can just change the num pad DAC's I2C address, and send the same data twice, to each address.

One of the nice things about these DACs, is they have an integrated EEPROM that stores the last value,
so it remembers the last brightness setting, even after power off, or number pad detachment.
This means I only have to update LEDs on a brightness change, or after attachment or detachment of the num pad.
The fact that it's a steady analog value also eliminates PWM flicker entirely. The DACs are 12-bits, which is overkill,
but I had them on hand, and they will still work for the application.

After the last hardware is soldered in, it's ALL software from here. I have very little experience there, so advice and help are welcomed.
« Last Edit: Tue, 10 December 2019, 06:06:48 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
The absolute irony of my absolute failure to put in the time to figure out the unique coding situation to resolve the hot-swapability of this keyboard, and the ridiculous amount of time that has passed since procrastinating on finding a solution to the problem, has left me with an unexpected hardware development...

243225-0

In the time that has passed, 20 pin "magsafe style" USB C connectors have been developed, and are now being mass produced. These feature a very dense 20 pin magnetic connector... Honestly... I could essentially "brute force" this entire keyboard, strictly in hardware, if I were to purchase one of these and wire it up to the matrix, LED driver, and power. I might still need the port expander, but it would interestingly enough, end up situated in the main keyboard, not the number pad. There would be no risk of hot-swap lockup of the firmware, because the I2C would always remain connected to the port expander. Only the matrix, which is normally open, would ever be disconnected, and the power and LED driver lines are non significant. The power just is or is not connected to the numberpad, and the LED driver output is strictly a passive output. It has no feedback at all. This, while less elegant a solution, does still suit my style of building well, in that I am, and always have been, a hardware type, not a software type. I may be forced to redo the trim featuring the magnets and magsafe style connector, if I'm unable to pop the old ones out. they were epoxied into place, and may never want to actually come out. I will most definitely be slightly irritated, if I have to redo those parts, as the oak I used was very annoying to work with. We'll see...

If I undo my recent alteration, and Switch the LED control back to PWM on Pin D12, and I eliminate I2C all together, I can reclaim pins D5 and D6, and if I eliminate D24 as a numberpad sense wire, that gives me three unused pins that I can assign as new rows R8, R9, and R10 in the matrix. If I feed Columns C1-C12, and the three new rows, R8-R10, that takes 12+3 pins (15), to do a 3x12 matrix, which would cover the entire 6x6 numberpad (I'd do 2x6 groups of keys as 1 row, and 12 columns, electrically). I'd need two pins for power, plus the LED PWM, adding three more used pins to the total count. That leaves 18 pins used, with 2 unused. If I make the + and - power the same pins as the standard + and - USB connections used on that connector, then even if a USB cable is inadvertently attached to the numberpad, it will actually do nothing (it would actually power the LED driver, but the PWM signal would be off). With no communication, the USB would not negotiate fast charging modes, and thus not increase power above standard USB voltages, so again, the numberpad should be safe. For simplicity, I think the numberpad should mate to a USB cable's mag connector, since it'll be almost entirely passive, and thus have the least risk involved. That, at least, mitigates any risk of damage due to error, for using any manner of standard connector. I do belive I did a similar thing with the old MagSafe connector I used previously, where the main keyboard had the cable connector, and the numberpad had the device connector. As for finding what pins are default USB power (5 volts) on the new style 20-pin magnetic USB-C connector... Well, I'll just have to measure. Finding ground is easy. I just check continuity to the shield. It's also almost certainly gonna be one of the big corner pins... Bigger pins are typically used for power delivery. After I find ground, I just measure the other pins to find 5 volts. Simple!

I think I'm gonna order a few of these from China... They'll probably take a good month to show up. I legit wanted to pick one up for my phone. I do not know yet if I even have room to mount these, nor do I know how much larger they are than the 5 pin connectors (they are definitely larger). I want to search tomorrow to see if I can find the connectors standalone, but I suspect I won't. I'll likely be forced to disassemble a USB-C adapter, extract the connector, and solder some 18 wires to 20 of the pins. Should be fun!

I really should just plan on making a new pair of trim pieces. Like I said, I'll have probably a month to wait for the parts to show up off the slow boat.

243223-1
« Last Edit: Fri, 22 May 2020, 08:02:32 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
244627-0

Good news and bad news... The good news, is one of my two orders of 20-pin magnetic USB-C connectors came in, and amazingly, it arrived in a mere 6 days! I'm shocked by the shipping time! As you can see above, it's barely any larger than the old connector, which quite frankly, is amazing, considering it has 4x the density of connections! The bad news... I ordered two right angle connectors for me to use on my phone and Switch, and those indeed showed up. The problem is that the connectors I ordered for the keyboard are still in transit, and are clearly being shipped by a slower method. I could tear one of these right angle ones apart, but that kinda defeats the purpose of having the two right angle connectors for my two devices.

244629-1

Anyway, the connectors I plan to take apart are technically still on their way, and once they arrive, I'll tear 'em open and fit them into the keyboard trim. It felt really weird pressing the old 5-pin MagSafe connectors out of my trim. Those were the defining unique element to my keyboard... Anyway, no fretting about it, cause it's only gonna be better once it's done! I kinda wish I hadn't been so proactive now with altering my main keyboard for I2C DAC controlled lighting. It's literally the last thing I worked on, and now I have to undo that and return to the old PWM control direct from the Teensy. It's gonna be fun seeing what the inside of that connector looks like. Depending on how tightly packed things are, I wonder if I'll find myself actually needing to solder under a microscope. I don't think I'm at that point yet. For simplicity's sakes, I will very likely solder wires to a breakout board, just for the sakes of keeping things organized. The old I2C breakout will be entirely removed, as the new design change has absolutely no reliance of I2C or port expander chips of any kind. At this point, the keyboard is now a "dumb" device, in terms of the number pad. It will no longer know that the numberpad isn't attached, only that no keys are being pressed.
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
245643-0

Good news: The 20-pin magnetic connectors came in today!
The bad news: They're potted! Joy! I get to chip away at that garbage!

Regarding the smaller end with the male USB-C connector... I think if I have clearance, I might reuse the female USB-C connector and solder off the back. The Male end 's potting actually is integral to the structure holding the mating pads to the pogo pins together. In other words, I am not sure I can truly disassemble that connector. I will have to experiment, but it definitely looks like I have clearance. If I desolder the PC board from the pogo connector, then I can just epoxy it to the male connector, and connect the wiring to the PC board pads. On the other side, I will solder directly to the mating pins.

I think this will work out!  ;D

245645-1
« Last Edit: Sun, 02 August 2020, 03:13:37 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
249505-0

Progress has been made! I am as close as I ever have been to finishing fully! I do still have wiring to do, but the hardest part is done.
I have successfully disassembled the USB-C magnetic connectors, and successfully installed them into the keyboard and number pad trim pieces!

249507-1 249509-2 249511-3

This part went better than I expected, though it was still rather difficult. I was very concerned about damaging the connectors, but they seemed to take the heat of my hot air rework station well. I suspect there was some sort of thermo-plastic used in their construction. It took a lot more heat and effort to desolder the half of the connector with the pogo pins from the half with the circuit board and female USB-C socket. Turns out the USB-C socket was just so new, that it took a lot of force to fully insert the male USB-C plug into it, and get a solidly registered locking insertion. Once the two were together, they were very solidly joined. As it just so happens, both the socket and plug readily accepted solder, so I simply soldered the two halves together into an absolutely permanent joint. The male plug side, as mentioned in the previous post, features the contact cups that the pogo pins mate to when the magnetic connectors are joined. With the Pogo connector separated from the PC board, I had large enough solder pads / solder posts that I can individually solder wires to. Electrically, when looking from either the top or the bottom of the PC board, in the orientation shown in the picture, Ground is always the leftmost pad, and positive always the rightmost pad This does mean that 2 pads are always wired as ground, and 2 pads always wired as positive, leaving 16 remaining pads to carry signals. This is actually exactly perfect, as we have 12 columns, 3 rows, and one LED PWM signal... a total of 16. The board had an integrated LED and resistor wired between ground and positive. I removed it, cause even though i like green, It wasn't what I wanted for this keyboard.

On a side note, I had to epoxy the ring magnet back onto the contact cup connector, due to my failed attempt to trim the plastic. When I reattached it, I made the error of putting it on backwards, but this has the positive effect of making it so that none of my actual USB-C magnetic connectors or cables are attracted to the connector. They repel, and try to push them above or below. I decided to flip the magnet on the Pogo pin connector too, essentially reverse keying these, as a safety precaution, so no actual USB cable ever unintentionally attaches to the number pad port. The magnets were epoxied permanently in their reverse positions when i epoxied the connectors in place on the trim.

249513-4 249515-5 249517-6

The old 5-pin MagSafe connector happened to have a key on the contact cup side of the connector, and it needed to be dealt with. My solution was actually quite simple. I filed it out just a bit, got a light pipe out of my LED kit, filed it down to the correct size and shape, and epoxied it in with the connector. It fills the gap the old keyway leaves, and will provide me with a port accentuating power LED. I used the same type of amber LED as I used throughout all the sub-key lighting across the entire keyboard, but i chose a larger resistor value, so that it would not glow very brightly. I did decide to hardwire it into power, so it will always remain lit, so long as the keyboard itself has power... Just very dimly. I painted the backside of the LED first yellow, to reflect as much light forward as possible, then painted over that with a few layers of black, so there is no bleed through in the adjacent key switch, incase all other LEDs are switched off.

249519-7

The board does stick out over the key switch, but it does clear... barely... It's close enough that I will definitely wrap the board in Kaptan tape, just to make sure it stays insulated. I've removed all the I2C circuitry and the DAC based LED controller. I reconnected the LED drivers (not visible in this pic) to a PWM output on the Teensy, and strung a second wire off the PWM output to the location of the new connector. I've also taken the sense wire, I2C Data, and I2C Clock wires and now have them terminated next to the small circuit board (they are unconnected at the moment).

What remains to be done is wiring columns 1-12 to the connector, and actually soldering everything to the connector. With the old I2C Data and Clock wires, the Sense wire, and the LED PWM wire already strung, it means I already have LED control and the three row wires placed. On the numberpad side, I need to construct a pair of LED drivers (simple... it's two transistors and two resistors), and then just wire up the 18 connections from the connector for power, LED control, and to the already existing switch matrix wiring. There are only a few wires to connect from the LED drivers to the LEDs (2 drive wires, and a single positive wire).

I've also decided that I will run down to the hardware store and buy all new brass screws, as all the opening and closing has marred up the existing ones pretty badly. I'm gonna drop a little sawdust and wood glue into a few of the screw holes, to reform the holes, as a few are stripped out. Other errata include creating a suitable light pipe and shroud for the caps lock key, cutting the bottom plate for the number pad, and maybe finding some better rubber feet. Aside from running some wires and soldering the last bits... This is very nearly done!  :cool:

Thanks to eliminating the need for a second controller, and no longer needing to figure out how to gracefully hot-plug said controller, the firmware becomes a very simple matter of simply doing a basic single controller firmware. There are well explained guides that go through this process, and I have no doubt I can put the firmware together in no time. So long as I don't get hit by work, or procrastinate, I think there's a real chance I have this working this month yet! I'm genuinely excited, most of all because software isn't holding me back anymore!  ;D
« Last Edit: Fri, 14 August 2020, 05:19:18 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
250279-0

I've got the connector wired up. I've tested the continuity several times, and as far as I can tell, the main keyboard's wiring is now 100% complete! I can't tell you all how happy I am to be able to say that! That said, I am having an issue, and I'm not sure why. I know my LEDs worked before, cause I have tests showing them all working. Caps Lock turns on and off properly. The sub-lighting LEDs are doing something weird. Some banks stay on, some are barely lit, others are off... If I send the signal to turn them on, they all come on properly... There seems to be a floating voltage somewhere keeping them from necessarily fully turning off, but it's strong enough that even a 10KΩ pull up resistor is not enough to overcome it. I'm worried I have a short in the new connector wiring... And that is absolutely terrifying. I have NO slack, and the LED pin is on the bottom, yet I've TESTED continuity... I found no shorts... And I'm SO confused! I need to look it over on a day I'm rested and not busy with work.

250281-1250283-2

It's a lot of wiring, packed into a small space, but it's more or less done! I fed the new wiring through the existing lacing. The Serial Data, Serial Clock, and Sense wire are no longer necessary, so those three wires are now three additional rows for the number pad matrix. I had rows 3-13 already within a space of 4 keys from the connector, thanks to the way I'd already wired the two extra columns. Since I needed 12 columns, it was only necessary to run one single new wire to column 2 on the controller.

I've also measured and cut the wires to connect the rows and columns of the number pad to it's connector. The one curled wire in the image... That's what's left of the spool. Should be just enough to wire up the LED drivers for the two transistor banks I'll set up in the number pad. I'll have to test if I get the same floating voltage issue in the number pad, of on the controller, if I desolder the pin. I just wanna eliminate the weird floating voltage issue and close this keyboard up FOR GOOD!

After that, I just gotta configure the firmware. Matrix will be simple... Just a few blank spaces in the scan, and all on the single controller. I'll solder up the number pad another day, when I've got some time and am not busy with work.
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
250434-0

I pulled an all nighter and finished wiring the Number Pad! I can't even begin to tell you all how happy I am to have it finished! The LED drivers are split into two banks, each driving about half the LEDs. Did I need to... Again, like the main keyboard, I'm greatly limiting the total current each transistor drives, so they should never even consider running hard. Once again, I laced all the loose matrix and connector wires. The physical arrangement of the wire paths made this one exceptionally clean... I'm almost sad it's all hidden. Had I never found those absolutely perfect 1960's era test equipment panel covers with that texture, I might have otherwise chosen an polycarbonate back, to show off the internals. I can't say no to retro test equipment parts, (that were used for manufacturing aviation parts, no less!)...

250436-1250438-2

I cut another square of material for the bottom plate. I was tired, and for whatever reason, felt I needed screws in the middle of each corner... SO I guess I added those??? I blame my sleep deprived brain for that decision. At the very least I know that the numberpad will be very rigid. Still need to get a proper set of matching rubber pads to match across both the number pad and the main keyboard. Might need to carefully slice the pads to the right thickness to "absorb" any intolerance that drifted into my build, thanks to any potential warping of the wood or plates. Just like, fractions of an inch I mean... Just wanna set it on the granite surface stone at work and make sure it's absolutely perfectly level. I'll definitely either use a thinner front rubber foot/pad, or carefully trim one to be physically thinner. I'm serious about wanting the front to sit low. Only reason I don't rely exclusively on rear feet, is cause the screws aren't perfectly flush, and I don't want them to scratch anything... I suppose I could try to fix that, but no joke, the front is thin as can be. Remember, even the front row of switches are shaved on the bottom, to remove the plunger cap, and part of the terminals!

With the exception of troubleshooting my LED driver's floating voltage issue in the main keyboard (and for that matter, seeing if it carries over to the number pad), the keyboard, both main and number pad are completely wired! All that remains is the Caps Lock light pipe, feet, and firmware!
(plus the aforementioned troubleshooting)

250432-3250440-4
« Last Edit: Thu, 27 August 2020, 04:10:46 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline richfiles

  • Thread Starter
  • Posts: 222
  • Location: MN, USA
250444-0

Oh yeah, quick addition! The magnets have the perfect amount of pull!
I can easily detach the numberpad from the keyboard, yet can also suspend the number pad by it's magnets!

From a compact 88 key 76% layout, to a 122 key battleship of a behemoth, and back again, all on demand!  ;D
« Last Edit: Thu, 27 August 2020, 04:17:44 by richfiles »
"75% + 1" Keyboard with "Danger Zone" keycaps and magnetically detachable Number Pad. Dyed Gateron Blue switches with amber sub lighting. Blue anodized plate and wood trim. (Firmware in Progress)
Bluetooth Apple //c keyboard with Alps SKCM Amber Switches. (Build in Progress)

Offline stormytheninja

  • Posts: 1
  • Location: San Francisco, Minnesota
    • NZXT
edited, plz delete
« Last Edit: Thu, 17 March 2022, 12:58:33 by stormytheninja »