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","&dArr;",{w:2},"","&uArr;","&larr;","&darr;","&uarr;","&rarr;"]
  ],
  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},"→"]
  ],
  
}