1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//! Event type definitions for kernel and driver layers.
//!
//! Linux equivalent: Similar to `include/linux/notifier.h` event types
//!
//! This module organizes events by layer:
//!
//! - **Kernel events**: Pure mechanism-level notifications (buffer/window/cursor changes)
//! - **Driver events**: Hardware abstraction layer events (display/input)
//!
//! # Design Philosophy
//!
//! Events are categorized by the "mechanism vs policy" principle:
//!
//! | Layer | Event Type | Examples |
//! |-------|-----------|----------|
//! | Kernel | Notification | `BufferCreated`, `CursorMoved`, `ModeChanged` |
//! | Driver | Hardware | `DisplayResized`, `KeyInput`, `MouseInput` |
//! | Module | Request/Policy | `RequestOpenFile`, `RequestSetTheme` |
//!
//! Request events (policy) stay in modules, not in the kernel.
//!
//! # Example
//!
//! ```
//! use reovim_kernel::api::v1::events::{
//! kernel::{BufferCreated, BufferModified, Modification},
//! driver::{DisplayResized, KeyInput, KeyCode, Modifiers},
//! };
//!
//! // Kernel event
//! let _ = BufferCreated { buffer_id: 1 };
//!
//! // Driver event
//! let _ = KeyInput {
//! key: KeyCode::Char('a'),
//! modifiers: Modifiers::NONE,
//! };
//! ```
// Re-export common types for convenience
pub use ;