Fix setting numlock

This commit is contained in:
Kinzie 2024-05-13 09:18:19 +01:00
parent cbc2cb933f
commit 815700f9b6
No known key found for this signature in database
GPG Key ID: EF86FC12BB84F79E
2 changed files with 6 additions and 9 deletions

View File

@ -108,16 +108,13 @@ pub fn getLockState(console_dev: [:0]const u8) !struct {
}; };
} }
pub fn setNumlock(console_dev: [:0]const u8, val: bool) !void { pub fn setNumlock(val: bool) !void {
const fd = try std.posix.open(console_dev, .{ .ACCMODE = .RDONLY }, 0);
defer std.posix.close(fd);
var led: c_char = undefined; var led: c_char = undefined;
_ = std.c.ioctl(fd, KDGKBLED, &led); _ = std.c.ioctl(0, KDGKBLED, &led);
const numlock = (led & K_NUMLOCK) != 0; const numlock = (led & K_NUMLOCK) != 0;
if (numlock != val) { if (numlock != val) {
const status = std.c.ioctl(fd, KDSKBLED, led ^ K_NUMLOCK); const status = std.c.ioctl(std.posix.STDIN_FILENO, KDSKBLED, led ^ K_NUMLOCK);
if (status != 0) return error.FailedToSetNumlock; if (status != 0) return error.FailedToSetNumlock;
} }
} }

View File

@ -127,7 +127,7 @@ pub fn main() !void {
} }
} }
interop.setNumlock(config.console_dev, config.numlock) catch {}; interop.setNumlock(config.numlock) catch {};
// Initialize information line with host name // Initialize information line with host name
get_host_name: { get_host_name: {
@ -252,6 +252,7 @@ pub fn main() !void {
var restart = false; var restart = false;
var auth_fails: u64 = 0; var auth_fails: u64 = 0;
// Switch to selected TTY if possible
open_console_dev: { open_console_dev: {
const fd = std.posix.open(config.console_dev, .{ .ACCMODE = .WRONLY }, 0) catch { const fd = std.posix.open(config.console_dev, .{ .ACCMODE = .WRONLY }, 0) catch {
try info_line.setText(lang.err_console_dev); try info_line.setText(lang.err_console_dev);
@ -259,7 +260,6 @@ pub fn main() !void {
}; };
defer std.posix.close(fd); defer std.posix.close(fd);
// Switch to selected TTY if possible
_ = std.c.ioctl(fd, interop.VT_ACTIVATE, config.tty); _ = std.c.ioctl(fd, interop.VT_ACTIVATE, config.tty);
_ = std.c.ioctl(fd, interop.VT_WAITACTIVE, config.tty); _ = std.c.ioctl(fd, interop.VT_WAITACTIVE, config.tty);
} }
@ -509,7 +509,7 @@ pub fn main() !void {
}, },
termbox.TB_KEY_ENTER => { termbox.TB_KEY_ENTER => {
if (config.save) save_last_settings: { if (config.save) save_last_settings: {
var file = std.fs.createFileAbsolute(save_path, .{}) catch break :save_last_settings; var file = std.fs.cwd().createFile(save_path, .{}) catch break :save_last_settings;
defer file.close(); defer file.close();
const save_data = Save{ const save_data = Save{