after 5 months of use


A little less than a year ago I discovered such a thing as tile window managers. To put it roughly, this is a version of the graphical shell that involves controlling the PC primarily using the keyboard. I decided to try bspwm. It turned out to be very convenient. The speed and ease of working with a computer have increased significantly.

It looks something like this:

I began to prefer console applications to GUI ones, I began to write a lot in vime. At the same time, I still typed incorrectly – I didn’t look at the keyboard, but I literally typed with two or three fingers. I finally decided to improve, but all the exercises on the corresponding sites were in vain – as soon as I started typing outside the simulator, my fingers forgot everything and worked in the old fashioned way.

This state of affairs did not suit me, and at some point I came across a video about split keyboards.

I immediately got excited about the idea of ​​buying – it’s good for your posture (or rather, it doesn’t harm), you type quickly, you can put a refill between the halves, very flexible settings (to the point that, for example, when you quickly press escape twice, an open browser tab is closed), finally I will type with 10 fingers

Split keyboard

Split keyboard

If someone has a question: ‘where … (substitute the name of the necessary key)’ – in order to press … you will have to press the conditional FN, located under your thumb, and … (substitute the name of the convenient key).

Search and purchase

It turned out that this pleasure is not the cheapest (because it is not the most common): you will have to pay at least 12000₽

In 90% of cases you will have to assemble the keyboard yourself, but there is nothing particularly difficult about it. The “components” will typically be:

  • Boards (you can say the basis into which we will plug switches and controllers)

  • Controllers (the brains of the keyboard)

  • Switches (“buttons”)

  • Keycaps (“covers for buttons”)

  • Frame

  • Screens, encoders, etc. and so on. (optional)

Controller, screen, switch, keycap, board in acrylic case

I had (and you, most likely, too) only two purchasing options: order from Aliexpress or buy secondhand. I didn’t want to wait long, so I first looked through Avito, then found chat on the topic of split keyboards, there is also a flea market.

I wanted a format keyboard Sofle, wireless A person answered my request: he had Sofl in an acrylic case along with wired and wireless controllers – that’s what I needed!

I have a keyboard

And so, I received it, inserted switches, keycaps, plugged it into the laptop – beauty:

However, you will have to say goodbye to the backlight – you need to get rid of the wires, and the backlight requires a lot of current. I took wireless controllers, soldered 100 mAh batteries to them, plugged them into the sockets. Now I had to choose the firmware (one of two): bluemicro or zmk. I had no luck assembling bluemicro, so I chose what was left.

I did everything according to the documentation:

  1. Clone their repository

  2. I adjusted the config for myself

  3. I pushed it, waited and downloaded the firmware file from the actions tab.

    Separately for the left and right halves:

  4. Connected the half, pressed the reset button

  5. Transferred files to the controller

Ready! Started using it.

This is what the configs look like:
 * Copyright (c) 2020 The ZMK Contributors
 * SPDX-License-Identifier: MIT

#include <behaviors.dtsi>
#include <dt-bindings/zmk/keys.h>
#include <dt-bindings/zmk/ext_power.h>
#include <dt-bindings/zmk/bt.h>

/ {
    keymap {
        compatible = "zmk,keymap";

        default_layer {
// ------------------------------------------------------------------------------------------------------------
// |  `    |  1  |  2  |  3   |  4   |  5   |                   |  6   |  7    |  8    |  9   |   0   |     -  |
// |  ESC  |  Q  |  W  |  E   |  R   |  T   |                   |  Y   |  U    |  I    |  O   |   P   | BKSPC |
// |  TAB  |  A  |  S  |  D   |  F   |  G   |                   |  H   |  J    |  K    |  L   |   ;   |   '   |
// | SHIFT |  Z  |  X  |  C   |  V   |  B   |  MUTE  |  |       |  N   |  M    |  ,    |  .   |   /   | SHIFT |
//               | GUI | ALT  | CTRL | LOWER|  ENTER |  | SPACE | RAISE| CTRL  | ALT   | GUI  |
            bindings = <
&kp GRAVE &kp N1 &kp N2   &kp N3   &kp N4    &kp N5                      &kp N6 &kp N7    &kp N8    &kp N9   &kp N0   &kp MINUS
&kp ESC   &kp Q  &kp W    &kp E    &kp R     &kp T                       &kp Y  &kp U     &kp I     &kp O    &kp P    &kp BSPC
&kp TAB   &kp A  &kp S    &kp D    &kp F     &kp G                       &kp H  &kp J     &kp K     &kp L    &kp SEMI &kp SQT
&kp LSHFT &kp Z  &kp X    &kp C    &kp V     &kp B  &kp C_MUTE &none     &kp N  &kp M     &kp COMMA &kp DOT  &kp FSLH &kp RSHFT
                 &kp LGUI &kp LALT &kp LCTRL &mo 1  &kp RET    &kp SPACE &mo 2  &kp RCTRL &kp RALT  &kp RGUI

            sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>;

        lower_layer {
// TODO: Some binds are waiting for shifted keycode support.
// ------------------------------------------------------------------------------------------------------------
// |       |  F1 |  F2 |  F3  |  F4  |  F5  |                   |  F6  |  F7   |  F8   |  F9  |  F10  |  F11  |
// | `     |   1 |   2 |   3  |   4  |   5  |                   |   6  |   7   |   8   |   9  |    0  |  F12  |
// |       |  !  |  @  |  #   |  $   |  %   |                   |  ^   |  &    |  *    |  (   |   )   |   |   |
// |       |  =  |  -  |  +   |  {   |  }   |        |  |       |  [   |  ]    |  ;    |  :   |   \   |       |
//               |     |      |      |      |        |  |       |      |       |       |      |
            bindings = <
&trans    &kp F1    &kp F2    &kp F3      &kp F4    &kp F5                    &kp F6    &kp F7   &kp F8          &kp F9    &kp F10   &kp F11
&kp GRAVE &kp N1    &kp N2    &kp N3      &kp N4    &kp N5                    &kp N6    &kp N7   &kp N8          &kp N9    &kp N0    &kp F12 &trans    &kp EXCL  &kp AT    &kp HASH    &kp DLLR  &kp PRCNT                 &kp CARET &kp AMPS &kp KP_MULTIPLY &kp LPAR  &kp RPAR  &kp PIPE &trans    &kp EQUAL &kp MINUS &kp KP_PLUS &kp LBRC  &kp RBRC  &trans   &trans &kp LBKT  &kp RBKT &kp SEMI        &kp COLON &kp BSLH  &trans &trans    &trans      &trans    &trans    &trans   &trans &trans    &trans   &trans          &trans

            sensor-bindings = <&inc_dec_kp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN>;

        raise_layer {
// ------------------------------------------------------------------------------------------------------------
// |BTCLR| BT1  | BT2  |  BT3  |  BT4  |  BT5 |                |      |      |       |      |       |       |
// |     | INS  | PSCR | GUI   |       |      |                | PGUP |      |   ^   |      |       |       |
// |     | ALT  | CTRL | SHIFT |       | CAPS |                | PGDN |   <- |   v   |  ->  |  DEL  | BKSPC |
// |     | UNDO | CUT  | COPY  | PASTE |      |      |  |      |      |      |       |      |       |       |
//              |      |       |       |      |      |  |      |      |      |       |      |
            bindings = <
&bt BT_CLR &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4             &ext_power EP_OFF    &trans    &trans   &trans    &trans  &trans
&trans     &kp INS      &kp PSCRN    &kp K_CMENU  &trans       &trans                   &trans  &trans    &trans    &trans    &kp N0  &trans
&trans     &kp LALT     &kp LCTRL    &kp LSHFT    &trans       &kp CLCK                 &kp LEFT &kp DOWN  &kp UP &kp RIGHT &kp DEL &kp BSPC
&trans     &kp K_UNDO   &kp K_CUT    &kp K_COPY   &kp K_PASTE  &trans  &trans   &trans  &trans    &trans    &trans   &trans    &trans  &trans
&trans     &kp INS      &kp PSCRN    &kp K_CMENU  &trans       &trans                   &trans  &trans    &kp UP   &trans    &kp N0  &trans

            sensor-bindings = <&inc_dec_kp PG_UP PG_DN &inc_dec_kp PG_UP PG_DN>;
# Copyright (c) 2020 Ryan Cross
# SPDX-License-Identifier: MIT

# Uncomment the following line to enable the Sofle OLED Display
# Uncomment these two lines to add support for encoders


Started to pass training apparatus. How can I say… The difficulty was not that the keyboard was divided into two parts, but that the keys were exactly under each other (without a slight shift to the side, as on conventional keyboards). In the first hours, my WPM (words per minute) was about 20-30, which is a multiple less than before. But remembering how much money I paid for this pleasure, I gradually increased it, going through the levels of the simulator again and again.

And then I ran into the first problem: some keys are pressed (from the keyboard’s point of view) several times per press, or are not pressed. I started looking for the problem. Everything turned out to be very simple: it was covered in flux that had not been washed off from one of the boards… After this incident, I began to take flux washing off much more seriously.

After two or three days, my WPM was already at 50, which couldn’t help but rejoice.

But I encountered a new problem: the keyboard shrinks in a couple of hours, although it should last a couple of weeks. It turns out that the controller was supplying current to the switched off backlight. Added a line to the config:


And hurray! The autonomy of my left half (which sits down much faster than the right, because the left is connected to the right, and the right is also connected to the PC) is about two weeks.

Time goes by

After just a week of active clicking on monkeytype my WPM is higher than before.

At the moment the statistics look like this:

Now my WPM is ~90-100. I stopped raising it a long time ago – I think that this speed is enough for me.

By the way, at first it was difficult to switch back (and sometimes you have to) to a regular keyboard, but I found a solution: on a regular keyboard I write as before, with two to four fingers, and everything works out

Bottom line

Over the past time, I have never regretted my purchase.

The only small drawback for me is that when carrying the keyboard in a backpack, switches may fall out of it.

Highly recommend for those who type a lot!

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *