mirror of
https://github.com/jjsullivan5196/wvkbd.git
synced 2025-03-13 02:42:47 +01:00
Add landscape layers
This commit is contained in:
parent
450d43ff44
commit
e100aafb05
@ -29,5 +29,13 @@ static enum layout_id layers[] = {
|
|||||||
NumLayouts //signals the last item, may not be omitted
|
NumLayouts //signals the last item, may not be omitted
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* layers is an ordered list of layouts, used to cycle through */
|
||||||
|
static enum layout_id landscape_layers[] = {
|
||||||
|
Landscape, //First layout is the default layout on startup
|
||||||
|
Special,
|
||||||
|
Emoji,
|
||||||
|
NumLayouts //signals the last item, may not be omitted
|
||||||
|
};
|
||||||
|
|
||||||
#endif // config_def_h_INCLUDED
|
#endif // config_def_h_INCLUDED
|
||||||
|
|
||||||
|
26
keyboard.c
26
keyboard.c
@ -97,7 +97,14 @@ void kbd_init(struct kbd *kb, struct layout * layouts, char * layer_names_list)
|
|||||||
}
|
}
|
||||||
fprintf(stderr, "Found %d layers\n",i);
|
fprintf(stderr, "Found %d layers\n",i);
|
||||||
|
|
||||||
kb->layout = &kb->layouts[kb->layers[kb->layer_index]];
|
enum layout_id layer;
|
||||||
|
if (kb->landscape) {
|
||||||
|
layer = kb->landscape_layers[kb->layer_index];
|
||||||
|
} else {
|
||||||
|
layer = kb->layers[kb->layer_index];
|
||||||
|
}
|
||||||
|
|
||||||
|
kb->layout = &kb->layouts[layer];
|
||||||
kb->prevlayout = kb->layout;
|
kb->prevlayout = kb->layout;
|
||||||
|
|
||||||
/* upload keymap */
|
/* upload keymap */
|
||||||
@ -236,10 +243,21 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) {
|
|||||||
case NextLayer:
|
case NextLayer:
|
||||||
//switch to the next layout in the layer sequence
|
//switch to the next layout in the layer sequence
|
||||||
kb->layer_index++;
|
kb->layer_index++;
|
||||||
if (kb->layers[kb->layer_index] == NumLayouts) {
|
enum layout_id layer;
|
||||||
kb->layer_index = 0;
|
if (kb->landscape) {
|
||||||
|
layer = kb->landscape_layers[kb->layer_index];
|
||||||
|
} else {
|
||||||
|
layer = kb->layers[kb->layer_index];
|
||||||
}
|
}
|
||||||
kbd_switch_layout(kb, &kb->layouts[kb->layers[kb->layer_index]]);
|
if (layer == NumLayouts) {
|
||||||
|
kb->layer_index = 0;
|
||||||
|
if (kb->landscape) {
|
||||||
|
layer = kb->landscape_layers[kb->layer_index];
|
||||||
|
} else {
|
||||||
|
layer = kb->layers[kb->layer_index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
kbd_switch_layout(kb, &kb->layouts[layer]);
|
||||||
break;
|
break;
|
||||||
case BackLayer:
|
case BackLayer:
|
||||||
//switch to the previously active layout
|
//switch to the previously active layout
|
||||||
|
@ -84,6 +84,7 @@ struct kbd {
|
|||||||
|
|
||||||
bool print;
|
bool print;
|
||||||
uint32_t w, h, s;
|
uint32_t w, h, s;
|
||||||
|
bool landscape;
|
||||||
uint8_t mods;
|
uint8_t mods;
|
||||||
uint8_t compose;
|
uint8_t compose;
|
||||||
struct key *last_press;
|
struct key *last_press;
|
||||||
@ -92,6 +93,7 @@ struct kbd {
|
|||||||
|
|
||||||
struct layout *layouts;
|
struct layout *layouts;
|
||||||
enum layout_id *layers;
|
enum layout_id *layers;
|
||||||
|
enum layout_id *landscape_layers;
|
||||||
|
|
||||||
struct drwsurf *surf;
|
struct drwsurf *surf;
|
||||||
struct zwp_virtual_keyboard_v1 *vkbd;
|
struct zwp_virtual_keyboard_v1 *vkbd;
|
||||||
|
16
main.c
16
main.c
@ -238,6 +238,21 @@ seat_handle_name(void *data, struct wl_seat *wl_seat, const char *name) {}
|
|||||||
static void
|
static void
|
||||||
display_handle_geometry(void *data, struct wl_output *wl_output, int x, int y, int physical_width, int physical_height, int subpixel, const char *make, const char *model, int transform)
|
display_handle_geometry(void *data, struct wl_output *wl_output, int x, int y, int physical_width, int physical_height, int subpixel, const char *make, const char *model, int transform)
|
||||||
{
|
{
|
||||||
|
if (transform % 2 == 0) {
|
||||||
|
keyboard.landscape = false;
|
||||||
|
} else {
|
||||||
|
keyboard.landscape = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum layout_id layer;
|
||||||
|
if (keyboard.landscape) {
|
||||||
|
layer = keyboard.landscape_layers[0];
|
||||||
|
} else {
|
||||||
|
layer = keyboard.layers[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
keyboard.layout = &keyboard.layouts[layer];
|
||||||
|
keyboard.prevlayout = keyboard.layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -379,6 +394,7 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
/* keyboard settings */
|
/* keyboard settings */
|
||||||
keyboard.layers = (enum layout_id *) &layers;
|
keyboard.layers = (enum layout_id *) &layers;
|
||||||
|
keyboard.landscape_layers = (enum layout_id *) &landscape_layers;
|
||||||
keyboard.scheme = scheme;
|
keyboard.scheme = scheme;
|
||||||
keyboard.layer_index = 0;
|
keyboard.layer_index = 0;
|
||||||
keyboard.scheme1 = scheme1;
|
keyboard.scheme1 = scheme1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user