Add landscape height value

This commit is contained in:
Stacy Harper 2021-08-26 19:45:17 +02:00 committed by John Sullivan
parent e100aafb05
commit 7a512fbca7
2 changed files with 27 additions and 6 deletions

View File

@ -3,6 +3,9 @@
/* how tall the keyboard should be by default (can be overriden) */ /* how tall the keyboard should be by default (can be overriden) */
#define KBD_PIXEL_HEIGHT 240 #define KBD_PIXEL_HEIGHT 240
/* how tall the keyboard should be by default (can be overriden) */
#define KBD_PIXEL_LANDSCAPE_HEIGHT 120
/* if your layout leaves an empty margin, increase this to fix it */ /* if your layout leaves an empty margin, increase this to fix it */
#define KBD_PIXEL_OVERSCAN_WIDTH 5 #define KBD_PIXEL_OVERSCAN_WIDTH 5

30
main.c
View File

@ -43,7 +43,7 @@ static uint32_t anchor = ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM |
static bool run_display = true; static bool run_display = true;
static int cur_x = -1, cur_y = -1; static int cur_x = -1, cur_y = -1;
static struct kbd keyboard; static struct kbd keyboard;
static uint32_t height; static uint32_t height, normal_height, landscape_height;
/* event handler prototypes */ /* event handler prototypes */
static void wl_pointer_enter(void *data, struct wl_pointer *wl_pointer, static void wl_pointer_enter(void *data, struct wl_pointer *wl_pointer,
@ -238,10 +238,14 @@ 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) { if (transform % 2 == 0 && keyboard.landscape) {
keyboard.landscape = false; keyboard.landscape = false;
} else { height = normal_height;
} else if (transform % 2 != 0 && !keyboard.landscape) {
keyboard.landscape = true; keyboard.landscape = true;
height = landscape_height;
} else {
return; // no changes
} }
enum layout_id layer; enum layout_id layer;
@ -253,6 +257,10 @@ display_handle_geometry(void *data, struct wl_output *wl_output, int x, int y, i
keyboard.layout = &keyboard.layouts[layer]; keyboard.layout = &keyboard.layouts[layer];
keyboard.prevlayout = keyboard.layout; keyboard.prevlayout = keyboard.layout;
zwlr_layer_surface_v1_set_size(layer_surface, 0, height);
zwlr_layer_surface_v1_set_exclusive_zone(layer_surface, height);
wl_surface_commit(draw_surf.surf);
} }
static void static void
@ -328,12 +336,13 @@ layer_surface_closed(void *data, struct zwlr_layer_surface_v1 *surface) {
void void
usage(char *argv0) usage(char *argv0)
{ {
fprintf(stderr, "usage: %s [-hov] [-H height] [-fn font] [-l layers]\n", argv0); fprintf(stderr, "usage: %s [-hov] [-H height] [-L landscape height] [-fn font] [-l layers]\n", argv0);
fprintf(stderr, "Options:\n"); fprintf(stderr, "Options:\n");
fprintf(stderr, " -D - Enable debug\n"); fprintf(stderr, " -D - Enable debug\n");
fprintf(stderr, " -o - Print press keys to standard output\n"); fprintf(stderr, " -o - Print press keys to standard output\n");
fprintf(stderr, " -l - Comma separated list of layers\n"); fprintf(stderr, " -l - Comma separated list of layers\n");
fprintf(stderr, " -H [int] - Height in pixels\n"); fprintf(stderr, " -H [int] - Height in pixels\n");
fprintf(stderr, " -L [int] - Landscape height in pixels\n");
fprintf(stderr, " -fn [font] - Set font (e.g: DejaVu Sans 20)\n"); fprintf(stderr, " -fn [font] - Set font (e.g: DejaVu Sans 20)\n");
} }
@ -384,13 +393,16 @@ main(int argc, char **argv) {
/* parse command line arguments */ /* parse command line arguments */
char *layer_names_list = NULL; char *layer_names_list = NULL;
const char *fc_font_pattern = NULL; const char *fc_font_pattern = NULL;
height = KBD_PIXEL_HEIGHT; height = normal_height = KBD_PIXEL_HEIGHT;
landscape_height = KBD_PIXEL_LANDSCAPE_HEIGHT;
char *tmp; char *tmp;
if ((tmp = getenv("WVKBD_LAYERS"))) if ((tmp = getenv("WVKBD_LAYERS")))
layer_names_list = estrdup(tmp); layer_names_list = estrdup(tmp);
if ((tmp = getenv("WVKBD_HEIGHT"))) if ((tmp = getenv("WVKBD_HEIGHT")))
height = atoi(tmp); normal_height = atoi(tmp);
if ((tmp = getenv("WVKBD_LANDSCAPE_HEIGHT")))
landscape_height = atoi(tmp);
/* keyboard settings */ /* keyboard settings */
keyboard.layers = (enum layout_id *) &layers; keyboard.layers = (enum layout_id *) &layers;
@ -423,6 +435,12 @@ main(int argc, char **argv) {
exit(1); exit(1);
} }
height = atoi(argv[++i]); height = atoi(argv[++i]);
} else if (!strcmp(argv[i], "-L")) {
if (i >= argc - 1) {
usage(argv[0]);
exit(1);
}
landscape_height = atoi(argv[++i]);
} else if (!strcmp(argv[i], "-D")) { } else if (!strcmp(argv[i], "-D")) {
keyboard.debug = true; keyboard.debug = true;
} else if ((!strcmp(argv[i], "-fn")) || (!strcmp(argv[i], "--fn"))) { } else if ((!strcmp(argv[i], "-fn")) || (!strcmp(argv[i], "--fn"))) {