diff --git a/src/main/scala/li/cil/oc/client/KeyBindings.scala b/src/main/scala/li/cil/oc/client/KeyBindings.scala index 154749ba8..cb938d823 100644 --- a/src/main/scala/li/cil/oc/client/KeyBindings.scala +++ b/src/main/scala/li/cil/oc/client/KeyBindings.scala @@ -1,21 +1,41 @@ package li.cil.oc.client +import li.cil.oc.OpenComputers import net.minecraft.client.settings.KeyBinding import net.minecraftforge.fml.client.FMLClientHandler import org.lwjgl.input.Keyboard +import org.lwjgl.input.Mouse object KeyBindings { - def showExtendedTooltips = Keyboard.isCreated && (try Keyboard.isKeyDown(extendedTooltip.getKeyCode) catch { - case _: Throwable => false // Don't ask me, sometimes things can apparently screw up LWJGL's keyboard handling. - }) + def showExtendedTooltips = isKeybindPressed(extendedTooltip) - def showMaterialCosts = Keyboard.isCreated && (try Keyboard.isKeyDown(materialCosts.getKeyCode) catch { - case _: Throwable => false // Don't ask me, sometimes things can apparently screw up LWJGL's keyboard handling. - }) + def showMaterialCosts = isKeybindPressed(materialCosts) + + def isPastingClipboard = isKeybindPressed(clipboardPaste) + + def getKeybindName(keyBinding: KeyBinding) = try { + if (keyBinding.getKeyCode < 0) + Mouse.getButtonName(keyBinding.getKeyCode + 100) + else + Keyboard.getKeyName(keyBinding.getKeyCode) + } + catch { + case _: Throwable => "???" + } + + def isKeybindPressed(keyBinding: KeyBinding) = try { + if (keyBinding.getKeyCode < 0) + Mouse.isCreated && Mouse.isButtonDown(keyBinding.getKeyCode + 100) + else + Keyboard.isCreated && Keyboard.isKeyDown(keyBinding.getKeyCode) + } + catch { + case _: Throwable => false + } def extendedTooltip = FMLClientHandler.instance.getClient.gameSettings.keyBindSneak - val materialCosts = new KeyBinding("key.materialCosts", Keyboard.KEY_LMENU, "OpenComputers") + val materialCosts = new KeyBinding("key.materialCosts", Keyboard.KEY_LMENU, OpenComputers.Name) - val clipboardPaste = new KeyBinding("key.clipboardPaste", Keyboard.KEY_INSERT, "OpenComputers") + val clipboardPaste = new KeyBinding("key.clipboardPaste", Keyboard.KEY_INSERT, OpenComputers.Name) } diff --git a/src/main/scala/li/cil/oc/client/gui/traits/InputBuffer.scala b/src/main/scala/li/cil/oc/client/gui/traits/InputBuffer.scala index f86a37cd7..f5ee0da1b 100644 --- a/src/main/scala/li/cil/oc/client/gui/traits/InputBuffer.scala +++ b/src/main/scala/li/cil/oc/client/gui/traits/InputBuffer.scala @@ -85,7 +85,7 @@ trait InputBuffer extends DisplayBuffer { case _ => // Wasn't pressed while viewing the screen. } - if (Keyboard.isKeyDown(KeyBindings.clipboardPaste.getKeyCode) && Keyboard.getEventKeyState) { + if (KeyBindings.clipboardPaste.getKeyCode == code && Keyboard.getEventKeyState) { buffer.clipboard(GuiScreen.getClipboardString, null) } } @@ -97,7 +97,9 @@ trait InputBuffer extends DisplayBuffer { override protected def mouseClicked(x: Int, y: Int, button: Int) { super.mouseClicked(x, y, button) - if (buffer != null && button == 2) { + val isMiddleMouseButton = button == 2 + val isBoundMouseButton = KeyBindings.clipboardPaste.getKeyCode < 0 && button == KeyBindings.clipboardPaste.getKeyCode + 100 + if (buffer != null && (isMiddleMouseButton || isBoundMouseButton)) { if (hasKeyboard) { buffer.clipboard(GuiScreen.getClipboardString, null) } diff --git a/src/main/scala/li/cil/oc/common/block/Item.scala b/src/main/scala/li/cil/oc/common/block/Item.scala index 37dbc44ef..81234b0bb 100644 --- a/src/main/scala/li/cil/oc/common/block/Item.scala +++ b/src/main/scala/li/cil/oc/common/block/Item.scala @@ -22,7 +22,6 @@ import net.minecraft.util.BlockPos import net.minecraft.util.EnumFacing import net.minecraft.util.StatCollector import net.minecraft.world.World -import org.lwjgl.input class Item(value: Block) extends ItemBlock(value) { setHasSubtypes(true) @@ -48,13 +47,13 @@ class Item(value: Block) extends ItemBlock(value) { case (simple: SimpleBlock, lines: util.List[String]@unchecked) => simple.addInformation(getMetadata(stack.getItemDamage), stack, player, lines, advanced) - if (input.Keyboard.isKeyDown(input.Keyboard.KEY_LMENU)) { + if (KeyBindings.showMaterialCosts) { ItemCosts.addTooltip(stack, lines) } else { lines.add(StatCollector.translateToLocalFormatted( Settings.namespace + "tooltip.MaterialCosts", - input.Keyboard.getKeyName(KeyBindings.materialCosts.getKeyCode))) + KeyBindings.getKeybindName(KeyBindings.materialCosts))) } case _ => } diff --git a/src/main/scala/li/cil/oc/common/item/Delegate.scala b/src/main/scala/li/cil/oc/common/item/Delegate.scala index 0d5dcbc72..2675300a1 100644 --- a/src/main/scala/li/cil/oc/common/item/Delegate.scala +++ b/src/main/scala/li/cil/oc/common/item/Delegate.scala @@ -18,7 +18,6 @@ import net.minecraft.util.EnumFacing import net.minecraft.world.World import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly -import org.lwjgl.input trait Delegate { def parent: Delegator @@ -93,7 +92,7 @@ trait Delegate { else { tooltip.add(Localization.localizeImmediately( Settings.namespace + "tooltip.MaterialCosts", - input.Keyboard.getKeyName(KeyBindings.materialCosts.getKeyCode))) + KeyBindings.getKeybindName(KeyBindings.materialCosts))) } } if (stack.hasTagCompound && stack.getTagCompound.hasKey(Settings.namespace + "data")) { diff --git a/src/main/scala/li/cil/oc/common/item/SimpleItem.scala b/src/main/scala/li/cil/oc/common/item/SimpleItem.scala index 73d70b515..d658aa899 100644 --- a/src/main/scala/li/cil/oc/common/item/SimpleItem.scala +++ b/src/main/scala/li/cil/oc/common/item/SimpleItem.scala @@ -19,7 +19,6 @@ import net.minecraft.world.World import net.minecraftforge.common.ChestGenHooks import net.minecraftforge.fml.relauncher.Side import net.minecraftforge.fml.relauncher.SideOnly -import org.lwjgl.input class SimpleItem extends Item { setCreativeTab(CreativeTab) @@ -50,7 +49,7 @@ class SimpleItem extends Item { else { tt.add(Localization.localizeImmediately( Settings.namespace + "tooltip.MaterialCosts", - input.Keyboard.getKeyName(KeyBindings.materialCosts.getKeyCode))) + KeyBindings.getKeybindName(KeyBindings.materialCosts))) } } if (stack.hasTagCompound && stack.getTagCompound.hasKey(Settings.namespace + "data")) { diff --git a/src/main/scala/li/cil/oc/util/Tooltip.scala b/src/main/scala/li/cil/oc/util/Tooltip.scala index 75195910a..b8cd79865 100644 --- a/src/main/scala/li/cil/oc/util/Tooltip.scala +++ b/src/main/scala/li/cil/oc/util/Tooltip.scala @@ -4,7 +4,6 @@ import li.cil.oc.Localization import li.cil.oc.Settings import li.cil.oc.client.KeyBindings import net.minecraft.client.Minecraft -import org.lwjgl.input.Keyboard import scala.collection.convert.WrapAsJava._ import scala.collection.convert.WrapAsScala._ @@ -22,7 +21,7 @@ object Tooltip { val shouldShorten = (isSubTooltip || font.getStringWidth(tooltip) > maxWidth) && !KeyBindings.showExtendedTooltips if (shouldShorten) { if (isSubTooltip) Seq.empty[String] - else Seq(Localization.localizeImmediately("tooltip.TooLong", Keyboard.getKeyName(KeyBindings.extendedTooltip.getKeyCode))) + else Seq(Localization.localizeImmediately("tooltip.TooLong", KeyBindings.getKeybindName(KeyBindings.extendedTooltip))) } else tooltip. lines.