Hackster is hosting Hackster Holidays, Ep. 7: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Friday!Stream Hackster Holidays, Ep. 7 on Friday!
_ Ewderna
Published © MIT

Cr0wn60: 60% Keeb powerd by XIAO RP2040

Cr0wn60 is the 60% keyboard with powerful tiny board XIAO RP2040.

IntermediateWork in progress10 hours565
Cr0wn60: 60% Keeb powerd by XIAO RP2040

Things used in this project

Hardware components

Seeed XIAO RP2040
Seeed Studio Seeed XIAO RP2040
×1
1N4148W
×1

Software apps and online services

KiCad
KiCad
FreeCad
PRK Firmware

Story

Read more

Custom parts and enclosures

Case - bottom side

bottom housing of Cr0wn60

Case - top side

top housing of Cr0wn60

Schematics

Main schematics

main schematics

Key matrix

Square matrix schematics

Code

keymap.rb

Ruby
main firmware code of PRK
require "via"
kbd=Keyboard.new
kbd.via=true
kbd.via_layer_count=3
p=[3,28,4,29,2,6,1,7,0]
kbd.init_matrix_pins(
  [
    [[p[1],p[0]],[p[2],p[0]],[p[3],p[0]],[p[4],p[0]],[p[5],p[0]],[p[6],p[0]],[p[0],p[1]],[p[2],p[1]],[p[3],p[1]],[p[4],p[1]],[p[5],p[1]],[p[6],p[1]],[p[7],p[1]]],
    [[p[0],p[2]],[p[1],p[2]],[p[3],p[2]],[p[4],p[2]],[p[5],p[2]],[p[6],p[2]],[p[0],p[3]],[p[1],p[3]],[p[2],p[3]],[p[4],p[3]],[p[5],p[3]],[p[6],p[3]],[p[7],p[3]]],
    [[p[0],p[4]],[p[1],p[4]],[p[2],p[4]],[p[3],p[4]],[p[5],p[4]],[p[6],p[4]],[p[0],p[5]],[p[1],p[5]],[p[2],p[5]],[p[3],p[5]],[p[4],p[5]],[p[6],p[5]],[p[7],p[5]]],
    [[p[0],p[6]],[p[1],p[6]],[p[2],p[6]],[p[3],p[6]],[p[4],p[6]],[p[5],p[6]],[p[0],p[7]],[p[1],p[7]],[p[2],p[7]],[p[3],p[7]],[p[4],p[7]],[p[5],p[7]],[p[6],p[7]]],
    [            [p[0],p[8]],[p[1],p[8]],[p[2],p[8]],            [p[3],p[8]],[p[4],p[8]],            [p[5],p[8]],[p[6],p[8]],[p[7],p[8]]                        ]
  ]
)
kbd.add_layer :default, %i(
  KC_ESC   KC_1     KC_2     KC_3     KC_4     KC_5     KC_6     KC_7     KC_8     KC_9     KC_0     KC_MINUS KC_EQUAL
  KC_TAB   KC_Q     KC_W     KC_E     KC_R     KC_T     KC_Y     KC_U     KC_I     KC_O     KC_P     KC_RBRC  KC_BSPC 
  KC_LCTL  KC_A     KC_S     KC_D     KC_F     KC_G     KC_H     KC_J     KC_K     KC_L     KC_SCOLON KC_QUOT KC_ENT
  KC_LSFT  KC_Z     KC_X     KC_C     KC_V     KC_B     KC_N     KC_M     KC_COMM  KC_DOT   KC_SLSH  KC_BSLS  KC_RSFT
           KC_LGUI  KC_LALT  VIA_FUNC1             KC_SPC   KC_ENT            VIA_FUNC2    KC_RALT  KC_RCTL
)
kbd.add_layer :VIA_LAYER1, %i(
  KC_ESC   KC_F1    KC_F2    KC_F3    KC_F4    KC_F5    KC_F6    KC_F7    KC_F8    KC_F9    KC_F10   KC_F11   KC_F12
  KC_TAB   KC_1     KC_2     KC_3     KC_4     KC_5     KC_6     KC_7     KC_8     KC_9     KC_0     KC_MINUS KC_DELETE
  KC_LCTL  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  KC_LEFT  KC_DOWN  KC_UP    KC_RIGHT XXXXXXX  XXXXXXX  KC_ENT
  KC_LSFT  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  KC_RSFT
           XXXXXXX  XXXXXXX  VIA_FUNC1             XXXXXXX  KC_TAB            XXXXXXX  XXXXXXX  XXXXXXX
)
kbd.add_layer :VIA_LAYER2, %i(
  KC_ESC   XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX
  KC_TAB   KC_EXLM  KC_AT    KC_HASH  KC_DLR   KC_PERC  KC_CIRC  KC_AMPR  KC_ASTER KC_LPRN  KC_RPRN  KC_UNDS  KC_DEL
  KC_LCTL  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  KC_LEFT  KC_DOWN  KC_UP    KC_RIGHT XXXXXXX  XXXXXXX  KC_ENT
  KC_LSFT  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  XXXXXXX  KC_RSFT
           XXXXXXX  XXXXXXX  XXXXXXX           XXXXXXX  XXXXXXX          VIA_FUNC2    XXXXXXX  XXXXXXX
)
kbd.define_mode_key :VIA_FUNC1,[:KC_LANG2,:VIA_LAYER1,250,250]
kbd.define_mode_key :VIA_FUNC2,[:KC_LANG1,:VIA_LAYER2,250,250]

kbd.start!

Credits

_ Ewderna
1 project • 3 followers

Comments