diff --git a/.gitignore b/.gitignore
index 606033f3..72fa6d1a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@ Debug/voxel_engine
/screenshots
/out
+/misc
/world
/worlds/**/*
/settings.toml
@@ -41,4 +42,4 @@ appimage-build/
*~
/res/content/*
-!/res/content/base
\ No newline at end of file
+!/res/content/base
diff --git a/res/layouts/pages/controls.xml b/res/layouts/pages/controls.xml
new file mode 100644
index 00000000..62af88b4
--- /dev/null
+++ b/res/layouts/pages/controls.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
diff --git a/res/layouts/pages/controls.xml.lua b/res/layouts/pages/controls.xml.lua
new file mode 100644
index 00000000..a66e17e3
--- /dev/null
+++ b/res/layouts/pages/controls.xml.lua
@@ -0,0 +1,25 @@
+function refresh_sensitivity()
+ document.sensitivity_label.text = string.format(
+ "%s: %s",
+ gui.str("Mouse Sensitivity", "settings"),
+ core.str_setting("camera.sensitivity")
+ )
+end
+
+function change_sensitivity(val)
+ core.set_setting("camera.sensitivity", val)
+ refresh_sensitivity()
+end
+
+function on_open()
+ document.sensitivity_track.value = core.get_setting("camera.sensitivity")
+ refresh_sensitivity()
+
+ local panel = document.bindings_panel
+ local bindings = core.get_bindings()
+ for i,name in ipairs(bindings) do
+ panel:add(gui.template("binding", {
+ id=name, name=gui.str(name)
+ }))
+ end
+end
diff --git a/res/layouts/pages/generators.xml b/res/layouts/pages/generators.xml
index 38722bed..a67d06b8 100644
--- a/res/layouts/pages/generators.xml
+++ b/res/layouts/pages/generators.xml
@@ -1,3 +1,3 @@
-
+
diff --git a/res/layouts/templates/binding.xml b/res/layouts/templates/binding.xml
new file mode 100644
index 00000000..643bd5aa
--- /dev/null
+++ b/res/layouts/templates/binding.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/res/layouts/templates/pack.xml b/res/layouts/templates/pack.xml
index b5304db0..71df1bcf 100644
--- a/res/layouts/templates/pack.xml
+++ b/res/layouts/templates/pack.xml
@@ -1,4 +1,4 @@
-
+
@@ -12,7 +12,7 @@
diff --git a/src/frontend/menu/menu_settings.cpp b/src/frontend/menu/menu_settings.cpp
index ec793baf..a4af6b9c 100644
--- a/src/frontend/menu/menu_settings.cpp
+++ b/src/frontend/menu/menu_settings.cpp
@@ -12,50 +12,8 @@
using namespace gui;
-static void create_controls_panel(Engine* engine) {
- auto menu = engine->getGUI()->getMenu();
- auto panel = menus::create_page(engine, "controls", 400, 0.0f, 1);
-
- /* Camera sensitivity setting track bar */{
- panel->add(menus::create_label([=]() {
- float s = engine->getSettings().camera.sensitivity.get();
- return langs::get(L"Mouse Sensitivity", L"settings")+L": "+
- util::to_wstring(s, 1);
- }));
-
- auto trackbar = std::make_shared(0.1, 10.0, 2.0, 0.1, 4);
- trackbar->setSupplier([=]() {
- return engine->getSettings().camera.sensitivity.get();
- });
- trackbar->setConsumer([=](double value) {
- engine->getSettings().camera.sensitivity = value;
- });
- panel->add(trackbar);
- }
-
- auto scrollPanel = std::dynamic_pointer_cast(guiutil::create(
- ""
- ""
- ));
- for (auto& entry : Events::bindings){
- std::string bindname = entry.first;
-
- auto subpanel = std::make_shared(glm::vec2(400, 40), glm::vec4(5.0f), 1.0f);
- subpanel->setColor(glm::vec4(0.0f));
- subpanel->setOrientation(Orientation::horizontal);
- subpanel->add(std::make_shared(entry.second));
-
- auto label = std::make_shared