diff --git a/.idea/artifacts/TerrarumBuild.xml b/.idea/artifacts/TerrarumBuild.xml
index 92f057a0f..7bbf5d5e6 100644
--- a/.idea/artifacts/TerrarumBuild.xml
+++ b/.idea/artifacts/TerrarumBuild.xml
@@ -62,6 +62,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/keylayout/colemak.properties b/assets/keylayout/colemak.properties
deleted file mode 100644
index 8391244c7..000000000
--- a/assets/keylayout/colemak.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-layout_name=Colemak
-ROW1=4s;4qNUM_1;4qNUM_2;4qNUM_3;4qNUM_4;4qNUM_5;4qNUM_6;4qNUM_7;4qNUM_8;4qNUM_9;4qNUM_0;4qMINUS;4qEQUALS;6qBACKSPACE
-ROW2=6qTAB;4qQ;4qW;4qF;4qP;4qG;4qJ;4qL;4qU;4qY;4qSEMICOLON;4qLEFT_BRACKET;4qRIGHT_BRACKET;4qBACKSLASH
-ROW3=7qCAPS_LOCK;4qA;4qR;4qS;4qT;4qD;4qH;4qN;4qE;4qI;4qO;4qAPOSTROPHE;7qENTER
-ROW4=9qSHIFT_LEFT;4qZ;4qX;4qC;4qV;4qB;4qK;4qM;4qCOMMA;4qPERIOD;4qSLASH;9qSHIFT_RIGHT
-ROW5=15s;28qSPACE
diff --git a/assets/keylayout/dvorak.properties b/assets/keylayout/dvorak.properties
deleted file mode 100644
index be6375087..000000000
--- a/assets/keylayout/dvorak.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-layout_name=Dvorak Simplified
-ROW1=4s;4qNUM_1;4qNUM_2;4qNUM_3;4qNUM_4;4qNUM_5;4qNUM_6;4qNUM_7;4qNUM_8;4qNUM_9;4qNUM_0;4qLEFT_BRACKET;4qRIGHT_BRACKET;6qBACKSPACE
-ROW2=6qTAB;4qAPOSTROPHE;4qCOMMA;4qPERIOD;4qP;4qY;4qF;4qG;4qC;4qR;4qL;4qSLASH;4qEQUALS;4qBACKSLASH
-ROW3=7qCAPS_LOCK;4qA;4qO;4qE;4qU;4qI;4qD;4qH;4qT;4qN;4qS;4qMINUS;7qENTER
-ROW4=9qSHIFT_LEFT;4qSEMICOLON;4qQ;4qJ;4qK;4qX;4qB;4qM;4qW;4qV;4qZ;9qSHIFT_RIGHT
-ROW5=15s;28qSPACE
diff --git a/assets/keylayout/malt89.properties b/assets/keylayout/malt89.properties
deleted file mode 100644
index c3aa94f25..000000000
--- a/assets/keylayout/malt89.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-layout_name=Maltron 89
-ROW1=4qNUM_1;4qNUM_2;4qNUM_3;4qNUM_4;4qNUM_5;10s;4qNUM_6;4qNUM_7;4qNUM_8;4qNUM_9;4qNUM_0
-ROW2=4qQ;4qP;4qY;4qC;4qB;10s;4qV;4qM;4qU;4qZ;4qL
-ROW3=4qA;4qN;4qI;4qS;4qF;10s;4qD;4qT;4qH;4qO;4qR
-ROW4=4qCOMMA;4qPERIOD;4qJ;4qG;4qSEMICOLON;10s;4qAPOSTROPHE;4qW;4qK;4qX;4qNULL
-ROW5=4qSHIFT_LEFT;4qBACKSLASH;4qLEFT_BRACKET;4qMINUS;3s;4qE;4s;4qENTER;3s;4qEQUALS;4qRIGHT_BACKET;4qSLASH;4qSHIFT_RIGHT
diff --git a/assets/keylayout/qwerty.properties b/assets/keylayout/qwerty.properties
deleted file mode 100644
index 705eba4ec..000000000
--- a/assets/keylayout/qwerty.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-! generic QWERTY keyboard
-
-! row format: (n)q(keyname)
-! n: width of a key, 4 for regular key (1.0u). Value smaller than 4 will break the UI, so DON'T
-! keyname: name of the key that is recognised by the UI parser.
-! each key in the row is separated by one semicolon.
-
-layout_name=QWERTY
-ROW1=4s;4qNUM_1;4qNUM_2;4qNUM_3;4qNUM_4;4qNUM_5;4qNUM_6;4qNUM_7;4qNUM_8;4qNUM_9;4qNUM_0;4qMINUS;4qEQUALS;6qBACKSPACE
-ROW2=6qTAB;4qQ;4qW;4qE;4qR;4qT;4qY;4qU;4qI;4qO;4qP;4qLEFT_BRACKET;4qRIGHT_BRACKET;4qBACKSLASH
-ROW3=7qCAPS_LOCK;4qA;4qS;4qD;4qF;4qG;4qH;4qJ;4qK;4qL;4qSEMICOLON;4qAPOSTROPHE;7qENTER
-ROW4=9qSHIFT_LEFT;4qZ;4qX;4qC;4qV;4qB;4qN;4qM;4qCOMMA;4qPERIOD;4qSLASH;9qSHIFT_RIGHT
-ROW5=15s;28qSPACE
diff --git a/assets/keylayout/us_colemak.key b/assets/keylayout/us_colemak.key
new file mode 100644
index 000000000..0c6c98a82
--- /dev/null
+++ b/assets/keylayout/us_colemak.key
@@ -0,0 +1,256 @@
+[[""],[undefined],
+[undefined],
+[""],
+[undefined],
+[""],
+[""],
+["0",")"],
+["1","!"],
+["2","@"],
+["3","#"],
+["4","$"],
+["5","%"],
+["6","^"],
+["7","&"],
+["8","*"],
+["9","("],
+["*"],
+["#"],
+[""],
+[""],
+[""],
+[""],
+[""],
+[""],
+[""],
+[""],
+[""],
+[""],
+["a","A"],
+["b","B"],
+["c","C"],
+["s","S"],
+["f","F"],
+["t","T"],
+["d","D"],
+["h","H"],
+["u","U"],
+["n","N"],
+["e","E"],
+["i","I"],
+["m","M"],
+["k","K"],
+["y","Y"],
+[";",":"],
+["q","Q"],
+["p","P"],
+["r","R"],
+["g","G"],
+["l","L"],
+["v","V"],
+["w","W"],
+["x","X"],
+["j","J"],
+["z","Z"],
+[",","<"],
+[".",">"],
+[""],
+[""],
+[""],
+[""],
+[""],
+[" "],
+[""],
+[""],
+[""],
+["\n"],
+["\x08"],
+["`","~"],
+["-","_"],
+["=","+"],
+["[","{"],
+["]","}"],
+["\\","|"],
+["o","O"],
+["'",'"'],
+["/","?"],
+[""],
+[""],
+[""],
+[""],
+["+"],
+["