# ginput : Gnome input devices configuration tool Manage the settings of your keyboard, mouse, ... with a simple GUI. This is for the internal settings of your devices, not for the OS settings. For example, you can change the mouse DPI, polling rate, rgb, ... ## Driver interface Drivers **must** expose the following symbols: ```c void driver_init(); // Initialization uint32_t driver_getkey(); // Calls to this function must return USB keys that this driver registers, until 0 device_capacity_t driver_get_capacity(void* handle); // Returns device capacity (see below) char* driver_get_name(void* handle); // Returns peripheral name char* driver_get_image(void* handle); // Returns peripheral image char* driver_get_manufacturer(void* handle); // Returns manufacturer name /* * Mouse drivers * * - DPI Levels: max levels, level info (dpi + led), level count, current level * - Motion sync * - Angle snap * - Polling rate : possible values, current value * - Debounce time : possible values, current value * - Lift off distance : possible values, current value * - LED (color/effect/status) */ struct MOUSE_DPI_LEVELS { unsigned int max_level_count; unsigned int level_count; unsigned int level_current; bool led_available; bool xy_available; struct MOUSE_DPI_LEVEL { unsigned int dpi_x; unsigned int dpi_y; unsigned char r; unsigned char g; unsigned char b; } level[]; }; int driver_mouse_dpi_get(void* handle, struct MOUSE_DPI_LEVELS* output); int driver_mouse_motion_sync_get(void* handle, bool* output); int driver_mouse_angle_snap_get(void* handle, bool* output); struct MOUSE_POLLING_RATES { unsigned int polling_rate_count; unsigned int polling_rate_current; unsigned int polling_rate_values[]; }; int driver_mouse_polling_rate_get(void* handle, struct MOUSE_POLLING_RATES* output); /* * Wireless driver * - Battery (state + level) * - Connection type (wired/wireless) */ int driver_wireless_battery_state_get(void* handle, int* battery_level, bool* charging); int driver_wireless_connection_type_get(void* handle, bool* output); ```