terminal.zig (637B)
1 const std = @import("std"); 2 3 pub const Terminal = struct { 4 termios: std.posix.termios, 5 6 pub fn init() !Terminal { 7 const old = try std.posix.tcgetattr(std.posix.STDIN_FILENO); 8 var termios = old; 9 termios.lflag.ICANON = false; 10 termios.lflag.ECHO = false; 11 try std.posix.tcsetattr(std.posix.STDIN_FILENO, .NOW, termios); 12 return .{ .termios = old }; 13 } 14 15 pub fn deinit(self: Terminal) void { 16 std.posix.tcsetattr(std.posix.STDIN_FILENO, .NOW, self.termios) catch |err| { 17 std.log.debug("failed to restore terminal attributes: {any}", .{err}); 18 }; 19 } 20 };