mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-08-28 01:51:43 +00:00
terminal: add device_attributes module
Introduce a dedicated device_attributes.zig module that consolidates all device attribute types and encoding logic. This moves DeviceAttributeReq out of ansi.zig and adds structured response types for DA1 (primary), DA2 (secondary), and DA3 (tertiary) with self-encoding methods. Primary DA uses a ConformanceLevel enum covering VT100-series per-model values and VT200+ conformance levels, plus a Feature enum with all known xterm DA1 attribute codes (132-col, printer, sixel, color, clipboard, etc.) as a simple slice. Secondary DA uses a DeviceType enum matching the xterm decTerminalID values. Tertiary DA encodes the DECRPTUI unit ID as a u32 formatted to 8 hex digits. This is preparatory work for exposing device attributes through the stream_terminal Effects callback system.
This commit is contained in:
@@ -9,6 +9,7 @@ const lib = @import("../lib/main.zig");
|
||||
const Parser = @import("Parser.zig");
|
||||
const ansi = @import("ansi.zig");
|
||||
const charsets = @import("charsets.zig");
|
||||
const device_attributes = @import("device_attributes.zig");
|
||||
const device_status = @import("device_status.zig");
|
||||
const csi = @import("csi.zig");
|
||||
const kitty = @import("kitty.zig");
|
||||
@@ -97,7 +98,7 @@ pub const Action = union(Key) {
|
||||
title_push: u16,
|
||||
title_pop: u16,
|
||||
xtversion,
|
||||
device_attributes: ansi.DeviceAttributeReq,
|
||||
device_attributes: device_attributes.Req,
|
||||
device_status: DeviceStatus,
|
||||
kitty_keyboard_query,
|
||||
kitty_keyboard_push: KittyKeyboardFlags,
|
||||
@@ -1282,7 +1283,7 @@ pub fn Stream(comptime H: type) type {
|
||||
|
||||
// c - Device Attributes (DA1)
|
||||
'c' => {
|
||||
const req: ?ansi.DeviceAttributeReq = switch (input.intermediates.len) {
|
||||
const req: ?device_attributes.Req = switch (input.intermediates.len) {
|
||||
0 => .primary,
|
||||
1 => switch (input.intermediates[0]) {
|
||||
'>' => .secondary,
|
||||
|
||||
Reference in New Issue
Block a user