value "update.later" uchar: 0;
value "xkb.only_label" int: 0;
value "xkb.default_model" string: "default";
+ value "keyboard.repeat_delay" int: 400;
+ value "keyboard.repeat_rate" int: 25;
value "exe_always_single_instance" uchar: 0;
value "use_desktop_window_profile" int: 0;
value "powersave.none" double: 0.25;
}
value "xkb.only_label" int: 0;
value "xkb.default_model" string: "default";
+ value "keyboard.repeat_delay" int: 400;
+ value "keyboard.repeat_rate" int: 25;
value "exe_always_single_instance" uchar: 1;
value "use_desktop_window_profile" int: 0;
}
}
value "xkb.only_label" int: 0;
value "xkb.default_model" string: "default";
+ value "keyboard.repeat_delay" int: 400;
+ value "keyboard.repeat_rate" int: 25;
value "exe_always_single_instance" uchar: 0;
value "use_desktop_window_profile" int: 0;
}
}
value "xkb.only_label" int: 0;
value "xkb.default_model" string: "default";
+ value "keyboard.repeat_delay" int: 400;
+ value "keyboard.repeat_rate" int: 25;
value "exe_always_single_instance" uchar: 0;
value "use_desktop_window_profile" int: 0;
}
struct wl_array keys;
struct wl_resource *focus;
int mod_changed;
+ int repeat_delay;
+ int repeat_rate;
} kbd;
struct
e_comp->wl_comp_data,
_e_comp_wl_input_cb_keyboard_unbind);
- /* FIXME: These values should be configurable */
+ /* send current repeat_info */
if (wl_resource_get_version(res) >= WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION)
- wl_keyboard_send_repeat_info(res, 25, 400);
+ wl_keyboard_send_repeat_info(res, e_comp_wl->kbd.repeat_rate, e_comp_wl->kbd.repeat_delay);
/* send current keymap */
wl_keyboard_send_keymap(res, WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1,
e_comp_wl->xkb.fd = -1;
+ /* get default keyboard repeat rate/delay from configuration */
+ e_comp_wl->kbd.repeat_delay = e_config->keyboard.repeat_delay;
+ e_comp_wl->kbd.repeat_rate = e_config->keyboard.repeat_rate;
+
+ /* check for valid repeat_delay and repeat_rate value */
+ /* if invalid, set the default value of repeat delay and rate value */
+ if (e_comp_wl->kbd.repeat_delay < 0) e_comp_wl->kbd.repeat_delay = 400;
+ if (e_comp_wl->kbd.repeat_rate < 0) e_comp_wl->kbd.repeat_rate = 25;
+
/* create the global resource for input seat */
e_comp_wl->seat.global =
wl_global_create(e_comp_wl->wl.disp, &wl_seat_interface, 4,
E_CONFIG_VAL(D, T, xkb.dont_touch_my_damn_keyboard, UCHAR);
E_CONFIG_VAL(D, T, xkb.default_model, STR);
+ E_CONFIG_VAL(D, T, keyboard.repeat_delay, INT);
+ E_CONFIG_VAL(D, T, keyboard.repeat_rate, INT);
+
if (old)
{
E_CONFIG_SUB(D, T, xkb.current_layout, _e_config_xkb_option_edd);
free(ecc);
}
}
+ CONFIG_VERSION_CHECK(19)
+ {
+ CONFIG_VERSION_UPDATE_INFO(19);
+
+ /* set (400, 25) as the default values of repeat delay, rate */
+ e_config->keyboard.repeat_delay = 400;
+ e_config->keyboard.repeat_rate = 25;
+ }
}
if (!e_config->remember_internal_fm_windows)
e_config->remember_internal_fm_windows = !!(e_config->remember_internal_windows & E_REMEMBER_INTERNAL_FM_WINS);
E_CONFIG_LIMIT(e_config->backlight.dim, 0.05, 1.0);
E_CONFIG_LIMIT(e_config->backlight.idle_dim, 0, 1);
+ E_CONFIG_LIMIT(e_config->keyboard.repeat_delay, -1, 1000); // 1 second
+ E_CONFIG_LIMIT(e_config->keyboard.repeat_rate, -1, 1000); // 1 second
+
if (!e_config->icon_theme)
e_config->icon_theme = eina_stringshare_add("hicolor"); // FDO default
/* increment this whenever a new set of config values are added but the users
* config doesn't need to be wiped - simply new values need to be put in
*/
-#define E_CONFIG_FILE_GENERATION 18
+#define E_CONFIG_FILE_GENERATION 19
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH * 1000000) + E_CONFIG_FILE_GENERATION)
#define E_CONFIG_BINDINGS_VERSION 0 // DO NOT INCREMENT UNLESS YOU WANT TO WIPE ALL BINDINGS!!!!!
const char *selected_layout; // whatever teh current layout that the user has selected is
const char *desklock_layout;
} xkb;
-
+
+ struct
+ {
+ int repeat_delay;//delay in milliseconds since key down until repeating starts
+ int repeat_rate;//the rate of repeating keys in characters per second
+ } keyboard;
+
Eina_List *menu_applications;
unsigned char exe_always_single_instance; // GUI
int use_desktop_window_profile; // GUI