tools

various tools I have been using throughout the years
Log | Files | Refs | README | LICENSE

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 };