input: Improve input device name format

The name now includes the type, for the case of a physical device
advertising more than one logical device.
This commit is contained in:
Leon Henrik Plickat 2022-02-03 11:39:20 +01:00 committed by Isaac Freund
parent 53f84b76f3
commit 422cd3e01f
No known key found for this signature in database
GPG Key ID: 86DED400DDFD7A11
2 changed files with 9 additions and 3 deletions

View File

@ -293,6 +293,8 @@ A complete list may be found in _/usr/include/linux/input-event-codes.h_
The _input_ command can be used to create a configuration rule for an input The _input_ command can be used to create a configuration rule for an input
device identified by its _name_. device identified by its _name_.
The _name_ of an input device consists of its type, its numerical vendor id,
its numerical product id and finally its self-advertised name, separated by -.
A list of all device properties that can be configured maybe found below. A list of all device properties that can be configured maybe found below.
However note that not every input device supports every property. However note that not every input device supports every property.

View File

@ -46,11 +46,15 @@ pub const InputDevice = struct {
identifier: []const u8, identifier: []const u8,
pub fn init(self: *InputDevice, device: *wlr.InputDevice) !void { pub fn init(self: *InputDevice, device: *wlr.InputDevice) !void {
// The identifier is formatted exactly as in Sway
const identifier = try std.fmt.allocPrint( const identifier = try std.fmt.allocPrint(
util.gpa, util.gpa,
"{}:{}:{s}", "{s}-{}-{}-{s}",
.{ device.vendor, device.product, mem.trim(u8, mem.span(device.name), &ascii.spaces) }, .{
@tagName(device.type),
device.vendor,
device.product,
mem.trim(u8, mem.span(device.name), &ascii.spaces),
},
); );
for (identifier) |*char| { for (identifier) |*char| {
if (char.* == ' ' or !std.ascii.isPrint(char.*)) { if (char.* == ' ' or !std.ascii.isPrint(char.*)) {