mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 08:17:35 +00:00
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:
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);
|
||||
}
|
||||
Reference in new issue
Block a user