How to setup Stack Overflow keyboard

Stack overflow the key macropad

Laster inn bilde
Stack Overflow the key macropad

Stack Overflow The Key Macropad, how to program the buttons and macro. This blog post is an addition to the official instruction for setting up and programming Stack Overflow The Key Macropad.

I do not often write in English. I make an exception since I am going to write about a product that is sold internationally and how to make it work. First you need to familiarize yourself with the official instructions. What I will tell in this blog post is an addition to the official how to.

At the time of writing, the official instructions are very general and aimed at those who are familiar with programming their own keyboards. For those of us who encounter this world for the first time, the official instructions for use may be a little too short.

There are many other ways to do it, but what I will present here is what I found out after trying and failing several times after following the official intructions.

After programming the keys for the first time, I did the following steps to program the functions.

Copy and paste

These are the two easiest keys to program.

Select the second key in the overview of keys.

Laster inn bilde
Screenshot of buttons
These keys in the editor represent the keyboard

Go to the Keymap tab. Press the key in the selector. Then to the FN tab and select LGUI() (for Mac) or LCTL() (for Windows). The next button is C. Then select the Primary tab and then the C key.

The result should look like this:

Laster inn bilde
The setup for C key
Screenshot of the setup for the copy key

Repeat the steps for the V key.

The Stack Overflow key

The next step is to create a macro for the key with the Stack Overflow logo. In my case, it opens a new tab in the browser, fills in the URL of Stack Overflow and presses enter.

The first step is to create the macro before we let the key execute the macro.

Macro

Go to the Macro tab. Here you have two choices, one is to add every single step manually, or to record keystrokes. I found recording a bit problematic since I had to open a new tab. So I went the long way by manually adding every single keystroke. I can only blame that it is a pandemic and that I have a little extra time to spare.

To add a keystroke press Add Action, then select type of action and keystroke.

Tip: To hold down a key while pressing a new one (eg Cmd + T or CTRL + T), select the action type Press before the next key to be pressed. Then remember to add the action type Release to release the key again. See screenshot below:

Laster inn bilde
Screenshot of macro
These are the first actions in my macro

Add macro to button

The last step is to let the button with the Stack Overflow logo execute the macro we just created. Since you have already programmed the other two keys, you are now familiar with how to set a function to a key.

Select the first key in the overview at the top of the three keys. Go to the Keymap tab and on to the Other tab. Then select M(). If you have not created more macros then select macro 0.

JSON

This is my JSON-file if you want to make a shortcut and import it.

{
    "version": 1,
    "keyboard": {
        "keys": [
            {
                "id": 0,
                "legend": "",
                "state": {
                    "x": 0,
                    "y": 0,
                    "r": 0,
                    "rx": 0,
                    "ry": 0,
                    "w": 1,
                    "h": 1,
                    "x2": 0,
                    "y2": 0,
                    "w2": 0,
                    "h2": 0,
                    "a": 7
                },
                "row": 0,
                "col": 0,
                "keycodes": [
                    {
                        "id": "M()",
                        "fields": [
                            0
                        ]
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    }
                ]
            },
            {
                "id": 1,
                "legend": "",
                "state": {
                    "x": 1,
                    "y": 0,
                    "r": 0,
                    "rx": 0,
                    "ry": 0,
                    "w": 1,
                    "h": 1,
                    "x2": 0,
                    "y2": 0,
                    "w2": 0,
                    "h2": 0,
                    "a": 7
                },
                "row": 0,
                "col": 1,
                "keycodes": [
                    {
                        "id": "LGUI()",
                        "fields": [
                            {
                                "id": "KC_C",
                                "fields": []
                            }
                        ]
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    }
                ]
            },
            {
                "id": 2,
                "legend": "",
                "state": {
                    "x": 2,
                    "y": 0,
                    "r": 0,
                    "rx": 0,
                    "ry": 0,
                    "w": 1,
                    "h": 1,
                    "x2": 0,
                    "y2": 0,
                    "w2": 0,
                    "h2": 0,
                    "a": 7
                },
                "row": 0,
                "col": 2,
                "keycodes": [
                    {
                        "id": "LGUI()",
                        "fields": [
                            {
                                "id": "KC_V",
                                "fields": []
                            }
                        ]
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    },
                    {
                        "id": "KC_TRNS",
                        "fields": []
                    }
                ]
            }
        ],
        "controller": 1,
        "bounds": {
            "min": {
                "x": 0,
                "y": 0
            },
            "max": {
                "x": 3,
                "y": 1
            }
        },
        "rows": 1,
        "cols": 3,
        "pins": {
            "row": [
                "D4"
            ],
            "col": [
                "D2",
                "D1",
                "D0"
            ],
            "num": null,
            "caps": null,
            "scroll": null,
            "compose": null,
            "kana": null,
            "led": "B6",
            "rgb": "B1"
        },
        "macros": {
            "0": [
                {
                    "action": 2,
                    "argument": "KC_LGUI"
                },
                {
                    "action": 2,
                    "argument": "KC_T"
                },
                {
                    "action": 3,
                    "argument": "KC_LGUI"
                },
                {
                    "action": 3,
                    "argument": "KC_T"
                },
                {
                    "action": 4,
                    "argument": "KC_S"
                },
                {
                    "action": 4,
                    "argument": "KC_T"
                },
                {
                    "action": 4,
                    "argument": "KC_A"
                },
                {
                    "action": 4,
                    "argument": "KC_C"
                },
                {
                    "action": 4,
                    "argument": "KC_K"
                },
                {
                    "action": 4,
                    "argument": "KC_O"
                },
                {
                    "action": 4,
                    "argument": "KC_V"
                },
                {
                    "action": 4,
                    "argument": "KC_E"
                },
                {
                    "action": 4,
                    "argument": "KC_R"
                },
                {
                    "action": 4,
                    "argument": "KC_F"
                },
                {
                    "action": 4,
                    "argument": "KC_L"
                },
                {
                    "action": 4,
                    "argument": "KC_O"
                },
                {
                    "action": 4,
                    "argument": "KC_W"
                },
                {
                    "action": 4,
                    "argument": "KC_DOT"
                },
                {
                    "action": 4,
                    "argument": "KC_C"
                },
                {
                    "action": 4,
                    "argument": "KC_O"
                },
                {
                    "action": 4,
                    "argument": "KC_M"
                },
                {
                    "action": 2,
                    "argument": "KC_ENT"
                },
                {
                    "action": 3,
                    "argument": "KC_ENT"
                }
            ]
        },
        "quantum": "void matrix_init_user(void) {\n}\n\nvoid matrix_scan_user(void) {\n}\n\nbool process_record_user(uint16_t keycode, keyrecord_t *record) {\n\treturn true;\n}",
        "settings": {
            "diodeDirection": 1,
            "name": "3 KEY-Stackoverflow",
            "bootloaderSize": 2,
            "rgbNum": 2,
            "backlightLevels": 3
        }
    }
}

Get the Stack Overflow The Key Macropad at Drop.com

Helge Johnsen

Dette er mitt private nettsted. Jeg jobber til daglig som seniorutvikler i et av Norges større konsulentbyråder. I denne bloggen skriver jeg om store og små ting som rører seg i min private verden. Bloggen består stort sett av tips, egne prosjekter og tanker. Les mer om meg her.

Har du noen tanker eller kommentarer om dette blogginnlegget så finner du meg på en rekke sosiale medier.