seveibar/keyboard-utils
Based on the code provided, here's a concise summary of the electronic component: A keyboard utility library for parsing and generating keyboard layouts using the Keyboard Layout Editor (KLE) JSON format, with support for generating key matrices, reference designators, and diode routing for keyboard PCBs. Key features: - Parses KLE JSON layouts into key coordinate and metadata objects - Supports various keyboard layouts (60%, ANSI, ISO, Ergodox, etc.) - Generates unique reference designators for keys - Provides utility for adding diode routing in key matrices - TypeScript-based with React and tscircuit integration The library allows keyboard designers to easily convert layout designs into structured, machine-readable keyboard specifications.
- Version
- 0.0.19
- License
- unset
- Stars
- 3
lib/layouts.ts
// biome-ignore lint: This file contains keyboard layout data
// From: https://www.keyboard-layout-editor.com/#/
export const layouts = {
default60: [
["~\n`","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{w:2},"Backspace"],
[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\"],
[{w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{w:2.25},"Enter"],
[{w:2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:2.75},"Shift"],
[{w:1.25},"Ctrl",{w:1.25},"Win",{w:1.25},"Alt",{a:7,w:6.25},"",{a:4,w:1.25},"Alt",{w:1.25},"Win",{w:1.25},"Menu",{w:1.25},"Ctrl"]
],
ansi104: [
["Esc",{x:1},"F1","F2","F3","F4",{x:0.5},"F5","F6","F7","F8",{x:0.5},"F9","F10","F11","F12",{x:0.25},"PrtSc","Scroll Lock","Pause\nBreak"],
[{y:0.5},"~\n`","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{w:2},"Backspace",{x:0.25},"Insert","Home","PgUp",{x:0.25},"Num Lock","/","*","-"],
[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\",{x:0.25},"Delete","End","PgDn",{x:0.25},"7\nHome","8\n↑","9\nPgUp",{h:2},"+"],
[{w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{w:2.25},"Enter",{x:3.5},"4\n←","5","6\n→"],
[{w:2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:2.75},"Shift",{x:1.25},"↑",{x:1.25},"1\nEnd","2\n↓","3\nPgDn",{h:2},"Enter"],
[{w:1.25},"Ctrl",{w:1.25},"Win",{w:1.25},"Alt",{a:7,w:6.25},"",{a:4,w:1.25},"Alt",{w:1.25},"Win",{w:1.25},"Menu",{w:1.25},"Ctrl",{x:0.25},"←","↓","→",{x:0.25,w:2},"0\nIns",".\nDel"]
],
iso105: [
["Esc",{x:1},"F1","F2","F3","F4",{x:0.5},"F5","F6","F7","F8",{x:0.5},"F9","F10","F11","F12",{x:0.25},"PrtSc","Scroll Lock","Pause\nBreak"],
[{y:0.5},"¬\n`","!\n1","\"\n2","£\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{w:2},"Backspace",{x:0.25},"Insert","Home","PgUp",{x:0.25},"Num Lock","/","*","-"],
[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"Enter",{x:0.25},"Delete","End","PgDn",{x:0.25},"7\nHome","8\n↑","9\nPgUp",{h:2},"+"],
[{w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","@\n'","~\n#",{x:4.75},"4\n←","5","6\n→"],
[{w:1.25},"Shift","|\n\\","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:2.75},"Shift",{x:1.25},"↑",{x:1.25},"1\nEnd","2\n↓","3\nPgDn",{h:2},"Enter"],
[{w:1.25},"Ctrl",{w:1.25},"Win",{w:1.25},"Alt",{a:7,w:6.25},"",{a:4,w:1.25},"AltGr",{w:1.25},"Win",{w:1.25},"Menu",{w:1.25},"Ctrl",{x:0.25},"←","↓","→",{x:0.25,w:2},"0\nIns",".\nDel"]
],
iso60: [
["¬\n`","!\n1","\"\n2","£\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{w:2},"Backspace"],
[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"Enter"],
[{w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","@\n'","~\n#"],
[{w:1.25},"Shift","|\n\\","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:2.75},"Shift"],
[{w:1.25},"Ctrl",{w:1.25},"Win",{w:1.25},"Alt",{a:7,w:6.25},"",{a:4,w:1.25},"AltGr",{w:1.25},"Win",{w:1.25},"Menu",{w:1.25},"Ctrl"]
],
jd40: [
["Esc","Q","W","E","R","T","Y","U","I","O","P","Back<br>Space"],
[{w:1.25},"Tab","A","S","D","F","G","H","J","K","L",{w:1.75},"Enter"],
[{w:1.75},"Shift","Z","X","C","V","B","N","M","<\n.",{w:1.25},"Shift","Fn"],
[{w:1.25},"Hyper","Super","Meta",{a:7,w:6.25},"",{a:4,w:1.25},"Meta",{w:1.25},"Super"]
],
ergodox: [
[{x:3.5},"#\n3",{x:10.5},"*\n8"],
[{y:-0.875,x:2.5},"@\n2",{x:1},"$\n4",{x:8.5},"&\n7",{x:1},"(\n9"],
[{y:-0.875,x:5.5},"%\n5",{a:7},"",{x:4.5},"",{a:4},"^\n6"],
[{y:-0.875,a:7,w:1.5},"",{a:4},"!\n1",{x:14.5},")\n0",{a:7,w:1.5},""],
[{y:-0.375,x:3.5,a:4},"E",{x:10.5},"I"],
[{y:-0.875,x:2.5},"W",{x:1},"R",{x:8.5},"U",{x:1},"O"],
[{y:-0.875,x:5.5},"T",{a:7,h:1.5},"",{x:4.5,h:1.5},"",{a:4},"Y"],
[{y:-0.875,a:7,w:1.5},"",{a:4},"Q",{x:14.5},"P",{a:7,w:1.5},""],
[{y:-0.375,x:3.5,a:4},"D",{x:10.5},"K"],
[{y:-0.875,x:2.5},"S",{x:1},"F",{x:8.5},"J",{x:1},"L"],
[{y:-0.875,x:5.5},"G",{x:6.5},"H"],
[{y:-0.875,a:7,w:1.5},"",{a:4},"A",{x:14.5},":\n;",{a:7,w:1.5},""],
[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
[{y:-0.75,x:3.5,a:4},"C",{x:10.5},"<\n,"],
[{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."],
[{y:-0.875,x:5.5},"B",{x:6.5},"N"],
[{y:-0.875,a:7,w:1.5},"",{a:4},"Z",{x:14.5},"?\n/",{a:7,w:1.5},""],
[{y:-0.375,x:3.5},"",{x:10.5},""],
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
[{r:-45,rx:6.5,ry:4.25,y:-1,x:1},"",""],
[{h:2},"",{h:2},"",""],
[{x:2},""],
[{r:45,rx:13,y:-1,x:-3},"",""],
[{x:-3},"",{h:2},"",{h:2},""],
[{x:-3},""]
],
atreus: [
[{r:10,rx:1,y:-0.1,x:2},"E"],
[{y:-0.65,x:1},"W",{x:1},"R"],
[{y:-0.75},"Q"],
[{y:-0.9,x:4},"T"],
[{y:-0.7,x:2},"D"],
[{y:-0.65,x:1},"S",{x:1},"F"],
[{y:-0.75},"A"],
[{y:-0.9,x:4},"G"],
[{y:-0.7,x:2},"C"],
[{y:-0.65,x:1},"X",{x:1},"V"],
[{y:-0.75},"Z"],
[{y:-0.9,x:4},"B"],
[{y:-0.75,x:5,h:1.5},"Ctrl"],
[{y:-0.95,x:2},"super"],
[{y:-0.65,x:1},"Tab",{x:1},"Shift"],
[{y:-0.75},"Esc"],
[{y:-0.9,x:4},"Bksp"],
[{r:-10,rx:7,ry:0.965,y:-0.2,x:2},"I"],
[{y:-0.65,x:1},"U",{x:1},"O"],
[{y:-0.75,x:4},"P"],
[{y:-0.9},"Y"],
[{y:-0.7,x:2},"K"],
[{y:-0.65,x:1},"J",{x:1},"L"],
[{y:-0.75,x:4},":\n;"],
[{y:-0.9},"H"],
[{y:-0.7,x:2},"<\n,"],
[{y:-0.65,x:1},"M",{x:1},">\n."],
[{y:-0.75,x:4},"?\n/"],
[{y:-0.9},"N"],
[{y:-0.75,x:-1,h:1.5},"Alt"],
[{y:-0.95,x:2},"_\n-"],
[{y:-0.65,x:1},"fn",{x:1},"\"\n'"],
[{y:-0.75,x:4},"Enter"],
[{y:-0.9},"Space"]
],
planck: [
[{a:7},"Tab","Q","W","E","R","T","Y","U","I","O","P","Back Space"],
["Esc","A","S","D","F","G","H","J","K","L",";","'"],
["Shift","Z","X","C","V","B","N","M",",",".","/","Return"],
["","Ctrl","Alt","Super","⇓",{w:2},"","⇑","←","↓","↑","→"]
],
keycool84: [
[{a:6},"Esc","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12",{a:5},"PrtSc\nNmLk","Pause\nScrLk","Delete\nInsert"],
[{a:4},"~\n`","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{a:6,w:2},"Backspace","Home"],
[{a:4,w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\",{a:6},"Page Up"],
[{a:4,w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{a:6,w:2.25},"Enter","Page Down"],
[{w:2.25},"Shift",{a:4},"Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{a:6,w:1.75},"Shift",{a:7},"↑",{a:6},"End"],
[{w:1.25},"Ctrl",{w:1.25},"Win",{w:1.25},"Alt",{a:7,w:6.25},"",{a:6},"Alt","Fn","Ctrl",{a:7},"←","↓","→"]
],
leopold_fc660m: [
["~\n`","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{w:2},"Backspace",{x:0.5},"Insert"],
[{w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\",{x:0.5},"Delete"],
[{w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{w:2.25},"Enter"],
[{w:2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:2.25},"Shift","↑"],
[{w:1.25},"Ctrl","Win",{w:1.25},"Alt",{a:7,w:6.25},"",{a:4,w:1.25},"Alt",{w:1.25},"Ctrl",{w:1.25},"Menu","←","↓","→"]
],
apple_wireless: [
[{y:0.75,t:"#666666",p:"CHICKLET",a:7,f:2,w:1.0357,h:0.75},"esc",{a:4,fa:[0,0,0,1],w:1.0357,h:0.75},"\n\n\nF1",{w:1.0357,h:0.75},"\n\n\nF2",{w:1.0357,h:0.75},"\n\n\nF3",{w:1.0357,h:0.75},"\n\n\nF4",{w:1.0357,h:0.75},"\n\n\nF5",{w:1.0357,h:0.75},"\n\n\nF6",{w:1.0357,h:0.75},"\n\n\nF7\n\n\n\n\n\n<i class='fa fa-backward'></i>",{fa:[0,0,0,1,0,0,0,0,0,1],w:1.0357,h:0.75},"\n\n\nF8\n\n\n\n\n\n<i class='fa fa-play'></i><i class='fa fa-pause'></i>",{fa:[0,0,0,1],w:1.0357,h:0.75},"\n\n\nF9\n\n\n\n\n\n<i class='fa fa-forward'></i>",{w:1.0357,h:0.75},"\n\n\nF10\n\n\n\n\n\n<i class='fa fa-volume-off'></i>",{w:1.0357,h:0.75},"\n\n\nF11\n\n\n\n\n\n<i class='fa fa-volume-down'></i>",{w:1.0357,h:0.75},"\n\n\nF12\n\n\n\n\n\n<i class='fa fa-volume-up'></i>",{a:7,w:1.0357,h:0.75},"<i class='fa fa-eject'></i>"],
[{y:-0.25,a:5,f:5},"<i class=\"varela varela-tilde\"></i>\n`","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{a:4,f:2,w:1.5},"\n\n\ndelete"],
[{w:1.5},"\ntab",{a:7,f:5},"Q","W","E","R","T","Y","U","I","O","P",{a:5},"{\n[","}\n]","|\n\\"],
[{a:4,f:2,fa:[1],w:1.75},"<i class='kb kb-Multimedia-Record'></i>\ncaps lock",{a:7,f:5},"A","S","D",{n:true},"F","G","H",{n:true},"J","K","L",{a:5},":\n;","\"\n'",{a:4,f:2,fa:[0,0,1],w:1.75},"\n\nenter\nreturn"],
[{w:2.25},"\nshift",{a:7,f:5},"Z","X","C","V","B","N","M",{a:5},"<\n,",">\n.","?\n/",{a:4,f:2,w:2.25},"\n\n\nshift"],
[{h:1.111},"\nfn",{h:1.111},"\ncontrol",{fa:[1],h:1.111},"alt\noption",{fa:[1,0,5],w:1.25,h:1.111},"\n\n⌘\ncommand",{a:7,w:5,h:1.111},"",{a:4,fa:[5],w:1.25,h:1.111},"⌘\ncommand",{fa:[5,0,1],h:1.111},"\n\nalt\noption",{x:1,a:7,f:5,h:0.611},"↑"],
[{y:-0.5,x:11.5,h:0.6111},"←",{h:0.6111},"↓",{h:0.6111},"→"]
],
}