summaryrefslogtreecommitdiff
path: root/lib/Wayland/Protocols/RiverXkbConfigV1/Interface.lean
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Wayland/Protocols/RiverXkbConfigV1/Interface.lean')
-rw-r--r--lib/Wayland/Protocols/RiverXkbConfigV1/Interface.lean225
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