compositor: fetch repeat info from weston.ini
authorJonny Lamb <jonny.lamb@collabora.co.uk>
Tue, 12 Aug 2014 12:58:25 +0000 (14:58 +0200)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Fri, 15 Aug 2014 12:39:47 +0000 (15:39 +0300)
man/weston.ini.man
src/compositor.c
src/compositor.h
src/input.c

index 667f70a..3d8eef9 100644 (file)
@@ -396,6 +396,17 @@ sets the keymap options (string). See the Options section in
 .B "xkeyboard-config(7)."
 .RE
 .RE
+.TP 7
+.BI "repeat-rate=" "40"
+sets the rate of repeating keys in characters per second (unsigned integer)
+.RE
+.RE
+.TP 7
+.BI "repeat-delay=" "400"
+sets the delay in milliseconds since key down until repeating starts (unsigned
+integer)
+.RE
+.RE
 .SH "TERMINAL SECTION"
 Contains settings for the weston terminal application (weston-terminal). It
 allows to customize the font and shell of the command line interface.
index 4d6a02a..96e3435 100644 (file)
@@ -3792,6 +3792,11 @@ weston_compositor_init(struct weston_compositor *ec,
        if (weston_compositor_xkb_init(ec, &xkb_names) < 0)
                return -1;
 
+       weston_config_section_get_int(s, "repeat-rate",
+                                     &ec->kb_repeat_rate, 40);
+       weston_config_section_get_int(s, "repeat-delay",
+                                     &ec->kb_repeat_delay, 400);
+
        text_backend_init(ec);
 
        wl_data_device_manager_init(ec->wl_display);
index 102cfa7..c0fc0a6 100644 (file)
@@ -649,6 +649,9 @@ struct weston_compositor {
 
        /* Raw keyboard processing (no libxkbcommon initialization or handling) */
        int use_xkbcommon;
+
+       int32_t kb_repeat_rate;
+       int32_t kb_repeat_delay;
 };
 
 struct weston_buffer {
index b6cd7df..1ab55ce 100644 (file)
@@ -1721,8 +1721,11 @@ seat_get_keyboard(struct wl_client *client, struct wl_resource *resource,
        wl_resource_set_implementation(cr, &keyboard_interface,
                                       seat, unbind_resource);
 
-       if (wl_resource_get_version(cr) >= WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION)
-               wl_keyboard_send_repeat_info(cr, 30, 200);
+       if (wl_resource_get_version(cr) >= WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION) {
+               wl_keyboard_send_repeat_info(cr,
+                                            seat->compositor->kb_repeat_rate,
+                                            seat->compositor->kb_repeat_delay);
+       }
 
        if (seat->compositor->use_xkbcommon) {
                wl_keyboard_send_keymap(cr, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1,
@@ -1816,7 +1819,7 @@ bind_seat(struct wl_client *client, void *data, uint32_t version, uint32_t id)
        enum wl_seat_capability caps = 0;
 
        resource = wl_resource_create(client,
-                                     &wl_seat_interface, MIN(version, 3), id);
+                                     &wl_seat_interface, MIN(version, 4), id);
        wl_list_insert(&seat->base_resource_list, wl_resource_get_link(resource));
        wl_resource_set_implementation(resource, &seat_interface, data,
                                       unbind_resource);