diff options
Diffstat (limited to 'lib/Wayland/Protocols/RiverXkbConfigV1/Interface.lean')
| -rw-r--r-- | lib/Wayland/Protocols/RiverXkbConfigV1/Interface.lean | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/lib/Wayland/Protocols/RiverXkbConfigV1/Interface.lean b/lib/Wayland/Protocols/RiverXkbConfigV1/Interface.lean new file mode 100644 index 0000000..f14c075 --- /dev/null +++ b/lib/Wayland/Protocols/RiverXkbConfigV1/Interface.lean @@ -0,0 +1,225 @@ +import Wayland.Display +import Wayland.Protocols.RiverInputManagementV1.Header +import Wayland.Protocols.RiverXkbConfigV1.Header + +namespace Wayland.Protocols + +inductive RiverXkbConfigV1.Event where + | finished + | xkbKeyboard + (id : RiverXkbKeyboardV1) + +inductive RiverXkbKeymapV1.Event where + | success + | failure + (errorMsg : String) + +inductive RiverXkbKeyboardV1.Event where + | removed + | inputDevice + (device : RiverInputDeviceV1) + | layout + (index : UInt32) + (name : Option String) + | capslockEnabled + | capslockDisabled + | numlockEnabled + | numlockDisabled + + +instance instInterfaceRiverXkbConfigV1 : Interface RiverXkbConfigV1.name where + event := RiverXkbConfigV1.Event + version := 1 + requests := #[ + { + name := "stop" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "destroy" + args := #[] + since := 1 + isDestructor := true + }, + { + name := "create_keymap" + args := #[.newID (.some "river_xkb_keymap_v1"), .fd, .uint] + since := 1 + isDestructor := false + }, + ] + events := #[ + { + name := "finished" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "xkb_keyboard" + args := #[.newID (.some "river_xkb_keyboard_v1")] + since := 1 + isDestructor := false + }, + ] + demarshalEvent + | 0 => do + return .finished + | 1 => do + return .xkbKeyboard + (← Marshallable.demarshal .object) + | _ => throw s!"Received invalid opcode" + +instance instInterfaceRiverXkbKeymapV1 : Interface RiverXkbKeymapV1.name where + event := RiverXkbKeymapV1.Event + version := 1 + requests := #[ + { + name := "destroy" + args := #[] + since := 1 + isDestructor := true + }, + ] + events := #[ + { + name := "success" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "failure" + args := #[.string .notNull] + since := 1 + isDestructor := false + }, + ] + demarshalEvent + | 0 => do + return .success + | 1 => do + return .failure + (← Marshallable.demarshal .string) + | _ => throw s!"Received invalid opcode" + +instance instInterfaceRiverXkbKeyboardV1 : Interface RiverXkbKeyboardV1.name where + event := RiverXkbKeyboardV1.Event + version := 1 + requests := #[ + { + name := "destroy" + args := #[] + since := 1 + isDestructor := true + }, + { + name := "set_keymap" + args := #[.object .notNull (.some "river_xkb_keymap_v1")] + since := 1 + isDestructor := false + }, + { + name := "set_layout_by_index" + args := #[.int] + since := 1 + isDestructor := false + }, + { + name := "set_layout_by_name" + args := #[.string .notNull] + since := 1 + isDestructor := false + }, + { + name := "capslock_enable" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "capslock_disable" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "numlock_enable" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "numlock_disable" + args := #[] + since := 1 + isDestructor := false + }, + ] + events := #[ + { + name := "removed" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "input_device" + args := #[.object .notNull (.some "river_input_device_v1")] + since := 1 + isDestructor := false + }, + { + name := "layout" + args := #[.uint, .string .nullable] + since := 1 + isDestructor := false + }, + { + name := "capslock_enabled" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "capslock_disabled" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "numlock_enabled" + args := #[] + since := 1 + isDestructor := false + }, + { + name := "numlock_disabled" + args := #[] + since := 1 + isDestructor := false + }, + ] + demarshalEvent + | 0 => do + return .removed + | 1 => do + return .inputDevice + (← Marshallable.demarshal .object) + | 2 => do + return .layout + (← Marshallable.demarshal .uint) + (← Marshallable.demarshal .string) + | 3 => do + return .capslockEnabled + | 4 => do + return .capslockDisabled + | 5 => do + return .numlockEnabled + | 6 => do + return .numlockDisabled + | _ => throw s!"Received invalid opcode" + +end Wayland.Protocols
\ No newline at end of file |
