Compare commits
2 Commits
025ab53055
...
b03a88f030
Author | SHA1 | Date |
---|---|---|
LeRoyce Pearson | b03a88f030 | |
LeRoyce Pearson | 3043d5c175 |
15
build.zig
15
build.zig
|
@ -4,12 +4,16 @@ pub fn build(b: *std.Build) void {
|
||||||
const target = b.standardTargetOptions(.{});
|
const target = b.standardTargetOptions(.{});
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
const optimize = b.standardOptimizeOption(.{});
|
||||||
|
|
||||||
const xkbcommon_module = b.createModule(.{
|
const libxkbcommon = b.dependency("libxkbcommon", .{
|
||||||
.root_source_file = .{ .path = "deps/zig-xkbcommon/src/xkbcommon.zig" },
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
|
|
||||||
const module = b.addModule("wayland", .{
|
const module = b.addModule("wayland", .{
|
||||||
.root_source_file = .{ .path = "src/main.zig" },
|
.root_source_file = .{ .path = "src/main.zig" },
|
||||||
|
.imports = &.{
|
||||||
|
.{ .name = "xkbcommon", .module = libxkbcommon.module("xkbcommon") },
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const lib = b.addStaticLibrary(.{
|
const lib = b.addStaticLibrary(.{
|
||||||
|
@ -48,16 +52,15 @@ pub fn build(b: *std.Build) void {
|
||||||
client_connect_exe.root_module.addImport("wayland", module);
|
client_connect_exe.root_module.addImport("wayland", module);
|
||||||
b.installArtifact(client_connect_exe);
|
b.installArtifact(client_connect_exe);
|
||||||
|
|
||||||
|
// Text Editor example
|
||||||
const text_editor_exe = b.addExecutable(.{
|
const text_editor_exe = b.addExecutable(.{
|
||||||
.name = "02_text_editor",
|
.name = "10_text_editor",
|
||||||
.root_source_file = .{ .path = "examples/02_text_editor.zig" },
|
.root_source_file = .{ .path = "examples/10_text_editor.zig" },
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
text_editor_exe.root_module.addImport("wayland", module);
|
text_editor_exe.root_module.addImport("wayland", module);
|
||||||
text_editor_exe.root_module.addImport("xkbcommon", xkbcommon_module);
|
|
||||||
text_editor_exe.linkLibC();
|
text_editor_exe.linkLibC();
|
||||||
text_editor_exe.linkSystemLibrary("xkbcommon");
|
|
||||||
text_editor_exe.addIncludePath(.{ .path = "deps/font8x8/" });
|
text_editor_exe.addIncludePath(.{ .path = "deps/font8x8/" });
|
||||||
b.installArtifact(text_editor_exe);
|
b.installArtifact(text_editor_exe);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
.{
|
||||||
|
.name = "zig-wayland-wire",
|
||||||
|
// This is a [Semantic Version](https://semver.org/).
|
||||||
|
// In a future version of Zig it will be used for package deduplication.
|
||||||
|
.version = "0.0.0",
|
||||||
|
|
||||||
|
// This field is optional.
|
||||||
|
// This is currently advisory only; Zig does not yet do anything
|
||||||
|
// with this value.
|
||||||
|
//.minimum_zig_version = "0.11.0",
|
||||||
|
|
||||||
|
// This field is optional.
|
||||||
|
// Each dependency must either provide a `url` and `hash`, or a `path`.
|
||||||
|
// `zig build --fetch` can be used to fetch all dependencies of a package, recursively.
|
||||||
|
// Once all dependencies are fetched, `zig build` no longer requires
|
||||||
|
// internet connectivity.
|
||||||
|
.dependencies = .{
|
||||||
|
.libxkbcommon = .{
|
||||||
|
.url = "https://git.samsehu.perli.casa/StreetLight/libxkbcommon/archive/f39966344458d947a09a275d09a4a75ea2e54b50.tar.gz",
|
||||||
|
.hash = "12201decd45154772ad3b3f7c86b6f7483e50f89b386a5f2a6721221fde45cffbb70",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.paths = .{
|
||||||
|
// This makes *all* files, recursively, included in this package. It is generally
|
||||||
|
// better to explicitly list the files and directories instead, to insure that
|
||||||
|
// fetching from tarballs, file system paths, and version control all result
|
||||||
|
// in the same contents hash.
|
||||||
|
"",
|
||||||
|
// For example...
|
||||||
|
//"build.zig",
|
||||||
|
//"build.zig.zon",
|
||||||
|
//"src",
|
||||||
|
//"LICENSE",
|
||||||
|
//"README.md",
|
||||||
|
},
|
||||||
|
}
|
|
@ -1,19 +0,0 @@
|
||||||
Copyright 2020 Isaac Freund
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
copy of this software and associated documentation files (the "Software"),
|
|
||||||
to deal in the Software without restriction, including without limitation the
|
|
||||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
|
@ -1,5 +0,0 @@
|
||||||
# zig-xkbcommon
|
|
||||||
|
|
||||||
[zig](https://ziglang.org/) 0.11 bindings for
|
|
||||||
[xkbcommon](https://xkbcommon.org) that are a little
|
|
||||||
nicer to use than the output of `zig translate-c`.
|
|
|
@ -1,341 +0,0 @@
|
||||||
pub const names = @import("xkbcommon_names.zig");
|
|
||||||
|
|
||||||
pub const Keycode = u32;
|
|
||||||
|
|
||||||
pub const Keysym = @import("xkbcommon_keysyms.zig").Keysym;
|
|
||||||
|
|
||||||
pub const KeyDirection = enum(c_int) {
|
|
||||||
up,
|
|
||||||
down,
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const LayoutIndex = u32;
|
|
||||||
pub const LayoutMask = u32;
|
|
||||||
|
|
||||||
pub const LevelIndex = u32;
|
|
||||||
|
|
||||||
pub const ModIndex = u32;
|
|
||||||
pub const ModMask = u32;
|
|
||||||
|
|
||||||
pub const LED_Index = u32;
|
|
||||||
pub const LED_Mask = u32;
|
|
||||||
|
|
||||||
pub const keycode_invalid = 0xffff_ffff;
|
|
||||||
pub const layout_invalid = 0xffff_ffff;
|
|
||||||
pub const level_invalid = 0xffff_ffff;
|
|
||||||
pub const mod_invalid = 0xffff_ffff;
|
|
||||||
pub const led_invalid = 0xffff_ffff;
|
|
||||||
|
|
||||||
pub const keycode_max = 0xffff_ffff - 1;
|
|
||||||
|
|
||||||
pub const RuleNames = extern struct {
|
|
||||||
rules: ?[*:0]const u8,
|
|
||||||
model: ?[*:0]const u8,
|
|
||||||
layout: ?[*:0]const u8,
|
|
||||||
variant: ?[*:0]const u8,
|
|
||||||
options: ?[*:0]const u8,
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const LogLevel = enum(c_int) {
|
|
||||||
crit = 10,
|
|
||||||
err = 20,
|
|
||||||
warn = 30,
|
|
||||||
info = 40,
|
|
||||||
debug = 50,
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const Context = opaque {
|
|
||||||
pub const Flags = enum(c_int) {
|
|
||||||
no_flags = 0,
|
|
||||||
no_default_includes = 1 << 0,
|
|
||||||
no_environment_names = 1 << 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
extern fn xkb_context_new(flags: Flags) ?*Context;
|
|
||||||
pub const new = xkb_context_new;
|
|
||||||
|
|
||||||
extern fn xkb_context_ref(context: *Context) *Context;
|
|
||||||
pub const ref = xkb_context_ref;
|
|
||||||
|
|
||||||
extern fn xkb_context_unref(context: *Context) void;
|
|
||||||
pub const unref = xkb_context_unref;
|
|
||||||
|
|
||||||
extern fn xkb_context_set_user_data(context: *Context, user_data: ?*anyopaque) void;
|
|
||||||
pub const setUserData = xkb_context_set_user_data;
|
|
||||||
|
|
||||||
extern fn xkb_context_get_user_data(context: *Context) ?*anyopaque;
|
|
||||||
pub const getUserData = xkb_context_get_user_data;
|
|
||||||
|
|
||||||
extern fn xkb_context_include_path_append(context: *Context, path: [*:0]const u8) c_int;
|
|
||||||
pub const includePathAppend = xkb_context_include_path_append;
|
|
||||||
|
|
||||||
extern fn xkb_context_include_path_append_default(context: *Context) c_int;
|
|
||||||
pub const includePathAppendDefault = xkb_context_include_path_append_default;
|
|
||||||
|
|
||||||
extern fn xkb_context_include_path_reset_defaults(context: *Context) c_int;
|
|
||||||
pub const includePathResetDefaults = xkb_context_include_path_reset_defaults;
|
|
||||||
|
|
||||||
extern fn xkb_context_include_path_clear(context: *Context) void;
|
|
||||||
pub const includePathClear = xkb_context_include_path_clear;
|
|
||||||
|
|
||||||
extern fn xkb_context_num_include_paths(context: *Context) c_uint;
|
|
||||||
pub const numIncludePaths = xkb_context_num_include_paths;
|
|
||||||
|
|
||||||
extern fn xkb_context_include_path_get(context: *Context, index: c_uint) ?[*:0]const u8;
|
|
||||||
pub const includePathGet = xkb_context_include_path_get;
|
|
||||||
|
|
||||||
extern fn xkb_context_set_log_level(context: *Context, level: LogLevel) void;
|
|
||||||
pub const setLogLevel = xkb_context_set_log_level;
|
|
||||||
|
|
||||||
extern fn xkb_context_get_log_level(context: *Context) LogLevel;
|
|
||||||
pub const getLogLevel = xkb_context_get_log_level;
|
|
||||||
|
|
||||||
extern fn xkb_context_set_log_verbosity(context: *Context, verbosity: c_int) void;
|
|
||||||
pub const setLogVerbosity = xkb_context_set_log_verbosity;
|
|
||||||
|
|
||||||
extern fn xkb_context_get_log_verbosity(context: *Context) c_int;
|
|
||||||
pub const getLogVerbosity = xkb_context_get_log_verbosity;
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
//extern fn xkb_context_set_log_fn(context: *Context, log_fn: ?fn (?*Context, enum_xkb_log_level, [*c]const u8, [*c]struct___va_list_tag) callconv(.C) void) void;
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const Keymap = opaque {
|
|
||||||
pub const CompileFlags = enum(c_int) {
|
|
||||||
no_flags = 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const Format = enum(c_int) {
|
|
||||||
text_v1 = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
extern fn xkb_keymap_new_from_names(context: *Context, names: ?*const RuleNames, flags: CompileFlags) ?*Keymap;
|
|
||||||
pub const newFromNames = xkb_keymap_new_from_names;
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
//extern fn xkb_keymap_new_from_file(context: *Context, file: *FILE, format: Format, flags: CompileFlags) ?*Keymap;
|
|
||||||
//pub const newFromFile = xkb_keymap_new_from_file;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_new_from_string(context: *Context, string: [*:0]const u8, format: Format, flags: CompileFlags) ?*Keymap;
|
|
||||||
pub const newFromString = xkb_keymap_new_from_string;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_new_from_buffer(context: *Context, buffer: [*]const u8, length: usize, format: Format, flags: CompileFlags) ?*Keymap;
|
|
||||||
pub const newFromBuffer = xkb_keymap_new_from_buffer;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_ref(keymap: *Keymap) *Keymap;
|
|
||||||
pub const ref = xkb_keymap_ref;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_unref(keymap: *Keymap) void;
|
|
||||||
pub const unref = xkb_keymap_unref;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_get_as_string(keymap: *Keymap, format: Format) [*c]u8;
|
|
||||||
pub const getAsString = xkb_keymap_get_as_string;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_min_keycode(keymap: *Keymap) Keycode;
|
|
||||||
pub const minKeycode = xkb_keymap_min_keycode;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_max_keycode(keymap: *Keymap) Keycode;
|
|
||||||
pub const maxKeycode = xkb_keymap_max_keycode;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_key_for_each(
|
|
||||||
keymap: *Keymap,
|
|
||||||
iter: fn (keymap: *Keymap, key: Keycode, data: ?*anyopaque) callconv(.C) void,
|
|
||||||
data: ?*anyopaque,
|
|
||||||
) void;
|
|
||||||
pub inline fn keyForEach(
|
|
||||||
keymap: *Keymap,
|
|
||||||
comptime T: type,
|
|
||||||
comptime iter: fn (keymap: *Keymap, key: Keycode, data: T) void,
|
|
||||||
data: T,
|
|
||||||
) void {
|
|
||||||
xkb_keymap_key_for_each(
|
|
||||||
keymap,
|
|
||||||
struct {
|
|
||||||
fn _wrapper(_keymap: *Keymap, _key: Keycode, _data: ?*anyopaque) callconv(.C) void {
|
|
||||||
iter(_keymap, _key, @ptrCast(@alignCast(_data)));
|
|
||||||
}
|
|
||||||
}._wrapper,
|
|
||||||
data,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern fn xkb_keymap_key_get_name(keymap: *Keymap, key: Keycode) ?[*:0]const u8;
|
|
||||||
pub const keyGetName = xkb_keymap_key_get_name;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_key_by_name(keymap: *Keymap, name: [*:0]const u8) Keycode;
|
|
||||||
pub const keyByName = xkb_keymap_key_by_name;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_num_mods(keymap: *Keymap) ModIndex;
|
|
||||||
pub const numMods = xkb_keymap_num_mods;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_mod_get_name(keymap: *Keymap, idx: ModIndex) ?[*:0]const u8;
|
|
||||||
pub const modGetName = xkb_keymap_mod_get_name;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_mod_get_index(keymap: *Keymap, name: [*:0]const u8) ModIndex;
|
|
||||||
pub const modGetIndex = xkb_keymap_mod_get_index;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_num_layouts(keymap: *Keymap) LayoutIndex;
|
|
||||||
pub const numLayouts = xkb_keymap_num_layouts;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_layout_get_name(keymap: *Keymap, idx: LayoutIndex) ?[*:0]const u8;
|
|
||||||
pub const layoutGetName = xkb_keymap_layout_get_name;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_layout_get_index(keymap: *Keymap, name: [*:0]const u8) LayoutIndex;
|
|
||||||
pub const layoutGetIndex = xkb_keymap_layout_get_index;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_num_leds(keymap: *Keymap) LED_Index;
|
|
||||||
pub const numLeds = xkb_keymap_num_leds;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_led_get_name(keymap: *Keymap, idx: LED_Index) ?[*:0]const u8;
|
|
||||||
pub const ledGetName = xkb_keymap_led_get_name;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_led_get_index(keymap: *Keymap, name: [*:0]const u8) LED_Index;
|
|
||||||
pub const ledGetIndex = xkb_keymap_led_get_index;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_num_layouts_for_key(keymap: *Keymap, key: Keycode) LayoutIndex;
|
|
||||||
pub const numLayoutsForKey = xkb_keymap_num_layouts_for_key;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_num_levels_for_key(keymap: *Keymap, key: Keycode, layout: LayoutIndex) LevelIndex;
|
|
||||||
pub const numLevelsForKey = xkb_keymap_num_levels_for_key;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_key_get_mods_for_level(keymap: *Keymap, key: Keycode, layout: LayoutIndex, level: LevelIndex, masks_out: [*]ModMask, masks_size: usize) usize;
|
|
||||||
pub const keyGetModsForLevel = xkb_keymap_key_get_mods_for_level;
|
|
||||||
|
|
||||||
extern fn xkb_keymap_key_get_syms_by_level(keymap: *Keymap, key: Keycode, layout: LayoutIndex, level: LevelIndex, syms_out: *?[*]const Keysym) c_int;
|
|
||||||
pub fn keyGetSymsByLevel(keymap: *Keymap, key: Keycode, layout: LayoutIndex, level: LevelIndex) []const Keysym {
|
|
||||||
var ptr: ?[*]const Keysym = undefined;
|
|
||||||
const len = xkb_keymap_key_get_syms_by_level(keymap, key, layout, level, &ptr);
|
|
||||||
return if (len == 0) &[0]Keysym{} else ptr.?[0..@intCast(len)];
|
|
||||||
}
|
|
||||||
|
|
||||||
extern fn xkb_keymap_key_repeats(keymap: *Keymap, key: Keycode) c_int;
|
|
||||||
pub const keyRepeats = xkb_keymap_key_repeats;
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const ConsumedMode = enum(c_int) {
|
|
||||||
xkb,
|
|
||||||
gtk,
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const State = opaque {
|
|
||||||
pub const Component = enum(c_int) {
|
|
||||||
_,
|
|
||||||
pub const mods_depressed = 1 << 0;
|
|
||||||
pub const mods_latched = 1 << 1;
|
|
||||||
pub const mods_locked = 1 << 2;
|
|
||||||
pub const mods_effective = 1 << 3;
|
|
||||||
pub const layout_depressed = 1 << 4;
|
|
||||||
pub const layout_latched = 1 << 5;
|
|
||||||
pub const layout_locked = 1 << 6;
|
|
||||||
pub const layout_effective = 1 << 7;
|
|
||||||
pub const leds = 1 << 8;
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const Match = enum(c_int) {
|
|
||||||
_,
|
|
||||||
pub const any = 1 << 0;
|
|
||||||
pub const all = 1 << 1;
|
|
||||||
pub const non_exclusive = 1 << 16;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern fn xkb_state_new(keymap: *Keymap) ?*State;
|
|
||||||
pub const new = xkb_state_new;
|
|
||||||
|
|
||||||
extern fn xkb_state_ref(state: *State) *State;
|
|
||||||
pub const ref = xkb_state_ref;
|
|
||||||
|
|
||||||
extern fn xkb_state_unref(state: *State) void;
|
|
||||||
pub const unref = xkb_state_unref;
|
|
||||||
|
|
||||||
extern fn xkb_state_get_keymap(state: *State) *Keymap;
|
|
||||||
pub const getKeymap = xkb_state_get_keymap;
|
|
||||||
|
|
||||||
extern fn xkb_state_update_key(state: *State, key: Keycode, direction: KeyDirection) Component;
|
|
||||||
pub const updateKey = xkb_state_update_key;
|
|
||||||
|
|
||||||
extern fn xkb_state_update_mask(
|
|
||||||
state: *State,
|
|
||||||
depressed_mods: ModMask,
|
|
||||||
latched_mods: ModMask,
|
|
||||||
locked_mods: ModMask,
|
|
||||||
depressed_layout: LayoutIndex,
|
|
||||||
latched_layout: LayoutIndex,
|
|
||||||
locked_layout: LayoutIndex,
|
|
||||||
) Component;
|
|
||||||
pub const updateMask = xkb_state_update_mask;
|
|
||||||
|
|
||||||
extern fn xkb_state_key_get_syms(state: *State, key: Keycode, syms_out: *?[*]const Keysym) c_int;
|
|
||||||
pub fn keyGetSyms(state: *State, key: Keycode) []const Keysym {
|
|
||||||
var ptr: ?[*]const Keysym = undefined;
|
|
||||||
const len = xkb_state_key_get_syms(state, key, &ptr);
|
|
||||||
return if (len == 0) &[0]Keysym{} else ptr.?[0..@intCast(len)];
|
|
||||||
}
|
|
||||||
|
|
||||||
extern fn xkb_state_key_get_utf8(state: *State, key: Keycode, buffer: [*]u8, size: usize) c_int;
|
|
||||||
pub fn keyGetUtf8(state: *State, key: Keycode, buffer: []u8) usize {
|
|
||||||
return @intCast(xkb_state_key_get_utf8(state, key, buffer.ptr, buffer.len));
|
|
||||||
}
|
|
||||||
|
|
||||||
extern fn xkb_state_key_get_utf32(state: *State, key: Keycode) u32;
|
|
||||||
pub const keyGetUtf32 = xkb_state_key_get_utf32;
|
|
||||||
|
|
||||||
extern fn xkb_state_key_get_one_sym(state: *State, key: Keycode) Keysym;
|
|
||||||
pub const keyGetOneSym = xkb_state_key_get_one_sym;
|
|
||||||
|
|
||||||
extern fn xkb_state_key_get_layout(state: *State, key: Keycode) LayoutIndex;
|
|
||||||
pub const keyGetLayout = xkb_state_key_get_layout;
|
|
||||||
|
|
||||||
extern fn xkb_state_key_get_level(state: *State, key: Keycode, layout: LayoutIndex) LevelIndex;
|
|
||||||
pub const keyGetLevel = xkb_state_key_get_level;
|
|
||||||
|
|
||||||
extern fn xkb_state_serialize_mods(state: *State, components: Component) ModMask;
|
|
||||||
pub const serializeMods = xkb_state_serialize_mods;
|
|
||||||
|
|
||||||
extern fn xkb_state_serialize_layout(state: *State, components: Component) LayoutIndex;
|
|
||||||
pub const serializeLayout = xkb_state_serialize_layout;
|
|
||||||
|
|
||||||
extern fn xkb_state_mod_name_is_active(state: *State, name: [*:0]const u8, kind: Component) c_int;
|
|
||||||
pub const modNameIsActive = xkb_state_mod_name_is_active;
|
|
||||||
|
|
||||||
extern fn xkb_state_mod_names_are_active(state: *State, kind: Component, match: Match, ...) c_int;
|
|
||||||
pub const modNamesAreActive = xkb_state_mod_names_are_active;
|
|
||||||
|
|
||||||
extern fn xkb_state_mod_index_is_active(state: *State, idx: ModIndex, kind: Component) c_int;
|
|
||||||
pub const modIndexIsActive = xkb_state_mod_index_is_active;
|
|
||||||
|
|
||||||
extern fn xkb_state_mod_indices_are_active(state: *State, kind: Component, match: Match, ...) c_int;
|
|
||||||
pub const modIndicesAreActive = xkb_state_mod_indices_are_active;
|
|
||||||
|
|
||||||
extern fn xkb_state_key_get_consumed_mods2(state: *State, key: Keycode, mode: ConsumedMode) ModMask;
|
|
||||||
pub const keyGetConsumedMods2 = xkb_state_key_get_consumed_mods2;
|
|
||||||
|
|
||||||
extern fn xkb_state_key_get_consumed_mods(state: *State, key: Keycode) ModMask;
|
|
||||||
pub const keyGetConsumedMods = xkb_state_key_get_consumed_mods;
|
|
||||||
|
|
||||||
extern fn xkb_state_mod_index_is_consumed2(state: *State, key: Keycode, idx: ModIndex, mode: ConsumedMode) c_int;
|
|
||||||
pub const modIndexIsConsumed2 = xkb_state_mod_index_is_consumed2;
|
|
||||||
|
|
||||||
extern fn xkb_state_mod_index_is_consumed(state: *State, key: Keycode, idx: ModIndex) c_int;
|
|
||||||
pub const modIndexIsConsumed = xkb_state_mod_index_is_consumed;
|
|
||||||
|
|
||||||
extern fn xkb_state_mod_mask_remove_consumed(state: *State, key: Keycode, mask: ModMask) ModMask;
|
|
||||||
pub const modMaskRemoveConsumed = xkb_state_mod_mask_remove_consumed;
|
|
||||||
|
|
||||||
extern fn xkb_state_layout_name_is_active(state: *State, name: [*c]const u8, kind: Component) c_int;
|
|
||||||
pub const layoutNameIsActive = xkb_state_layout_name_is_active;
|
|
||||||
|
|
||||||
extern fn xkb_state_layout_index_is_active(state: *State, idx: LayoutIndex, kind: Component) c_int;
|
|
||||||
pub const layoutIndexIsActive = xkb_state_layout_index_is_active;
|
|
||||||
|
|
||||||
extern fn xkb_state_led_name_is_active(state: *State, name: [*c]const u8) c_int;
|
|
||||||
pub const ledNameIsActive = xkb_state_led_name_is_active;
|
|
||||||
|
|
||||||
extern fn xkb_state_led_index_is_active(state: *State, idx: LED_Index) c_int;
|
|
||||||
pub const ledIndexIsActive = xkb_state_led_index_is_active;
|
|
||||||
};
|
|
||||||
|
|
||||||
test {
|
|
||||||
const std = @import("std");
|
|
||||||
@setEvalBranchQuota(4000);
|
|
||||||
std.testing.refAllDeclsRecursive(@This());
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,14 +0,0 @@
|
||||||
pub const mod = struct {
|
|
||||||
pub const shift = "Shift";
|
|
||||||
pub const caps = "Lock";
|
|
||||||
pub const ctrl = "Control";
|
|
||||||
pub const alt = "Mod1";
|
|
||||||
pub const num = "Mod2";
|
|
||||||
pub const logo = "Mod4";
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const led = struct {
|
|
||||||
pub const caps = "Caps Lock";
|
|
||||||
pub const num = "Num Lock";
|
|
||||||
pub const scroll = "Scroll Lock";
|
|
||||||
};
|
|
|
@ -1,6 +1,6 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const wayland = @import("wayland");
|
const wayland = @import("wayland");
|
||||||
const xkbcommon = @import("xkbcommon");
|
const xkbcommon = wayland.xkbcommon;
|
||||||
const font8x8 = @cImport({
|
const font8x8 = @cImport({
|
||||||
@cInclude("font8x8.h");
|
@cInclude("font8x8.h");
|
||||||
});
|
});
|
|
@ -1,5 +1,8 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const testing = std.testing;
|
const testing = std.testing;
|
||||||
|
|
||||||
|
pub const xkbcommon = @import("xkbcommon");
|
||||||
|
|
||||||
pub const core = @import("./core.zig");
|
pub const core = @import("./core.zig");
|
||||||
pub const xdg = @import("./xdg.zig");
|
pub const xdg = @import("./xdg.zig");
|
||||||
pub const zxdg = @import("./zxdg.zig");
|
pub const zxdg = @import("./zxdg.zig");
|
||||||
|
|
Loading…
Reference in New Issue