Added hide keyboard layout option

This commit is contained in:
bbgun7 2019-04-22 10:34:19 -07:00
parent 98e5afe364
commit 86f4fea55e
3 changed files with 13 additions and 2 deletions

View File

@ -54,6 +54,7 @@ struct swaylock_args {
bool show_caps_lock_text;
bool show_caps_lock_indicator;
bool show_keyboard_layout;
bool hide_keyboard_layout;
bool show_failed_attempts;
bool daemonize;
};

11
main.c
View File

@ -550,6 +550,7 @@ static int parse_options(int argc, char **argv, struct swaylock_state *state,
{"tiling", no_argument, NULL, 't'},
{"no-unlock-indicator", no_argument, NULL, 'u'},
{"show-keyboard-layout", no_argument, NULL, 'k'},
{"hide-keyboard-layout", no_argument, NULL, 'K'},
{"show-failed-attempts", no_argument, NULL, 'F'},
{"version", no_argument, NULL, 'v'},
{"bs-hl-color", required_argument, NULL, LO_BS_HL_COLOR},
@ -607,6 +608,8 @@ static int parse_options(int argc, char **argv, struct swaylock_state *state,
"Display the given image.\n"
" -k, --show-keyboard-layout "
"Display the current xkb layout while typing.\n"
" -K, --hide-keyboard-layout "
"Hide the current xkb layout while typing.\n"
" -L, --disable-caps-lock-text "
"Disable the Caps Lock text.\n"
" -l, --indicator-caps-lock "
@ -700,7 +703,7 @@ static int parse_options(int argc, char **argv, struct swaylock_state *state,
optind = 1;
while (1) {
int opt_idx = 0;
c = getopt_long(argc, argv, "c:deFfhi:kLlnrs:tuvC:", long_options,
c = getopt_long(argc, argv, "c:deFfhi:kKLlnrs:tuvC:", long_options,
&opt_idx);
if (c == -1) {
break;
@ -744,6 +747,11 @@ static int parse_options(int argc, char **argv, struct swaylock_state *state,
state->args.show_keyboard_layout = true;
}
break;
case 'K':
if (state) {
state->args.hide_keyboard_layout = true;
}
break;
case 'L':
if (state) {
state->args.show_caps_lock_text = false;
@ -1063,6 +1071,7 @@ int main(int argc, char **argv) {
.show_caps_lock_indicator = false,
.show_caps_lock_text = true,
.show_keyboard_layout = false,
.hide_keyboard_layout = false,
.show_failed_attempts = false
};
wl_list_init(&state.images);

View File

@ -156,7 +156,8 @@ void render_frame(struct swaylock_surface *surface) {
}
xkb_layout_index_t num_layout = xkb_keymap_num_layouts(state->xkb.keymap);
if (state->args.show_keyboard_layout || num_layout > 1) {
if (!state->args.hide_keyboard_layout &&
(state->args.show_keyboard_layout || num_layout > 1)) {
xkb_layout_index_t curr_layout = 0;
// advance to the first active layout (if any)