Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jam56s

A 56-key hotswap column-staggered split keyboard.

image

I'll replace this with a proper photo once it's built, but for now heres a quick render

This is my first custom keyboard design, and my second hardware project. It was designed with a few goals in mind:

  1. to be functional ( not broken, hard to break )
  2. to be mine ( my own design, for my use case )
  3. to be simple ( simple to use, simple to build )
  4. to be something I'll actually use.

these were the basis of almost every decision I made while designing this. I chose a split layout because I already had a fairly nice 65% keyboard (the nuPhy air60 v2), I felt like anything too similar would fight for use (4). Secondly, I wanted to try and make a layout very personal to me, so this would be a truly from-scratch build (2). I used ergopad to get a rough idea of what a good layout could be for me, then I used ergogen to quickly protoype my designs until I arrived at something I could copy in keycad. For the layout and physical design of the jam56s I took inspiration from the lily58, the Corne, and the ErgoTravel, among others. My main considerations were having enough keys for macros and modifiers, while not letting it get too big. The final layout is 6x(4-key column) + a 4 key thumb cluster. ( wired as a 7x4 matrix, see below ) wiring.

image

The board includes:

  • Per-key RGB
  • 1 I2C breakout ( for an OLED )
  • RJ45 split comms
  • Hot-swap sockets I Chose an RJ45 jack over the more common TRRS jack as it can be safely hotplugged while the board is on. I didn't want to have to handle a USBC plug, which also seemed like overkill and ran the risk of frying the keeb if it was used for anything other than split comms.
imageimage

The case is mostly 3D printed, but you can late lasercut for better asthetics and rigidity. This was my first time using fusion so it's just a little bit jank. It's kinda an open-air sorta sandiwch design, I mainly just wanted to always be able to see the PCB.

BOM

In case you want to try to build this yourself, here's the prices I got for all the components. Prices are all in USD, even though I'm in Canada. ( also includes shipping )

ItemQuantityPriceSourceAdditional details
PCB2x539.99JLCPCB23.6 subtotal + 12.14 shipping + 4.25 tax
Plate235.67SendCutSendI Might be able to get it for cheaper locally, or in a diff material
Orpheus Pico2N/AHack ClubCan be replaced with other USCB pico clone
Kailh hot-swap socket7099cAliexpressThis is where the welcome deal seems to be placed right now
RJ45 Jacks22.63Aliexpress
RJ45 cable11.72Aliexpress
.91 in oled2.22Aliexpress
1n4148 diodes1001.97Aliexpress
0805 0.1uf capacitor1002.2Aliexpress
SK6812mini-Es1006.26Aliexpress
TTC silent red or silent frozen6032.7TorontoKeyboardMan<alt pick is otemu silent yellow jade (0.22) or silent kitty (0.45)
Keycaps14020.35Aliexpress
M2.5 x 25mm screw502.28Aliexpress
M2.5x9mm spacer352.78Aliexprescan also be 3d printed
Total1149.54

About

A fully custom 56-key column-staggered hotswap split keyboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jam56s

A 56-key hotswap column-staggered split keyboard.

image

I'll replace this with a proper photo once it's built, but for now heres a quick render

This is my first custom keyboard design, and my second hardware project. It was designed with a few goals in mind:

  1. to be functional ( not broken, hard to break )
  2. to be mine ( my own design, for my use case )
  3. to be simple ( simple to use, simple to build )
  4. to be something I'll actually use.

these were the basis of almost every decision I made while designing this. I chose a split layout because I already had a fairly nice 65% keyboard (the nuPhy air60 v2), I felt like anything too similar would fight for use (4). Secondly, I wanted to try and make a layout very personal to me, so this would be a truly from-scratch build (2). I used ergopad to get a rough idea of what a good layout could be for me, then I used ergogen to quickly protoype my designs until I arrived at something I could copy in keycad. For the layout and physical design of the jam56s I took inspiration from the lily58, the Corne, and the ErgoTravel, among others. My main considerations were having enough keys for macros and modifiers, while not letting it get too big. The final layout is 6x(4-key column) + a 4 key thumb cluster. ( wired as a 7x4 matrix, see below ) wiring.

image

The board includes:

  • Per-key RGB
  • 1 I2C breakout ( for an OLED )
  • RJ45 split comms
  • Hot-swap sockets I Chose an RJ45 jack over the more common TRRS jack as it can be safely hotplugged while the board is on. I didn't want to have to handle a USBC plug, which also seemed like overkill and ran the risk of frying the keeb if it was used for anything other than split comms.
imageimage

The case is mostly 3D printed, but you can late lasercut for better asthetics and rigidity. This was my first time using fusion so it's just a little bit jank. It's kinda an open-air sorta sandiwch design, I mainly just wanted to always be able to see the PCB.

BOM

In case you want to try to build this yourself, here's the prices I got for all the components. Prices are all in USD, even though I'm in Canada. ( also includes shipping )

ItemQuantityPriceSourceAdditional details
PCB2x539.99JLCPCB23.6 subtotal + 12.14 shipping + 4.25 tax
Plate235.67SendCutSendI Might be able to get it for cheaper locally, or in a diff material
Orpheus Pico2N/AHack ClubCan be replaced with other USCB pico clone
Kailh hot-swap socket7099cAliexpressThis is where the welcome deal seems to be placed right now
RJ45 Jacks22.63Aliexpress
RJ45 cable11.72Aliexpress
.91 in oled2.22Aliexpress
1n4148 diodes1001.97Aliexpress
0805 0.1uf capacitor1002.2Aliexpress
SK6812mini-Es1006.26Aliexpress
TTC silent red or silent frozen6032.7TorontoKeyboardMan<alt pick is otemu silent yellow jade (0.22) or silent kitty (0.45)
Keycaps14020.35Aliexpress
M2.5 x 25mm screw502.28Aliexpress
M2.5x9mm spacer352.78Aliexprescan also be 3d printed
Total1149.54

About

A fully custom 56-key column-staggered hotswap split keyboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jam56s

A 56-key hotswap column-staggered split keyboard.

image

I'll replace this with a proper photo once it's built, but for now heres a quick render

This is my first custom keyboard design, and my second hardware project. It was designed with a few goals in mind:

  1. to be functional ( not broken, hard to break )
  2. to be mine ( my own design, for my use case )
  3. to be simple ( simple to use, simple to build )
  4. to be something I'll actually use.

these were the basis of almost every decision I made while designing this. I chose a split layout because I already had a fairly nice 65% keyboard (the nuPhy air60 v2), I felt like anything too similar would fight for use (4). Secondly, I wanted to try and make a layout very personal to me, so this would be a truly from-scratch build (2). I used ergopad to get a rough idea of what a good layout could be for me, then I used ergogen to quickly protoype my designs until I arrived at something I could copy in keycad. For the layout and physical design of the jam56s I took inspiration from the lily58, the Corne, and the ErgoTravel, among others. My main considerations were having enough keys for macros and modifiers, while not letting it get too big. The final layout is 6x(4-key column) + a 4 key thumb cluster. ( wired as a 7x4 matrix, see below ) wiring.

image

The board includes:

  • Per-key RGB
  • 1 I2C breakout ( for an OLED )
  • RJ45 split comms
  • Hot-swap sockets I Chose an RJ45 jack over the more common TRRS jack as it can be safely hotplugged while the board is on. I didn't want to have to handle a USBC plug, which also seemed like overkill and ran the risk of frying the keeb if it was used for anything other than split comms.
imageimage

The case is mostly 3D printed, but you can late lasercut for better asthetics and rigidity. This was my first time using fusion so it's just a little bit jank. It's kinda an open-air sorta sandiwch design, I mainly just wanted to always be able to see the PCB.

BOM

In case you want to try to build this yourself, here's the prices I got for all the components. Prices are all in USD, even though I'm in Canada. ( also includes shipping )

ItemQuantityPriceSourceAdditional details
PCB2x539.99JLCPCB23.6 subtotal + 12.14 shipping + 4.25 tax
Plate235.67SendCutSendI Might be able to get it for cheaper locally, or in a diff material
Orpheus Pico2N/AHack ClubCan be replaced with other USCB pico clone
Kailh hot-swap socket7099cAliexpressThis is where the welcome deal seems to be placed right now
RJ45 Jacks22.63Aliexpress
RJ45 cable11.72Aliexpress
.91 in oled2.22Aliexpress
1n4148 diodes1001.97Aliexpress
0805 0.1uf capacitor1002.2Aliexpress
SK6812mini-Es1006.26Aliexpress
TTC silent red or silent frozen6032.7TorontoKeyboardMan<alt pick is otemu silent yellow jade (0.22) or silent kitty (0.45)
Keycaps14020.35Aliexpress
M2.5 x 25mm screw502.28Aliexpress
M2.5x9mm spacer352.78Aliexprescan also be 3d printed
Total1149.54

About

A fully custom 56-key column-staggered hotswap split keyboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jam56s

A 56-key hotswap column-staggered split keyboard.

image

I'll replace this with a proper photo once it's built, but for now heres a quick render

This is my first custom keyboard design, and my second hardware project. It was designed with a few goals in mind:

  1. to be functional ( not broken, hard to break )
  2. to be mine ( my own design, for my use case )
  3. to be simple ( simple to use, simple to build )
  4. to be something I'll actually use.

these were the basis of almost every decision I made while designing this. I chose a split layout because I already had a fairly nice 65% keyboard (the nuPhy air60 v2), I felt like anything too similar would fight for use (4). Secondly, I wanted to try and make a layout very personal to me, so this would be a truly from-scratch build (2). I used ergopad to get a rough idea of what a good layout could be for me, then I used ergogen to quickly protoype my designs until I arrived at something I could copy in keycad. For the layout and physical design of the jam56s I took inspiration from the lily58, the Corne, and the ErgoTravel, among others. My main considerations were having enough keys for macros and modifiers, while not letting it get too big. The final layout is 6x(4-key column) + a 4 key thumb cluster. ( wired as a 7x4 matrix, see below ) wiring.

image

The board includes:

  • Per-key RGB
  • 1 I2C breakout ( for an OLED )
  • RJ45 split comms
  • Hot-swap sockets I Chose an RJ45 jack over the more common TRRS jack as it can be safely hotplugged while the board is on. I didn't want to have to handle a USBC plug, which also seemed like overkill and ran the risk of frying the keeb if it was used for anything other than split comms.
imageimage

The case is mostly 3D printed, but you can late lasercut for better asthetics and rigidity. This was my first time using fusion so it's just a little bit jank. It's kinda an open-air sorta sandiwch design, I mainly just wanted to always be able to see the PCB.

BOM

In case you want to try to build this yourself, here's the prices I got for all the components. Prices are all in USD, even though I'm in Canada. ( also includes shipping )

ItemQuantityPriceSourceAdditional details
PCB2x539.99JLCPCB23.6 subtotal + 12.14 shipping + 4.25 tax
Plate235.67SendCutSendI Might be able to get it for cheaper locally, or in a diff material
Orpheus Pico2N/AHack ClubCan be replaced with other USCB pico clone
Kailh hot-swap socket7099cAliexpressThis is where the welcome deal seems to be placed right now
RJ45 Jacks22.63Aliexpress
RJ45 cable11.72Aliexpress
.91 in oled2.22Aliexpress
1n4148 diodes1001.97Aliexpress
0805 0.1uf capacitor1002.2Aliexpress
SK6812mini-Es1006.26Aliexpress
TTC silent red or silent frozen6032.7TorontoKeyboardMan<alt pick is otemu silent yellow jade (0.22) or silent kitty (0.45)
Keycaps14020.35Aliexpress
M2.5 x 25mm screw502.28Aliexpress
M2.5x9mm spacer352.78Aliexprescan also be 3d printed
Total1149.54

About

A fully custom 56-key column-staggered hotswap split keyboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jam56s

A 56-key hotswap column-staggered split keyboard.

image

I'll replace this with a proper photo once it's built, but for now heres a quick render

This is my first custom keyboard design, and my second hardware project. It was designed with a few goals in mind:

  1. to be functional ( not broken, hard to break )
  2. to be mine ( my own design, for my use case )
  3. to be simple ( simple to use, simple to build )
  4. to be something I'll actually use.

these were the basis of almost every decision I made while designing this. I chose a split layout because I already had a fairly nice 65% keyboard (the nuPhy air60 v2), I felt like anything too similar would fight for use (4). Secondly, I wanted to try and make a layout very personal to me, so this would be a truly from-scratch build (2). I used ergopad to get a rough idea of what a good layout could be for me, then I used ergogen to quickly protoype my designs until I arrived at something I could copy in keycad. For the layout and physical design of the jam56s I took inspiration from the lily58, the Corne, and the ErgoTravel, among others. My main considerations were having enough keys for macros and modifiers, while not letting it get too big. The final layout is 6x(4-key column) + a 4 key thumb cluster. ( wired as a 7x4 matrix, see below ) wiring.

image

The board includes:

  • Per-key RGB
  • 1 I2C breakout ( for an OLED )
  • RJ45 split comms
  • Hot-swap sockets I Chose an RJ45 jack over the more common TRRS jack as it can be safely hotplugged while the board is on. I didn't want to have to handle a USBC plug, which also seemed like overkill and ran the risk of frying the keeb if it was used for anything other than split comms.
imageimage

The case is mostly 3D printed, but you can late lasercut for better asthetics and rigidity. This was my first time using fusion so it's just a little bit jank. It's kinda an open-air sorta sandiwch design, I mainly just wanted to always be able to see the PCB.

BOM

In case you want to try to build this yourself, here's the prices I got for all the components. Prices are all in USD, even though I'm in Canada. ( also includes shipping )

ItemQuantityPriceSourceAdditional details
PCB2x539.99JLCPCB23.6 subtotal + 12.14 shipping + 4.25 tax
Plate235.67SendCutSendI Might be able to get it for cheaper locally, or in a diff material
Orpheus Pico2N/AHack ClubCan be replaced with other USCB pico clone
Kailh hot-swap socket7099cAliexpressThis is where the welcome deal seems to be placed right now
RJ45 Jacks22.63Aliexpress
RJ45 cable11.72Aliexpress
.91 in oled2.22Aliexpress
1n4148 diodes1001.97Aliexpress
0805 0.1uf capacitor1002.2Aliexpress
SK6812mini-Es1006.26Aliexpress
TTC silent red or silent frozen6032.7TorontoKeyboardMan<alt pick is otemu silent yellow jade (0.22) or silent kitty (0.45)
Keycaps14020.35Aliexpress
M2.5 x 25mm screw502.28Aliexpress
M2.5x9mm spacer352.78Aliexprescan also be 3d printed
Total1149.54

About

A fully custom 56-key column-staggered hotswap split keyboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jam56s

A 56-key hotswap column-staggered split keyboard.

image

I'll replace this with a proper photo once it's built, but for now heres a quick render

This is my first custom keyboard design, and my second hardware project. It was designed with a few goals in mind:

  1. to be functional ( not broken, hard to break )
  2. to be mine ( my own design, for my use case )
  3. to be simple ( simple to use, simple to build )
  4. to be something I'll actually use.

these were the basis of almost every decision I made while designing this. I chose a split layout because I already had a fairly nice 65% keyboard (the nuPhy air60 v2), I felt like anything too similar would fight for use (4). Secondly, I wanted to try and make a layout very personal to me, so this would be a truly from-scratch build (2). I used ergopad to get a rough idea of what a good layout could be for me, then I used ergogen to quickly protoype my designs until I arrived at something I could copy in keycad. For the layout and physical design of the jam56s I took inspiration from the lily58, the Corne, and the ErgoTravel, among others. My main considerations were having enough keys for macros and modifiers, while not letting it get too big. The final layout is 6x(4-key column) + a 4 key thumb cluster. ( wired as a 7x4 matrix, see below ) wiring.

image

The board includes:

  • Per-key RGB
  • 1 I2C breakout ( for an OLED )
  • RJ45 split comms
  • Hot-swap sockets I Chose an RJ45 jack over the more common TRRS jack as it can be safely hotplugged while the board is on. I didn't want to have to handle a USBC plug, which also seemed like overkill and ran the risk of frying the keeb if it was used for anything other than split comms.
imageimage

The case is mostly 3D printed, but you can late lasercut for better asthetics and rigidity. This was my first time using fusion so it's just a little bit jank. It's kinda an open-air sorta sandiwch design, I mainly just wanted to always be able to see the PCB.

BOM

In case you want to try to build this yourself, here's the prices I got for all the components. Prices are all in USD, even though I'm in Canada. ( also includes shipping )

ItemQuantityPriceSourceAdditional details
PCB2x539.99JLCPCB23.6 subtotal + 12.14 shipping + 4.25 tax
Plate235.67SendCutSendI Might be able to get it for cheaper locally, or in a diff material
Orpheus Pico2N/AHack ClubCan be replaced with other USCB pico clone
Kailh hot-swap socket7099cAliexpressThis is where the welcome deal seems to be placed right now
RJ45 Jacks22.63Aliexpress
RJ45 cable11.72Aliexpress
.91 in oled2.22Aliexpress
1n4148 diodes1001.97Aliexpress
0805 0.1uf capacitor1002.2Aliexpress
SK6812mini-Es1006.26Aliexpress
TTC silent red or silent frozen6032.7TorontoKeyboardMan<alt pick is otemu silent yellow jade (0.22) or silent kitty (0.45)
Keycaps14020.35Aliexpress
M2.5 x 25mm screw502.28Aliexpress
M2.5x9mm spacer352.78Aliexprescan also be 3d printed
Total1149.54

About

A fully custom 56-key column-staggered hotswap split keyboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jam56s

A 56-key hotswap column-staggered split keyboard.

image

I'll replace this with a proper photo once it's built, but for now heres a quick render

This is my first custom keyboard design, and my second hardware project. It was designed with a few goals in mind:

  1. to be functional ( not broken, hard to break )
  2. to be mine ( my own design, for my use case )
  3. to be simple ( simple to use, simple to build )
  4. to be something I'll actually use.

these were the basis of almost every decision I made while designing this. I chose a split layout because I already had a fairly nice 65% keyboard (the nuPhy air60 v2), I felt like anything too similar would fight for use (4). Secondly, I wanted to try and make a layout very personal to me, so this would be a truly from-scratch build (2). I used ergopad to get a rough idea of what a good layout could be for me, then I used ergogen to quickly protoype my designs until I arrived at something I could copy in keycad. For the layout and physical design of the jam56s I took inspiration from the lily58, the Corne, and the ErgoTravel, among others. My main considerations were having enough keys for macros and modifiers, while not letting it get too big. The final layout is 6x(4-key column) + a 4 key thumb cluster. ( wired as a 7x4 matrix, see below ) wiring.

image

The board includes:

  • Per-key RGB
  • 1 I2C breakout ( for an OLED )
  • RJ45 split comms
  • Hot-swap sockets I Chose an RJ45 jack over the more common TRRS jack as it can be safely hotplugged while the board is on. I didn't want to have to handle a USBC plug, which also seemed like overkill and ran the risk of frying the keeb if it was used for anything other than split comms.
imageimage

The case is mostly 3D printed, but you can late lasercut for better asthetics and rigidity. This was my first time using fusion so it's just a little bit jank. It's kinda an open-air sorta sandiwch design, I mainly just wanted to always be able to see the PCB.

BOM

In case you want to try to build this yourself, here's the prices I got for all the components. Prices are all in USD, even though I'm in Canada. ( also includes shipping )

ItemQuantityPriceSourceAdditional details
PCB2x539.99JLCPCB23.6 subtotal + 12.14 shipping + 4.25 tax
Plate235.67SendCutSendI Might be able to get it for cheaper locally, or in a diff material
Orpheus Pico2N/AHack ClubCan be replaced with other USCB pico clone
Kailh hot-swap socket7099cAliexpressThis is where the welcome deal seems to be placed right now
RJ45 Jacks22.63Aliexpress
RJ45 cable11.72Aliexpress
.91 in oled2.22Aliexpress
1n4148 diodes1001.97Aliexpress
0805 0.1uf capacitor1002.2Aliexpress
SK6812mini-Es1006.26Aliexpress
TTC silent red or silent frozen6032.7TorontoKeyboardMan<alt pick is otemu silent yellow jade (0.22) or silent kitty (0.45)
Keycaps14020.35Aliexpress
M2.5 x 25mm screw502.28Aliexpress
M2.5x9mm spacer352.78Aliexprescan also be 3d printed
Total1149.54

About

A fully custom 56-key column-staggered hotswap split keyboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

jam56s

A 56-key hotswap column-staggered split keyboard.

image

I'll replace this with a proper photo once it's built, but for now heres a quick render

This is my first custom keyboard design, and my second hardware project. It was designed with a few goals in mind:

  1. to be functional ( not broken, hard to break )
  2. to be mine ( my own design, for my use case )
  3. to be simple ( simple to use, simple to build )
  4. to be something I'll actually use.

these were the basis of almost every decision I made while designing this. I chose a split layout because I already had a fairly nice 65% keyboard (the nuPhy air60 v2), I felt like anything too similar would fight for use (4). Secondly, I wanted to try and make a layout very personal to me, so this would be a truly from-scratch build (2). I used ergopad to get a rough idea of what a good layout could be for me, then I used ergogen to quickly protoype my designs until I arrived at something I could copy in keycad. For the layout and physical design of the jam56s I took inspiration from the lily58, the Corne, and the ErgoTravel, among others. My main considerations were having enough keys for macros and modifiers, while not letting it get too big. The final layout is 6x(4-key column) + a 4 key thumb cluster. ( wired as a 7x4 matrix, see below ) wiring.

image

The board includes:

  • Per-key RGB
  • 1 I2C breakout ( for an OLED )
  • RJ45 split comms
  • Hot-swap sockets I Chose an RJ45 jack over the more common TRRS jack as it can be safely hotplugged while the board is on. I didn't want to have to handle a USBC plug, which also seemed like overkill and ran the risk of frying the keeb if it was used for anything other than split comms.
imageimage

The case is mostly 3D printed, but you can late lasercut for better asthetics and rigidity. This was my first time using fusion so it's just a little bit jank. It's kinda an open-air sorta sandiwch design, I mainly just wanted to always be able to see the PCB.

BOM

In case you want to try to build this yourself, here's the prices I got for all the components. Prices are all in USD, even though I'm in Canada. ( also includes shipping )

ItemQuantityPriceSourceAdditional details
PCB2x539.99JLCPCB23.6 subtotal + 12.14 shipping + 4.25 tax
Plate235.67SendCutSendI Might be able to get it for cheaper locally, or in a diff material
Orpheus Pico2N/AHack ClubCan be replaced with other USCB pico clone
Kailh hot-swap socket7099cAliexpressThis is where the welcome deal seems to be placed right now
RJ45 Jacks22.63Aliexpress
RJ45 cable11.72Aliexpress
.91 in oled2.22Aliexpress
1n4148 diodes1001.97Aliexpress
0805 0.1uf capacitor1002.2Aliexpress
SK6812mini-Es1006.26Aliexpress
TTC silent red or silent frozen6032.7TorontoKeyboardMan<alt pick is otemu silent yellow jade (0.22) or silent kitty (0.45)
Keycaps14020.35Aliexpress
M2.5 x 25mm screw502.28Aliexpress
M2.5x9mm spacer352.78Aliexprescan also be 3d printed
Total1149.54

About

A fully custom 56-key column-staggered hotswap split keyboard

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages