Yowkees / keyball

keyball is split keyboard has 100% track ball
GNU General Public License v3.0
478 stars 331 forks source link

Support for QMK Layouts #540

Open sohrab- opened 3 months ago

sohrab- commented 3 months ago

As you may know, QMK supports layouts, which allows for the same layout to be applied to multiple keyboards, without the need to configure each keyboard x keymap individually.

Looking at the default layouts, for example, we can in theory apply LAYOUT_split_3x5_3 to Keyball39.

Having this feature would unlock many of the existing keymapping for keyball keyboards.

I am going to have a look at this myself (although I don't have much QMK knowledge yet) but I thought I would also raise it as an issue if someone has already done the work or wants to collaborate.

koron commented 3 months ago

unlock many of the existing keymapping for keyball keyboards

I believe that Keyball loses most of its value without KC_BTN{n} and unique key codes in the keymap. So I don't understand the benefit of being able to use keymaps from other keyboards.

If you know of a specific example of another keyboard keymap that would be meaningful to use with Keyball, please let me know.

sohrab- commented 3 months ago

I originally wanted this for Miryoku but I ended up doing that one by adding a new keymap myself.

Here is my keyball39/keymaps/manna-harbour_miryoku/config.h for reference:

#pragma once

#define XXX KC_NO

#define LAYOUT_miryoku( \
K00,   K01,   K02,   K03,   K04,          K05,   K06,   K07,   K08,   K09, \
K10,   K11,   K12,   K13,   K14,          K15,   K16,   K17,   K18,   K19, \
K20,   K21,   K22,   K23,   K24,          K25,   K26,   K27,   K28,   K29, \
N30,   N31,   K32,   K33,   K34,          K35,   K36,   K37,   N38,   N39 \
) \
LAYOUT( \
K00,   K01,   K02,   K03,   K04,          K05,   K06,   K07,   K08,   K09, \
K10,   K11,   K12,   K13,   K14,          K15,   K16,   K17,   K18,   K19, \
K20,   K21,   K22,   K23,   K24,          K25,   K26,   K27,   K28,   K29, \
XXX,   XXX,   XXX,   K32,   K33,   K34,   K35,   K36,   XXX \
)

(Requires #define LAYER_STATE_32BIT.)