Add modifiers

This commit is contained in:
Johannes Marbach 2021-09-13 14:24:25 +02:00
parent 5f10b71d79
commit f578456d47
5 changed files with 74 additions and 6 deletions

View file

@ -31,6 +31,12 @@ static const lv_btnmatrix_ctrl_t attributes_lower_terminal_us[] = { \
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
};
static const int num_modifiers_lower_terminal_us = 2;
static const int modifier_idxs_lower_terminal_us[] = { \
0, 1 \
};
static const int num_switchers_lower_terminal_us = 2;
static const int switcher_idxs_lower_terminal_us[] = { \
@ -87,6 +93,12 @@ static const lv_btnmatrix_ctrl_t attributes_upper_terminal_us[] = { \
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
};
static const int num_modifiers_upper_terminal_us = 2;
static const int modifier_idxs_upper_terminal_us[] = { \
0, 1 \
};
static const int num_switchers_upper_terminal_us = 2;
static const int switcher_idxs_upper_terminal_us[] = { \
@ -143,6 +155,12 @@ static const lv_btnmatrix_ctrl_t attributes_numbers_terminal_us[] = { \
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
};
static const int num_modifiers_numbers_terminal_us = 2;
static const int modifier_idxs_numbers_terminal_us[] = { \
0, 1 \
};
static const int num_switchers_numbers_terminal_us = 1;
static const int switcher_idxs_numbers_terminal_us[] = { \
@ -188,6 +206,8 @@ static const sq2lv_layer_t layers_terminal_us[] = {
.num_keys = num_keys_lower_terminal_us,
.keycaps = keycaps_lower_terminal_us,
.attributes = attributes_lower_terminal_us,
.num_modifiers = num_modifiers_lower_terminal_us,
.modifier_idxs = modifier_idxs_lower_terminal_us,
.num_switchers = num_switchers_lower_terminal_us,
.switcher_idxs = switcher_idxs_lower_terminal_us,
.switcher_dests = switcher_dests_lower_terminal_us,
@ -200,6 +220,8 @@ static const sq2lv_layer_t layers_terminal_us[] = {
.num_keys = num_keys_upper_terminal_us,
.keycaps = keycaps_upper_terminal_us,
.attributes = attributes_upper_terminal_us,
.num_modifiers = num_modifiers_upper_terminal_us,
.modifier_idxs = modifier_idxs_upper_terminal_us,
.num_switchers = num_switchers_upper_terminal_us,
.switcher_idxs = switcher_idxs_upper_terminal_us,
.switcher_dests = switcher_dests_upper_terminal_us,
@ -212,6 +234,8 @@ static const sq2lv_layer_t layers_terminal_us[] = {
.num_keys = num_keys_numbers_terminal_us,
.keycaps = keycaps_numbers_terminal_us,
.attributes = attributes_numbers_terminal_us,
.num_modifiers = num_modifiers_numbers_terminal_us,
.modifier_idxs = modifier_idxs_numbers_terminal_us,
.num_switchers = num_switchers_numbers_terminal_us,
.switcher_idxs = switcher_idxs_numbers_terminal_us,
.switcher_dests = switcher_dests_numbers_terminal_us,

View file

@ -20,6 +20,10 @@ typedef struct {
const char ** const keycaps;
/* Button matrix attributes */
const lv_btnmatrix_ctrl_t * const attributes;
/* Number of modifier keys */
const int num_modifiers;
/* Button indexes of modifier keys */
const int * const modifier_idxs;
/* Number of buttons that trigger a layer switch */
const int num_switchers;
/* Button indexes that trigger a layer switch */

View file

@ -28,6 +28,12 @@ static const lv_btnmatrix_ctrl_t attributes_lower_us[] = { \
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
};
static const int num_modifiers_lower_us = 0;
static const int modifier_idxs_lower_us[] = { \
\
};
static const int num_switchers_lower_us = 2;
static const int switcher_idxs_lower_us[] = { \
@ -56,6 +62,12 @@ static const lv_btnmatrix_ctrl_t attributes_upper_us[] = { \
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
};
static const int num_modifiers_upper_us = 0;
static const int modifier_idxs_upper_us[] = { \
\
};
static const int num_switchers_upper_us = 2;
static const int switcher_idxs_upper_us[] = { \
@ -84,6 +96,12 @@ static const lv_btnmatrix_ctrl_t attributes_numbers_us[] = { \
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
};
static const int num_modifiers_numbers_us = 0;
static const int modifier_idxs_numbers_us[] = { \
\
};
static const int num_switchers_numbers_us = 1;
static const int switcher_idxs_numbers_us[] = { \
@ -103,6 +121,8 @@ static const sq2lv_layer_t layers_us[] = {
.num_keys = num_keys_lower_us,
.keycaps = keycaps_lower_us,
.attributes = attributes_lower_us,
.num_modifiers = num_modifiers_lower_us,
.modifier_idxs = modifier_idxs_lower_us,
.num_switchers = num_switchers_lower_us,
.switcher_idxs = switcher_idxs_lower_us,
.switcher_dests = switcher_dests_lower_us
@ -111,6 +131,8 @@ static const sq2lv_layer_t layers_us[] = {
.num_keys = num_keys_upper_us,
.keycaps = keycaps_upper_us,
.attributes = attributes_upper_us,
.num_modifiers = num_modifiers_upper_us,
.modifier_idxs = modifier_idxs_upper_us,
.num_switchers = num_switchers_upper_us,
.switcher_idxs = switcher_idxs_upper_us,
.switcher_dests = switcher_dests_upper_us
@ -119,6 +141,8 @@ static const sq2lv_layer_t layers_us[] = {
.num_keys = num_keys_numbers_us,
.keycaps = keycaps_numbers_us,
.attributes = attributes_numbers_us,
.num_modifiers = num_modifiers_numbers_us,
.modifier_idxs = modifier_idxs_numbers_us,
.num_switchers = num_switchers_numbers_us,
.switcher_idxs = switcher_idxs_numbers_us,
.switcher_dests = switcher_dests_numbers_us

View file

@ -20,6 +20,10 @@ typedef struct {
const char ** const keycaps;
/* Button matrix attributes */
const lv_btnmatrix_ctrl_t * const attributes;
/* Number of modifier keys */
const int num_modifiers;
/* Button indexes of modifier keys */
const int * const modifier_idxs;
/* Number of buttons that trigger a layer switch */
const int num_switchers;
/* Button indexes that trigger a layer switch */

View file

@ -478,9 +478,9 @@ def keycap_to_scancodes(keycap):
return scancodes_for_keycap[keycap]
def get_keycaps_attrs_switchers_scancodes(args, layout_id, view_id, data_views, data_buttons):
"""Return keycaps, LVGL button attributes, layer switching key indexes, layer switching key
destinations and scancodes for a view
def get_keycaps_attrs_modifiers_switchers_scancodes(args, layout_id, view_id, data_views, data_buttons):
"""Return keycaps, LVGL button attributes, modifier key indexes, layer switching key indexes,
layer switching key destinations and scancodes for a view
args -- Commandline arguments
layout_id -- ID of the layout
@ -490,6 +490,7 @@ def get_keycaps_attrs_switchers_scancodes(args, layout_id, view_id, data_views,
"""
keycaps = []
attrs = []
modifier_idxs = []
switcher_idxs = []
switcher_dests = []
scancodes = []
@ -522,6 +523,9 @@ def get_keycaps_attrs_switchers_scancodes(args, layout_id, view_id, data_views,
keycaps_in_row.append(keycap_to_c_value(keycap))
attrs_in_row.append(key_to_attributes(key, data_buttons))
if key in data_buttons and 'modifier' in data_buttons[key]:
modifier_idxs.append(idx)
if key in data_buttons and 'action' in data_buttons[key]:
action = data_buttons[key]['action']
dest = None
@ -546,7 +550,7 @@ def get_keycaps_attrs_switchers_scancodes(args, layout_id, view_id, data_views,
attrs.append(attrs_in_row)
scancodes.append(scancodes_in_row)
return keycaps, attrs, switcher_idxs, switcher_dests, scancodes
return keycaps, attrs, modifier_idxs, switcher_idxs, switcher_dests, scancodes
def flatten_scancodes(scancodes):
@ -635,7 +639,7 @@ if __name__ == '__main__':
c_builder.add_subsection_comment(f'Layer: {layer_name} - generated from {view_id}')
c_builder.add_line()
keycaps, attrs, switcher_idxs, switcher_dests, scancodes = get_keycaps_attrs_switchers_scancodes(
keycaps, attrs, modifier_idxs, switcher_idxs, switcher_dests, scancodes = get_keycaps_attrs_modifiers_switchers_scancodes(
args, layout_id, view_id, data_views, data_buttons)
for dest in switcher_dests:
@ -650,6 +654,10 @@ if __name__ == '__main__':
c_builder.add_array(True, 'const lv_btnmatrix_ctrl_t', f'attributes_{layer_identifier}', attrs, '', '')
c_builder.add_line()
c_builder.add_line(f'static const int num_modifiers_{layer_identifier} = {len(modifier_idxs)};')
c_builder.add_line()
c_builder.add_flat_array(True, 'const int', f'modifier_idxs_{layer_identifier}', modifier_idxs, '')
c_builder.add_line()
c_builder.add_line(f'static const int num_switchers_{layer_identifier} = {len(switcher_idxs)};')
c_builder.add_line()
@ -681,7 +689,7 @@ if __name__ == '__main__':
c_builder.add_line(f'static const sq2lv_layer_t layers_{layout_identifier}[] = ' + '{')
for i, identifier in enumerate(layer_identifiers):
c_builder.add_line(' {')
fields = ['num_keys', 'keycaps', 'attributes', 'num_switchers', 'switcher_idxs', 'switcher_dests']
fields = ['num_keys', 'keycaps', 'attributes', 'num_modifiers', 'modifier_idxs', 'num_switchers', 'switcher_idxs', 'switcher_dests']
if args.generate_scancodes:
fields += ['num_scancodes', 'scancodes', 'scancode_idxs', 'scancode_nums']
for k, field in enumerate(fields):
@ -711,6 +719,10 @@ if __name__ == '__main__':
h_builder.add_line(' const char ** const keycaps;')
h_builder.add_line(' /* Button matrix attributes */')
h_builder.add_line(' const lv_btnmatrix_ctrl_t * const attributes;')
h_builder.add_line(' /* Number of modifier keys */')
h_builder.add_line(' const int num_modifiers;')
h_builder.add_line(' /* Button indexes of modifier keys */')
h_builder.add_line(' const int * const modifier_idxs;')
h_builder.add_line(' /* Number of buttons that trigger a layer switch */')
h_builder.add_line(' const int num_switchers;')
h_builder.add_line(' /* Button indexes that trigger a layer switch */')