mouse_codes/mapping/
mod.rs

1//! Mouse button code mapping implementations
2//!
3//! This module provides standard and custom mapping functionality for
4//! converting between mouse buttons and platform-specific codes.
5
6/// Custom mouse button mapping support
7pub mod custom;
8/// Standard mouse button code mappings for cross-platform compatibility
9pub mod standard;
10
11use crate::CodeMapper;
12
13/// Re-export key types and traits from submodules
14pub use custom::{CustomButton, CustomButtonMap};
15pub use standard::parse_button_from_str;
16
17/// Helper function to get platform-specific code for a button
18///
19/// Uses the standard mapping by default
20pub fn get_code(button: &crate::types::Button, platform: crate::types::Platform) -> usize {
21    CodeMapper::to_code(button, platform)
22}
23
24/// Helper function to get button from platform-specific code
25///
26/// Uses the standard mapping by default
27pub fn get_button(code: usize, platform: crate::types::Platform) -> Option<crate::types::Button> {
28    CodeMapper::from_code(code, platform)
29}
30
31/// Get all standard button mappings for a platform as a hashmap
32pub fn standard_mapping(
33    platform: crate::types::Platform,
34) -> std::collections::HashMap<crate::types::Button, usize> {
35    crate::utils::platform_button_mapping(platform)
36}
37
38/// Get reverse standard mapping (code to button) for a platform
39pub fn reverse_standard_mapping(
40    platform: crate::types::Platform,
41) -> std::collections::HashMap<usize, crate::types::Button> {
42    crate::utils::platform_code_mapping(platform)
43}