Add modifier support to vanilla keybindings.

Add Orange conflict color for modifier/key conflicts
(like Ctrl and Ctrl-Z conflicting)
Related to #2692
This commit is contained in:
mezz committed 2016-04-04 16:52:16 -07:00
1 parent 2ae47c0903
commit 8f49ea7c5f
12 files changed
+249 -81

No files matched your search

@@ -21,13 +21,12 @@ public class KeyBindingMap
public KeyBinding lookupActive(int keyCode)
{
KeyModifier activeModifier = KeyModifier.isKeyCodeModifier(keyCode) ? KeyModifier.NONE : KeyModifier.getActiveModifier();
KeyBinding binding = getBinding(keyCode, activeModifier);
if (binding != null)
KeyModifier activeModifier = KeyModifier.getActiveModifier();
if (activeModifier.matches(keyCode))
{
return binding;
activeModifier = KeyModifier.NONE;
}
return getBinding(keyCode, KeyModifier.NOT_SUPPORTED);
return getBinding(keyCode, activeModifier);
}
private KeyBinding getBinding(int keyCode, KeyModifier keyModifier)
@@ -3,12 +3,13 @@ package net.minecraftforge.client.settings;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.settings.GameSettings;
import org.lwjgl.input.Keyboard;
public enum KeyModifier {
CONTROL {
@Override
protected boolean matches(int keyCode)
public boolean matches(int keyCode)
{
if (Minecraft.isRunningOnMac)
{
@@ -27,14 +28,15 @@ public enum KeyModifier {
}
@Override
public String getLocalizedComboName(String keyName)
public String getLocalizedComboName(int keyCode)
{
String keyName = GameSettings.getKeyDisplayString(keyCode);
return I18n.format("forge.controlsgui.control", keyName);
}
},
SHIFT {
@Override
protected boolean matches(int keyCode)
public boolean matches(int keyCode)
{
return keyCode == Keyboard.KEY_LSHIFT || keyCode == Keyboard.KEY_RSHIFT;
}
@@ -46,14 +48,15 @@ public enum KeyModifier {
}
@Override
public String getLocalizedComboName(String keyName)
public String getLocalizedComboName(int keyCode)
{
String keyName = GameSettings.getKeyDisplayString(keyCode);
return I18n.format("forge.controlsgui.shift", keyName);
}
},
ALT {
@Override
protected boolean matches(int keyCode)
public boolean matches(int keyCode)
{
return keyCode == Keyboard.KEY_LMENU || keyCode == Keyboard.KEY_RMENU;
}
@@ -65,35 +68,17 @@ public enum KeyModifier {
}
@Override
public String getLocalizedComboName(String keyName)
public String getLocalizedComboName(int keyCode)
{
String keyName = GameSettings.getKeyDisplayString(keyCode);
return I18n.format("forge.controlsgui.alt", keyName);
}
},
NONE {
@Override
protected boolean matches(int keyCode)
public boolean matches(int keyCode)
{
return true;
}
@Override
public boolean isActive()
{
return !SHIFT.isActive() && !CONTROL.isActive() && !ALT.isActive();
}
@Override
public String getLocalizedComboName(String keyName)
{
return keyName;
}
},
NOT_SUPPORTED {
@Override
protected boolean matches(int keyCode)
{
return true;
return false;
}
@Override
@@ -103,9 +88,9 @@ public enum KeyModifier {
}
@Override
public String getLocalizedComboName(String keyName)
public String getLocalizedComboName(int keyCode)
{
return keyName;
return GameSettings.getKeyDisplayString(keyCode);
}
};
@@ -135,9 +120,9 @@ public enum KeyModifier {
return false;
}
protected abstract boolean matches(int keyCode);
public abstract boolean matches(int keyCode);
public abstract boolean isActive();
public abstract String getLocalizedComboName(String keyName);
public abstract String getLocalizedComboName(int keyCode);
}