1 package com.irtimaled.bbor.client.keyboard;
3 import net.minecraft.client.util.InputUtil;
5 import java.util.HashSet;
10 private KeyHandler onKeyPress;
11 private final Set<Key> subKeys = new HashSet<>();
12 private boolean triggeredSincePress;
15 this.keyCode = keyCode;
18 public Key onKeyPressHandler(KeyHandler onKeyPress) {
19 this.onKeyPress = onKeyPress;
23 void updateKeyCode(int keyCode) {
24 this.keyCode = keyCode;
27 private int pressDuration = 0;
29 private void runHandler(KeyHandler onKeyPress) {
30 triggeredSincePress = true;
34 private void press() {
35 for (Key subKey : subKeys) {
36 subKey.triggeredSincePress = false;
38 triggeredSincePress = false;
42 private void release() {
44 for (Key subKey : subKeys) {
45 if (subKey.pressDuration > 0) {
49 if (subKey.triggeredSincePress) {
53 if (onKeyPress != null && pressDuration > 0) {
54 runHandler(onKeyPress);
61 boolean handleKeyEvent(int keyCode, boolean isPressed) {
62 if (this.keyCode == keyCode) {
69 } else if (this.pressDuration > 0) {
70 for (Key subKey : subKeys) {
71 if (subKey.handleKeyEvent(keyCode, isPressed)) {
80 public Key register(String keyName) {
81 InputUtil.Key input = InputUtil.fromTranslationKey(keyName);
82 Key key = new Key(input.getCode());