get device id correctly
This commit is contained in:
parent
b0ed1ad28d
commit
9e4fc7253e
|
@ -5,6 +5,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <libinput.h>
|
#include <libinput.h>
|
||||||
|
#include <math.h>
|
||||||
#include "sway/config.h"
|
#include "sway/config.h"
|
||||||
#include "sway/input/input-manager.h"
|
#include "sway/input/input-manager.h"
|
||||||
#include "sway/input/seat.h"
|
#include "sway/input/seat.h"
|
||||||
|
@ -33,6 +34,13 @@ static struct sway_seat *input_manager_get_seat(
|
||||||
return sway_seat_create(input, seat_name);
|
return sway_seat_create(input, seat_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int strlen_num(int num) {
|
||||||
|
if (num == 0) {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
return (int)((ceil(log10(abs(num)))+2));
|
||||||
|
}
|
||||||
|
|
||||||
static char *get_device_identifier(struct wlr_input_device *device) {
|
static char *get_device_identifier(struct wlr_input_device *device) {
|
||||||
int vendor = device->vendor;
|
int vendor = device->vendor;
|
||||||
int product = device->product;
|
int product = device->product;
|
||||||
|
@ -46,9 +54,12 @@ static char *get_device_identifier(struct wlr_input_device *device) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sway_log(L_DEBUG, "rewritten name %s", name);
|
int len =
|
||||||
|
(strlen(name) +
|
||||||
|
strlen_num(device->vendor) +
|
||||||
|
strlen_num(device->product) +
|
||||||
|
3) * sizeof(char);
|
||||||
|
|
||||||
int len = strlen(name) + sizeof(char) * 6;
|
|
||||||
char *identifier = malloc(len);
|
char *identifier = malloc(len);
|
||||||
if (!identifier) {
|
if (!identifier) {
|
||||||
sway_log(L_ERROR, "Unable to allocate unique input device name");
|
sway_log(L_ERROR, "Unable to allocate unique input device name");
|
||||||
|
|
Loading…
Reference in a new issue