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
|
||||
};
|
||||
|
||||
/* 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
|
||||
|
||||
|
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);
|
||||
|
||||
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;
|
||||
|
||||
/* upload keymap */
|
||||
@ -236,10 +243,21 @@ kbd_press_key(struct kbd *kb, struct key *k, uint32_t time) {
|
||||
case NextLayer:
|
||||
//switch to the next layout in the layer sequence
|
||||
kb->layer_index++;
|
||||
if (kb->layers[kb->layer_index] == NumLayouts) {
|
||||
kb->layer_index = 0;
|
||||
enum layout_id layer;
|
||||
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;
|
||||
case BackLayer:
|
||||
//switch to the previously active layout
|
||||
|
@ -84,6 +84,7 @@ struct kbd {
|
||||
|
||||
bool print;
|
||||
uint32_t w, h, s;
|
||||
bool landscape;
|
||||
uint8_t mods;
|
||||
uint8_t compose;
|
||||
struct key *last_press;
|
||||
@ -92,6 +93,7 @@ struct kbd {
|
||||
|
||||
struct layout *layouts;
|
||||
enum layout_id *layers;
|
||||
enum layout_id *landscape_layers;
|
||||
|
||||
struct drwsurf *surf;
|
||||
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
|
||||
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
|
||||
@ -379,6 +394,7 @@ main(int argc, char **argv) {
|
||||
|
||||
/* keyboard settings */
|
||||
keyboard.layers = (enum layout_id *) &layers;
|
||||
keyboard.landscape_layers = (enum layout_id *) &landscape_layers;
|
||||
keyboard.scheme = scheme;
|
||||
keyboard.layer_index = 0;
|
||||
keyboard.scheme1 = scheme1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user