32 lines
1.3 KiB
Zig
32 lines
1.3 KiB
Zig
//! The "xkeyboard-config" library domain: keyboard layouts compiled from the
|
|
//! X11 xkeyboard-config database into native Zig (keycode + modifiers ->
|
|
//! keysym/character). The `layouts` tables are generated by
|
|
//! tools/make-xkeyboard-config.py; `xkeyboard-config` is the hand-written API
|
|
//! over them.
|
|
|
|
const std = @import("std");
|
|
|
|
pub fn build(b: *std.Build) void {
|
|
const layouts = b.addModule("layouts", .{
|
|
.root_source_file = b.path("generated/layouts.zig"),
|
|
});
|
|
_ = b.addModule("xkeyboard-config", .{
|
|
.root_source_file = b.path("xkeyboard-config.zig"),
|
|
.imports = &.{.{ .name = "layouts", .module = layouts }},
|
|
});
|
|
|
|
// Standalone `zig build test` for this domain alone; the root build keeps
|
|
// its aggregate test step. The keycode->character assertions are the
|
|
// end-to-end proof that the xkb-data -> generator -> Zig-lookup pipeline
|
|
// is correct.
|
|
const test_step = b.step("test", "Run the xkeyboard-config unit tests");
|
|
const xkb_tests = b.addTest(.{
|
|
.root_module = b.createModule(.{
|
|
.root_source_file = b.path("xkeyboard-config.zig"),
|
|
.target = b.resolveTargetQuery(.{}),
|
|
.imports = &.{.{ .name = "layouts", .module = layouts }},
|
|
}),
|
|
});
|
|
test_step.dependOn(&b.addRunArtifact(xkb_tests).step);
|
|
}
|