diff options
| author | Jack Jamison <jackqjamison@gmail.com> | 2025-10-12 00:11:33 -0400 |
|---|---|---|
| committer | Jack Jamison <jackqjamison@gmail.com> | 2025-10-12 00:11:33 -0400 |
| commit | d58f2e870b8f998262609b98f91d290b65ab80d3 (patch) | |
| tree | acb51286dc7855396e64c228f0fd0a968d41e851 /keyboard.c | |
| parent | 60585faf7951cffb6046280bdd5f91275fb97d65 (diff) | |
improved key repeat
Diffstat (limited to 'keyboard.c')
| -rw-r--r-- | keyboard.c | 26 |
1 files changed, 13 insertions, 13 deletions
@@ -79,19 +79,19 @@ void wl_keyboard_key(void *data, struct wl_keyboard *wl_keyboard, xkb_keysym_t keysym = xkb_state_key_get_one_sym(state->xkb_state, key + 8); if (key_state == WL_KEYBOARD_KEY_STATE_PRESSED) { - type_key(state, keysym); - - // start repeat - state->repeat_key = keysym; - struct itimerspec timer = {0}; - if (state->key_repeat_rate > 1) - timer.it_interval.tv_nsec = 1000000000 / state->key_repeat_rate; - else - timer.it_interval.tv_sec = 1; - timer.it_value.tv_sec = state->key_repeat_delay / 1000; - timer.it_value.tv_nsec = (state->key_repeat_delay % 1000) * 1000000; - if (timerfd_settime(state->key_repeat_timer_fd, 0, &timer, NULL) == -1) { - printf("error setting key repeat timer\n"); + if(type_key(state, keysym)) { + // start repeat + state->repeat_key = keysym; + struct itimerspec timer = {0}; + if (state->key_repeat_rate > 1) + timer.it_interval.tv_nsec = 1000000000 / state->key_repeat_rate; + else + timer.it_interval.tv_sec = 1; + timer.it_value.tv_sec = state->key_repeat_delay / 1000; + timer.it_value.tv_nsec = (state->key_repeat_delay % 1000) * 1000000; + if (timerfd_settime(state->key_repeat_timer_fd, 0, &timer, NULL) == -1) { + printf("error setting key repeat timer\n"); + } } } else if (key_state == WL_KEYBOARD_KEY_STATE_RELEASED) { |
