main: add inputDeviceOpenAndGrab fun
This commit is contained in:
		
							parent
							
								
									9e68abf2a0
								
							
						
					
					
						commit
						f0ee83ebbb
					
				
							
								
								
									
										24
									
								
								src/main.zig
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								src/main.zig
									
									
									
									
									
								
							| @ -35,7 +35,17 @@ fn write_esc() !void { | ||||
|     try event_write(&EscUp); | ||||
| } | ||||
| 
 | ||||
| fn device_open() !void {} | ||||
| fn inputDeviceOpenAndGrab(dev_name: []const u8) !?*c.libevdev { | ||||
|     const dev_fd = try std.fs.openFileAbsolute(dev_name, .{}); | ||||
|     const dev = c.libevdev_new(); | ||||
|     if (c.libevdev_set_fd(dev, dev_fd.handle) < 0) { | ||||
|         return error.libevdevCreateFail; | ||||
|     } | ||||
|     if (c.libevdev_grab(dev, c.LIBEVDEV_GRAB) < 0) { | ||||
|         return error.libevdevGrabFail; | ||||
|     } | ||||
|     return dev; | ||||
| } | ||||
| 
 | ||||
| pub fn main() !void { | ||||
|     var gpa = std.heap.GeneralPurposeAllocator(.{}){}; | ||||
| @ -49,17 +59,7 @@ pub fn main() !void { | ||||
|         std.os.exit(1); | ||||
|     } | ||||
|     const dev_name = args[1]; | ||||
|     var dev_fd = try std.fs.openFileAbsolute(dev_name, .{}); | ||||
| 
 | ||||
|     const dev = c.libevdev_new(); | ||||
|     if (c.libevdev_set_fd(dev, dev_fd.handle) < 0) { | ||||
|         std.debug.print("evdev: failed creating device from descriptor", .{}); | ||||
|         std.os.exit(1); | ||||
|     } | ||||
|     if (c.libevdev_grab(dev, c.LIBEVDEV_GRAB) < 0) { | ||||
|         std.debug.print("evdev: failed grabbing device", .{}); | ||||
|         std.os.exit(1); | ||||
|     } | ||||
|     const dev = try inputDeviceOpenAndGrab(dev_name); | ||||
| 
 | ||||
|     if (c.libevdev_uinput_create_from_device(@ptrCast(dev), c.LIBEVDEV_UINPUT_OPEN_MANAGED, @ptrCast(&uidev)) < 0) { | ||||
|         std.debug.print("evdev: failed creating uinput device", .{}); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user