Add chat peeking keybinding

This commit is contained in:
nea
2023-09-04 16:28:00 +02:00
parent c912ee90d3
commit 19231489ad
3 changed files with 30 additions and 9 deletions

View File

@@ -6,11 +6,11 @@
package moe.nea.firmament.keybindings
import org.lwjgl.glfw.GLFW
import kotlinx.serialization.Serializable
import moe.nea.firmament.util.MC
import net.minecraft.client.MinecraftClient
import net.minecraft.client.util.InputUtil
import moe.nea.firmament.util.MC
import org.lwjgl.glfw.GLFW
@Serializable
data class SavedKeyBinding(
@@ -38,24 +38,28 @@ data class SavedKeyBinding(
}
}
fun isPressed(): Boolean {
fun isPressed(atLeast: Boolean = false): Boolean {
if (this.keyCode == GLFW.GLFW_KEY_UNKNOWN) return false
val h = MC.window.handle
if (!InputUtil.isKeyPressed(h, keyCode)) return false
val ctrl = if (MinecraftClient.IS_SYSTEM_MAC) {
InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_LEFT_SUPER)
|| InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_RIGHT_SUPER)
|| InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_RIGHT_SUPER)
} else InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_LEFT_CONTROL)
|| InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_RIGHT_CONTROL)
|| InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_RIGHT_CONTROL)
val shift = InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_LEFT_SHIFT)
|| InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_RIGHT_SHIFT)
|| InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_RIGHT_SHIFT)
val alt = InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_LEFT_ALT)
|| InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_RIGHT_ALT)
|| InputUtil.isKeyPressed(h, GLFW.GLFW_KEY_RIGHT_ALT)
if (atLeast)
return (ctrl >= this.ctrl) &&
(alt >= this.alt) &&
(shift >= this.shift)
return (ctrl == this.ctrl) &&
(alt == this.alt) &&
(shift == this.shift)
(alt == this.alt) &&
(shift == this.shift)
}
override fun matches(keyCode: Int, scanCode: Int, modifiers: Int): Boolean {