# Buttons, Colors and Keybinds

## Buttons

### Common button

The button is a simple interaction that can trigger code when pressed. It's got both single and dual-column variants.

You can create your method to run when the button is pressed using the Runnable interface:

```java
@Button(
    name = "I'm a button",    // name beside the button
    text = "Click me!"        // text on the button itself
)
Runnable runnable = () -> {    // using a lambda to create the runnable interface.
    System.out.println("I was clicked!");
    FMLCommonHandler.instance().exitJava(69, false);
}
```

![Buttons with single and dual variant examples](/files/Gr0uEBeL2bsh22C4gAmm)

### Keybinds

OneConfig also offers keybinds that replace Minecraft's own keybind system. Basically, it's handled and stored by OneConfig, not the game. It's got both single and dual-column variants.

{% hint style="success" %}
This config component uses OneKeyBind to store the keybinds.
{% endhint %}

```java
@KeyBind(
    name = "I'm a keybind!"
)
// using OneKeyBind to set the default key combo to Shift+S
public static OneKeyBind keyBind = new OneKeyBind(UKeyboard.KEY_LSHIFT, UKeyboard.KEY_S);
```

To register an action when a keybind is activated, add the following to your constructor:

```java
public Config() {
    registerKeyBind(keyBind, () -> System.out.println("Look mom, a keybind!"));
}
```

![Keybind field examples, including recording state](/files/tj2WemYc74b0mdlxGfsv)

## Colors

The color option lets the user change any default color to their own, using a built-in color picker.

{% hint style="success" %}
This config component uses [OneColor](/oneconfig/utils/onecolor.md) to store the colors.
{% endhint %}

```java
@Color(
    name = "Background Color"
)
OneColor testColor = new OneColor(26, 35, 143);        // default color
```

![Color examples, single and dual column](/files/gPXAdnXadic36fNw8MCn)

![Color selector GUI examples](/files/oe6rv9bAdtMApEPAXvt9)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.polyfrost.org/oneconfig/config/adding-options/buttons-colors-and-keybinds.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
