diff --git a/src/main/java/chylex/bettercontrols/input/KeyBindingWithModifier.java b/src/main/java/chylex/bettercontrols/input/KeyBindingWithModifier.java
index 4247d07..f59e134 100644
--- a/src/main/java/chylex/bettercontrols/input/KeyBindingWithModifier.java
+++ b/src/main/java/chylex/bettercontrols/input/KeyBindingWithModifier.java
@@ -1,11 +1,17 @@
 package chylex.bettercontrols.input;
 import net.minecraft.client.options.KeyBinding;
 import net.minecraft.client.util.InputUtil.Type;
+import net.minecraft.text.Text;
+import net.minecraft.text.TranslatableText;
 import org.jetbrains.annotations.Nullable;
 
 public class KeyBindingWithModifier extends KeyBinding{
 	public static final String CATEGORY = "key.categories.bettercontrols";
 	
+	public static boolean checkCategoryMatches(final Text text){
+		return text instanceof TranslatableText && CATEGORY.equals(((TranslatableText)text).getKey());
+	}
+	
 	@Nullable
 	private ModifierKey modifier = null;
 	
diff --git a/src/main/java/chylex/bettercontrols/mixin/AccessControlsListCategory.java b/src/main/java/chylex/bettercontrols/mixin/AccessControlsListCategory.java
new file mode 100644
index 0000000..1a96f93
--- /dev/null
+++ b/src/main/java/chylex/bettercontrols/mixin/AccessControlsListCategory.java
@@ -0,0 +1,11 @@
+package chylex.bettercontrols.mixin;
+import net.minecraft.client.gui.screen.options.ControlsListWidget.CategoryEntry;
+import net.minecraft.text.Text;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(CategoryEntry.class)
+public interface AccessControlsListCategory{
+	@Accessor
+	Text getText();
+}
diff --git a/src/main/java/chylex/bettercontrols/mixin/AccessControlsListKeyBinding.java b/src/main/java/chylex/bettercontrols/mixin/AccessControlsListKeyBinding.java
new file mode 100644
index 0000000..1b85585
--- /dev/null
+++ b/src/main/java/chylex/bettercontrols/mixin/AccessControlsListKeyBinding.java
@@ -0,0 +1,11 @@
+package chylex.bettercontrols.mixin;
+import net.minecraft.client.gui.screen.options.ControlsListWidget.KeyBindingEntry;
+import net.minecraft.client.options.KeyBinding;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(KeyBindingEntry.class)
+public interface AccessControlsListKeyBinding{
+	@Accessor
+	KeyBinding getBinding();
+}
diff --git a/src/main/java/chylex/bettercontrols/mixin/HookControlsListWidget.java b/src/main/java/chylex/bettercontrols/mixin/HookControlsListWidget.java
new file mode 100644
index 0000000..9637e30
--- /dev/null
+++ b/src/main/java/chylex/bettercontrols/mixin/HookControlsListWidget.java
@@ -0,0 +1,37 @@
+package chylex.bettercontrols.mixin;
+import chylex.bettercontrols.BetterControlsMod;
+import chylex.bettercontrols.input.KeyBindingWithModifier;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.screen.options.ControlsListWidget;
+import net.minecraft.client.gui.screen.options.ControlsListWidget.CategoryEntry;
+import net.minecraft.client.gui.screen.options.ControlsListWidget.Entry;
+import net.minecraft.client.gui.screen.options.ControlsListWidget.KeyBindingEntry;
+import net.minecraft.client.gui.screen.options.ControlsOptionsScreen;
+import net.minecraft.client.gui.widget.ElementListWidget;
+import org.apache.commons.lang3.ArrayUtils;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+@Mixin(ControlsListWidget.class)
+public abstract class HookControlsListWidget extends ElementListWidget<Entry>{
+	public HookControlsListWidget(final MinecraftClient client, final int width, final int height, final int top, final int bottom, final int itemHeight){
+		super(client, width, height, top, bottom, itemHeight);
+	}
+	
+	@Inject(method = "<init>", at = @At("TAIL"))
+	public void init(final ControlsOptionsScreen parent, final MinecraftClient client, final CallbackInfo ci){
+		children().removeIf(it -> {
+			if (it instanceof CategoryEntry && KeyBindingWithModifier.checkCategoryMatches(((AccessControlsListCategory)it).getText())){
+				return true;
+			}
+			
+			if (it instanceof KeyBindingEntry && ArrayUtils.contains(BetterControlsMod.config.getAllKeyBindings(), ((AccessControlsListKeyBinding)it).getBinding())){
+				return true;
+			}
+			
+			return false;
+		});
+	}
+}
diff --git a/src/main/resources/mixins.json b/src/main/resources/mixins.json
index 3793e3f..bfbb9ef 100644
--- a/src/main/resources/mixins.json
+++ b/src/main/resources/mixins.json
@@ -6,10 +6,13 @@
   "mixins": [
     "AccessCameraFields",
     "AccessClientPlayerFields",
+    "AccessControlsListCategory",
+    "AccessControlsListKeyBinding",
     "AccessKeyBindingFields",
     "AccessScreenButtons",
     "HookClientPlayerInputTick",
     "HookClientPlayerTick",
+    "HookControlsListWidget",
     "HookLoadGameOptions",
     "HookOpenScreen",
     "HookStickyKeyBindingState"