User Tools

Site Tools


tutorial:keybinds

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tutorial:keybinds [2022/07/28 18:35] – [Responding to your Keybind] updated with 1.19 changes lightningtowtutorial:keybinds [2025/10/22 16:50] (current) – revert that codeblock cassiancc
Line 9: Line 9:
 Adding a key-bind is easy. You'll need to: Adding a key-bind is easy. You'll need to:
   * open or create a Client [[documentation:entrypoint]]   * open or create a Client [[documentation:entrypoint]]
 +  * create a Keybinding.Category object
   * create a KeyBinding object   * create a KeyBinding object
   * react to the key being pressed   * react to the key being pressed
  
  
-See [[https://github.com/FabricMC/fabric/blob/1.16/fabric-key-binding-api-v1/src/testmod/java/net/fabricmc/fabric/test/client/keybinding/KeyBindingsTest.java|here]] for an updated example.+See [[https://github.com/FabricMC/fabric/blob/1.21.10/fabric-key-binding-api-v1/src/testmodClient/java/net/fabricmc/fabric/test/client/keybinding/KeyBindingsTest.java|here]] for an updated example.
  
 ==== Preparing an Entrypoint ==== ==== Preparing an Entrypoint ====
Line 41: Line 42:
 ==== Creating your Keybind ==== ==== Creating your Keybind ====
  
-Declare one of these in an area of your preference:+Declare these in an area of your preference:
  
 <code java> <code java>
 private static KeyBinding keyBinding; private static KeyBinding keyBinding;
 +private static final KeyBinding.Category CATEGORY = KeyBinding.Category.create(Identifier.of("examplemod", "test"));
 </code> </code>
  
-FabricKeyBinding has a Builder for initialization. It takes in an Identifier, InputUtil.Type, key code, and binding category:+KeyBindingHelper has a Builder for initialization. It takes in an Identifier, InputUtil.Type, key code, and KeyBinding.Category:
  
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
Line 54: Line 56:
     InputUtil.Type.KEYSYM, // The type of the keybinding, KEYSYM for keyboard, MOUSE for mouse.     InputUtil.Type.KEYSYM, // The type of the keybinding, KEYSYM for keyboard, MOUSE for mouse.
     GLFW.GLFW_KEY_R, // The keycode of the key     GLFW.GLFW_KEY_R, // The keycode of the key
-    "category.examplemod.test" // The translation key of the keybinding's category.+    CATEGORY // The category of the key - you'll need to add a translation for this! 
 +    
 )); ));
 </code> </code>
  
-If you want a sticky key, add ''() -> true'' as last parameter.+On versions older than 1.21.9, you would substitute your Keybinding.Category for the translation key of the keybinding's category, e.g. "category.examplemod.test" 
 + 
 +Sticky keys can also be created with ''KeyBindingHelper''. In vanilla, the sneak and sprint keys act as sticky keys when they are set to 'Sneak: Toggle' and 'Sprint: Toggle' respectively. If a key binding should always act as a sticky key, then pass ''() -> true'' as the final parameter.
      
 ''GLFW.GLFW_KEY_R'' can be replaced with whatever key you want the binding to default to. The category is related to how the keybinding is grouped in the settings page. ''GLFW.GLFW_KEY_R'' can be replaced with whatever key you want the binding to default to. The category is related to how the keybinding is grouped in the settings page.
tutorial/keybinds.1659033332.txt.gz · Last modified: 2022/07/28 18:35 by lightningtow