I had to make my own raw as your github had wonky spacing. I hope I got close.
I was able to get the spacing more logical and condensed. I am sure there are further optimizations that could be done as well. 19 rows, 7 columns, 26 GPIO needed.
This design could easily be hand wired as all the runs are north/south or east/west oriented, no loopbacks, or what have you.
RAW:
[{a:7,w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},""],
[{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},"",{w:2},""],
[{w:2},"",{a:4},"~\n`","!\n1","@\n2","#\n3","$\n4","%\n5","^\n6","&\n7","*\n8","(\n9",")\n0","_\n-","+\n=",{w:2},"Backspace",{a:7},"",{w:2},""],
[{w:2},"",{a:4,w:1.5},"Tab","Q","W","E","R","T","Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\",{a:7},"",{w:2},""],
[{w:2},"",{a:4,w:1.75},"Caps Lock","A","S","D","F","G","H","J","K","L",":\n;","\"\n'",{w:2.25},"Enter",{a:7},"",{w:2},""],
[{w:2},"",{a:4,w:2.25},"Shift","Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{w:2.75},"Shift",{a:7},"",{a:4},"↑",{a:7},""],
[{w:2},"",{a:4,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:5.75,a:7,w:1.5},"",{w:1.5},"",{w:1.5},"",{w:1.5},""]