aeroheim-logoblog
projects
about

back to blog

A Leopold FC660C Reborn

AUG 22, 2017programming custom key mappings on an FC660C
    mech keys

A Leopold FC660C Reborn


Recently I decided to purchase a programmable controller replacement for my Leopold FC660C. Hasu was the one who came up with this controller design, with the technical process detailed here.

Disclaimer: I don’t have an electrical engineering background, so beware. ¯\_(ツ)_/¯

Leopold FC660C w/ Hypersphere silencing rings

Leopold FC660C

topre master race

FC660C Controller

FC660C Controller

A programmable FC660C controller made by Hasu

The main reason behind this decision was so that I could program my own key mappings into my FC660C, as the stock controller isn’t programmable. While I adore the Leopold FC660C’s 66% layout with its dedicated arrow cluster and intuitive FN mappings (numerics for F1-12, arrow cluster for navigation like PGUP, END, etc.), there were a few issues that bothered me:

  • CTRL+SHIFT+ESC for the Windows task manager doesn’t work, as SHIFT+ESC is mapped to the grave accent key (`)
  • INS/DEL isn’t used often enough (I don’t program on a terminal much these days, sorry vim!)
  • PRTSCR & PUS/BRK are a bit tricky to access, especially with modifiers
  • CAPSLOCK is pretty much useless and could be used as an additional function layer instead

After taking the above issues into consideration, I decided that it would be a good idea to buy a programmable controller and program my own layouts instead!

Installation


The first step was to open up my FC660C. I’d done this once before when I installed some Hypersphere silencing rings onto my FC660C’s sliders (for that deep soothing sound), but unfortunately this time was just as annoying as before, involving lots of unused cards just to wedge the case open. orz

After that, all that’s left is to unscrew the controller from the case to detach to separate the case from the PCB.

Naked FC660C

FC660C PCB + Stock controller

the insides after removing the case

Stock controller - front

Stock controller - front

miniUSB port, DIP switches, etc.

Stock controller - back

Stock controller - back

not much here

Installation is fairly straightforward. Detach the original controller from the PCB by disconnecting the ribbon cable, and then connect the cable to the new controller. Screw the controller back to the case, place the PCB in the proper position, and then snap the case back together.

Hasu vs. Stock - front

Hasu vs. Stock - front

goodbye DIP switches!

Hasu vs. Stock - back

Hasu vs. Stock - back

OK

New controller installed

New controller installed

nice!

And that’s it for the installation!

Custom Layouts


Hasu has written a really nice Keymap Editor web app that generates a prebuilt firmware based on your customized mappings for the controller, which I used exclusively to create all of my key mappings. My plan was to keep the default layer more or less the same, expand the stock layer 1 layout with more quality of life mappings, and then add mappings for media support on layer 2.

Layer 0 - Modified Stock


Default Layer

Default Layer

bye caps lock!

The default layer is almost identical to the default FC660C layout, except:

  • CAPSLOCK -> Layer 2
  • SHIFT+ESC -> ESC

Caps lock is pretty useless to me and I needed a way to access layer 2, so I decided to map the layer 2 key to it. Removing the stock mapping of SHIFT+ESC to grave accent also enables the CTRL+SHIFT+ESC shortcut for the Windows task manager again.

Layer 1 - Quality of Life


Layer 1

Layer 1

useful everyday mappings

Layer 1 is triggered by the FN key, and is where I added some significant functionality:

  • INS -> PRTSCR (screenshots)
  • DEL -> ALT+PRTSCR (app-specific screenshots)
  • ESC -> CTRL+SHIFT+ESC (task manager)
  • ENTER -> WIN+E (explorer)
  • SHIFT -> WIN+L (lock screen)
  • WASD+QE -> keyboard mouse support

These mappings are primarily quality of life mappings (task manager, explorer, lock, screenshots) that reduce the combination of key presses required and group common functionality together. Also, I decided to map mouse input to the WASD cluster, just in case I ever end up in a situation where I have no mouse available (most likely never, BUT!!).

Layer 2 - Media


Layer 2

Layer 2

media mappings

Layer 2 is triggered by the CAPSLOCK key, and contains basic media functionality:

  • Volume control
  • Track control
  • Play/pause/stop

This layer is also where I would normally add in keys for LED control. Unfortunately the FC660C doesn’t have any LEDs, so its rather empty at the moment until I figure out what else to add in the future.

Oh, and as a result of removing the mapping to the grave accent key (`) to SHIFT+ESC in layer 0, grave accent is now accessible on this layer with ESC, and tilde (~) is accessible with SHIFT+ESC.

Flashing the Firmware


All that’s left to do after customizing the layouts and generating the custom firmware is to flash the firmware on the FC660C controller. There’s a detailed guide here explaining the exact process, which basically boils down to setting the controller to bootloader mode (using the new switch that replaces the previous DIP switches) and then flashing the firmware using FLIP.

Programmable FC660C GET!

A Leopold FC660C Reborn


The entire process for installing the new controller, customizing the layouts, and then flashing the firmware only took around 2 hours or so, which made for a fun weekend activity. It was definitely nice seeing one of my favorite keyboards get some love by the mechanical keyboards community and being improved upon. Thanks Hasu!

See you next time!