类型: IC
作者: The_Royal
发布时间: 2019-11-08 16:54:41
更新时间:
2019-12-17 21:07:22
原链接:
https://geekhack.org/index.php?topic=103338.0
Little Foot (Luxury Ed.)
A Mighty Small Keyboard
What’s up my people, Im back here today to open up
the interest check on a more interesting project of mine in
the works to come to fruition in the near future.
Meet,
the Little Foot! A small, fun, and classy
“45%” keyboard.
Where We Began:
The Little Foot is a project of mine
that all started as a sort of personal challenge.
Both
in some tray-mounting design, as well as some more complex
firmware/code construction.
Trying to push the
limit of how small I could realistically go, I wanted to
dive more into chording, combos, layer tapping and LED
configuration, all without making something overtly
complicated. Keeping it fun; as I often really try to do.
Overall,
I’ve been pretty happy with the outcome.
The Pro Micro
Revision (most recent full rev) has/currently is
already Fully Open Sourced.
You can find a link to the
full Little Foot rev2.3 GitHub Repository
here:
https://github.com/TheRoyalSweatshirt/The-Little_Foot-Keyboard-rev2.3
With people responding well to the project in
general, I thought it would be fun to explore the idea of
giving the Little Foot a nice, premium option of case and
PCB. For those that want the ultimate experience in
obscurity and unique’ish keyboards.
The Case:
Taking a few design inspirations from easily one of
my favorite designers in the community,
LazyDesigners, The Little Foot Case is a
simple no frills, case with a classy finish.
Key Case Notes:
- Balanced Tray Mounting style design (i.e. Good Tray Mounting; Even typing feel)
- 4° Typing Angle
- Small, but Hefty Case Walls
- Back Face “Badge”/“Weight”
- Heavy-Biased Chamfered Edges
-
Integrated M2 Mounting Points
Will be offered in two variants: - Anodized Aluminum: PANTONE “Warm Grey 1C”
-
Bead Blasted Clear Polycarbonate
The PCB:
The Simple and Playful Design and Focus of the Little Foot lends itself to be a perfect board to experiment with. Playing with different switches, different layouts, or maybe just a larger than average Macro Pad. This is what it was designed around.
/*/*Renders of rev.Alpha LittleFoot LX PCB: Subject to change (its a bit ugly right now lol) everything will be cleaned up substantially after this initial alpha testing has passed QC.
Key PCB Notes: - Full Kaihl Hot-Swap Integration
- USB Type-C
- x4 Mounting points; Even feel and sound
- x2 RGB LED Indicators; Layer Triggers, Mini Dance Parties, or whatever else the QMK Masterminds come up with.
- Simple Layout Options: No more bUT HOw DO yoU tYpE NUmBeRs?!…Now you can have your 45% Keyboard, and dish out them sweet numerical data entries with ease.
-
Clean Silkscreen Design (if that matters to anyone lol)
The Little Foot Layout:
As part of the basis for this project, the biggest Challenge was…obviously…how can I make this actually usable as a fully functional keyboard?
I dove into the interwebs and sought the help of some of the Grand Master of QMK to assist me in getting the knowlege I required to craft the firmware for the Little Foot.
After YEARS of dedicated study and hours of copy/pasting lines of code…I completed my mission.
Comprehensive Deluxe Little Foot Layout: -
A graphical representation -
/*/*This keymap gets better everyday so it might be slightly different at GB…but I’m trying to perfect the 7u “Alpha-Only” layout to make it as complete as possible
Raw keymap.c Code:
More
Code: [Select]
/#include QMK_KEYBOARD_H /#include “quantum.h”
/#include “rgblight.h” // Layer names enum{
// - Base layer: _BASE, // - Symbols,
numbers, and functions: _FN, // - Alternate
Function layer: _LN, // - HYPE-BOI Function layer:
_HYPE }; //Tap Dance Declarations enum {
TD_QUES_ENT = 0, TD_SPC_SHFT = 1, TD_CTRL_Z =
2, TD_CTRL_Y = 3, TD_CTRL_C = 4, TD_CTRL_V =
5, TD_CTRL_A = 6, TD_P_BSLS = 7, TD_QUOTE =
8, TD_SDCOL = 9 }; //Tap Dance Definitions
qk_tap_dance_action_t tap_dance_actions[] = {
//Tap once for /?, twice for Enter
[TD_QUES_ENT] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH,
KC_ENT), [TD_SPC_SHFT] =
ACTION_TAP_DANCE_DOUBLE(KC_SPACE, KC_LSFT), [TD_CTRL_Z]
= ACTION_TAP_DANCE_DOUBLE(KC_Z, LCTL(KC_Z)),
[TD_CTRL_Y] = ACTION_TAP_DANCE_DOUBLE(KC_Y,
LCTL(KC_Y)), [TD_CTRL_C] =
ACTION_TAP_DANCE_DOUBLE(KC_C, LCTL(KC_C)), [TD_CTRL_V]
= ACTION_TAP_DANCE_DOUBLE(KC_V, LCTL(KC_V)),
[TD_CTRL_A] = ACTION_TAP_DANCE_DOUBLE(KC_A,
LCTL(KC_A)), [TD_P_BSLS] =
ACTION_TAP_DANCE_DOUBLE(KC_P, KC_BSLS), [TD_QUOTE] =
ACTION_TAP_DANCE_DOUBLE(KC_QUOTE, KC_DQT), [TD_SDCOL] =
ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN) // Other
declarations would go here, separated by commas, if you have
them }; enum combos { combo_ESC, combo_BACK, combo_TAB,
combo_PINKYCTRL, combo_DELETE, combo_ALT }; const uint16_t
PROGMEM esc_combo[] = {KC_1, KC_2, COMBO_END}; const
uint16_t PROGMEM bspc_combo[] = {KC_9, KC_0,
COMBO_END}; const uint16_t PROGMEM tab_combo[] = {KC_Q,
KC_W, COMBO_END}; const uint16_t PROGMEM pinkyctrl_combo[]
= {KC_A, KC_S, COMBO_END}; const uint16_t PROGMEM
del_combo[] = {KC_1, KC_0, COMBO_END}; const uint16_t
PROGMEM alt_combo[] = {KC_COMM, KC_DOT, COMBO_END};
combo_t key_combos[COMBO_COUNT] = { [combo_ESC] =
COMBO(esc_combo, KC_ESC), [combo_BACK] =
COMBO(bspc_combo, KC_BSPC), [combo_TAB] =
COMBO(tab_combo, KC_TAB), [combo_PINKYCTRL] =
COMBO(pinkyctrl_combo, KC_LCTRL), [combo_DELETE] =
COMBO(del_combo, KC_DEL), [combo_ALT] =
COMBO(alt_combo, KC_LALT) }; enum custom_keycodes { PASTA
= SAFE_RANGE, DBLBK, ALLCOPY }; bool
process_record_user(uint16_t keycode, keyrecord_t
/*record) { switch (keycode) { case PASTA: if
(record->event.pressed) { // when keycode
QMKBEST is pressed SEND_STRING(“HERE WE GO BOYS! The [INSERT
SUB-60 KEYBOARD HERE] layout is the greatest thing ever let
me tell you sir. First of all class ic inspirations on the
[Keyboard] blocker style IT also has the ; and ‘ kjeys
unless other competitors in the 40% space which I find
completely unreplaceable in layers it also has extra keys
for macros (read: artisans- I absolutely love the layout
where you have numbers/!@/#$%^ that replace qwerty
it means i can type for long periods of time without
twisting my hands at all whereas on a normal board you ahve
to twist your wrists sometimes to type for me I just have to
hold down left space and click asdf to get to numbers It’s
also just gorgeous IMO Ano quality is good, engraving is
good, I like how he made it so you can buy a 40% sized
board/layout but not need to buy 40% sized modifiers
for your keyboard so you can use base kits and uh yeah
that’s it That’s why the [INSERT SUB-60 KEYBOARD HERE] is my
every day board I literally am typing on it right now and
have used it every single day at work for the last 4 months
0 inftention to ever stop”); } else { // when
keycode QMKBEST is released } break; case DBLBK: if
(record->event.pressed) { // when keycode
QMKURL is pressed SEND_STRING(“[]” SS_TAP(X_LEFT)); } else {
// when keycode QMKURL is released } break; case
ALLCOPY: if (record->event.pressed) {
SEND_STRING(SS_LCTRL(“ac”)); // selects all and
copies } break; } return true; }; /#define FN MO(_FN)
/#define LN MO(_LN) /#define xxx KC_TRNS const
uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] =
{ [_BASE] = LAYOUT_big_space_base( KC_1, KC_2, KC_3,
KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_Q, KC_W, KC_E,
KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D,
KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FN, KC_Z, KC_X, KC_C,
KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, TD(TD_QUES_ENT),
MT(MOD_LSFT, KC_SPC) ), [_FN] = LAYOUT_big_space_base(
TD(TD_QUOTE), xxx, xxx, xxx, xxx, xxx, xxx, xxx, KC_PLUS,
KC_MINS, TD(TD_SDCOL), KC_UP, xxx, xxx, xxx, xxx, xxx, xxx,
KC_EQL, KC_UNDS, KC_LEFT, KC_DOWN, KC_RGHT, xxx, xxx, xxx,
DBLBK, xxx, TD(TD_SDCOL), xxx, xxx, xxx, xxx, xxx, xxx, xxx,
KC_LCBR, KC_RCBR, xxx, KC_BSLS, LN ), [_LN] =
LAYOUT_big_space_base( DBLBK, xxx, xxx, xxx, xxx, xxx, xxx,
xxx, xxx, PASTA, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx,
xxx, xxx, LCTL(KC_A), xxx, xxx, xxx, xxx, xxx, xxx, xxx,
xxx, xxx, LCTL(KC_Z), xxx, LCTL(KC_C), LCTL(KC_V), xxx, xxx,
xxx, xxx, xxx, KC_PIPE, xxx ) }; layer_state_t
layer_state_set_user(layer_state_t state) { switch
(get_highest_layer(state)) { case _FN: rgblight_setrgb
(RGB_BLUE); break; case _LN: rgblight_setrgb (RGB_RED);
break; default: // for any other layers, or the
default layer rgblight_setrgb (RGB_WHITE); break; } return
state; }
It’s almost enough to bring a tear to your eye
And it is in fact very usable once you get used to
it. I have constructed this entire IC Thread with nothing
but a Pro-Micro Based Little Foot.
Renders of Little Foots…Little Feet?:
What Perfection Looks Like:
**/Note On Design:*
For those
concerned, I’ve spoken with my engineers at the factory I
will be using for the production milling and they have
ensured me that these mounting points will be fine for this
application in regards to the Polycarbonate variant of the
Case.
I have a single prototype unit ordered in
polycarbonate as well as the aluminum variant for testing.
I’m not as experienced with the milling of plastics but this
is a good opportunity for me to learn a few things
Estimate on Pricing:
No Final
numbers by any means as of right now but the final cost of
kit is estimated to be less than
$150.00 USD for a complete Kit Including:
- x1 HotSwap Little Foot SMD PCB
- x1 Little Foot Case (Aluminum or PC Same Price)
- x1 4mm Thick Sand Blasted Brass Back-Face Badge/“Weight”
- x1 1.5mm SandBlased Brass Switch Plate
- x2 Long Molded Silicone Bumpons
- x8 7mm Barrel-Head SS M2 Torx Screws
-
Misc. Goodies & Stickers
Current Details/What’s Next:
Prototype Pics!
Prototype PCBs Approved!
GB Coming in January!
Id love to hear your thoughts on the Little Foot project in general.
Drop into the Little Foot Google Form and give me some of your input if your interested!
I’m mainly wanting this first run to a smaller type buy, maybe ~20-30 Total Units with 2 Case Options, PANTONE Warm Grey 1C Anodized Aluminum, or Polycarbonate. Lower number of units Mainly because I just want one and Its much easier on my wallet if can make up some of the cost of design and prototyping with a few other order fulfillments as well.
I don’t imagine there being a super high demand to entail a higher production of case.
So, point being, if you are interested PLEASE LET ME KNOW, I may not have the opportunity to run this type of buy again. [/size]
THANK YOU FOR READING THE WORDS I TYPED!