added SHIFT_SPACE_IS_TAB as compile time parameter

for the mobile layout, we want shift+space to produce tab , which needed
to be implemented in the main code. For the desktop layout, we don't want
this though, a config parameter now handles this at compile time.

Ref: https://github.com/jjsullivan5196/wvkbd/pull/103
This commit is contained in:
Maarten van Gompel
2025-08-09 21:19:08 +02:00
parent 5689b6bd33
commit b3a7e95c69
4 changed files with 9 additions and 2 deletions

View File

@@ -3,6 +3,7 @@
#define DEFAULT_FONT "Sans 14"
#define DEFAULT_ROUNDING 5
#define SHIFT_SPACE_IS_TAB
static const int transparency = 255;
struct clr_scheme schemes[] = {

View File

@@ -301,7 +301,7 @@ kbd_unpress_key(struct kbd *kb, uint32_t time)
zwp_virtual_keyboard_v1_key(kb->vkbd, time, 127, // COMP key
WL_KEYBOARD_KEY_STATE_RELEASED);
} else {
if ((kb->last_press->code == KEY_SPACE) && (unlatch_shift)) {
if ((kb->shift_space_is_tab) && (kb->last_press->code == KEY_SPACE) && (unlatch_shift)) {
// shift + space is tab
zwp_virtual_keyboard_v1_key(kb->vkbd, time, KEY_TAB,
WL_KEYBOARD_KEY_STATE_RELEASED);
@@ -404,7 +404,7 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time)
}
kb->last_swipe = kb->last_press = k;
kbd_draw_key(kb, k, Press);
if ((k->code == KEY_SPACE) && (kb->mods & Shift)) {
if ((kb->shift_space_is_tab) && (k->code == KEY_SPACE) && (kb->mods & Shift)) {
// shift space is tab
zwp_virtual_keyboard_v1_modifiers(kb->vkbd, 0, 0, 0, 0);
zwp_virtual_keyboard_v1_key(kb->vkbd, time, KEY_TAB,

View File

@@ -101,6 +101,7 @@ struct kbd {
double scale;
double preferred_scale, preferred_fractional_scale;
bool landscape;
bool shift_space_is_tab;
uint8_t mods;
uint8_t compose;
struct key *last_press;

5
main.c
View File

@@ -1058,6 +1058,11 @@ main(int argc, char **argv)
if (keyboard.vkbd == NULL) {
die("failed to init virtual keyboard_manager\n");
}
#ifdef SHIFT_SPACE_IS_TAB
keyboard.shift_space_is_tab = true;
#else
keyboard.shift_space_is_tab = false;
#endif
kbd_init(&keyboard, (struct layout *)&layouts, layer_names_list,
landscape_layer_names_list);