Source file pointer_button.ml

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
type t =
  | Key_unknown [@name "key_unknown"]
  | Btn_0 [@name "btn_0"]
  | Btn_1 [@name "btn_1"]
  | Btn_2 [@name "btn_2"]
  | Btn_3 [@name "btn_3"]
  | Btn_4 [@name "btn_4"]
  | Btn_5 [@name "btn_5"]
  | Btn_6 [@name "btn_6"]
  | Btn_7 [@name "btn_7"]
  | Btn_8 [@name "btn_8"]
  | Btn_9 [@name "btn_9"]
  | Btn_left [@name "btn_left"]
  | Btn_right [@name "btn_right"]
  | Btn_middle [@name "btn_middle"]
  | Btn_side [@name "btn_side"]
  | Btn_extra [@name "btn_extra"]
  | Btn_forward [@name "btn_forward"]
  | Btn_back [@name "btn_back"]
  | Btn_task [@name "btn_task"]
[@@deriving yojson]

let all =
  [ Btn_0
  ; Btn_1
  ; Btn_2
  ; Btn_3
  ; Btn_4
  ; Btn_5
  ; Btn_6
  ; Btn_7
  ; Btn_8
  ; Btn_9
  ; Btn_left
  ; Btn_right
  ; Btn_middle
  ; Btn_side
  ; Btn_extra
  ; Btn_forward
  ; Btn_back
  ; Btn_task
  ]
;;

let of_string = function
  | "Btn_0" -> Ok Btn_0
  | "Btn_1" -> Ok Btn_1
  | "Btn_2" -> Ok Btn_2
  | "Btn_3" -> Ok Btn_3
  | "Btn_4" -> Ok Btn_4
  | "Btn_5" -> Ok Btn_5
  | "Btn_6" -> Ok Btn_6
  | "Btn_7" -> Ok Btn_7
  | "Btn_8" -> Ok Btn_8
  | "Btn_9" -> Ok Btn_9
  | "Btn_left" -> Ok Btn_left
  | "Btn_right" -> Ok Btn_right
  | "Btn_middle" -> Ok Btn_middle
  | "Btn_side" -> Ok Btn_side
  | "Btn_extra" -> Ok Btn_extra
  | "Btn_forward" -> Ok Btn_forward
  | "Btn_back" -> Ok Btn_back
  | "Btn_task" -> Ok Btn_task
  | s -> Error (Printf.sprintf "unrecognized input event: %S" s)
;;

let to_string = function
  | Btn_0 -> "Btn_0"
  | Btn_1 -> "Btn_1"
  | Btn_2 -> "Btn_2"
  | Btn_3 -> "Btn_3"
  | Btn_4 -> "Btn_4"
  | Btn_5 -> "Btn_5"
  | Btn_6 -> "Btn_6"
  | Btn_7 -> "Btn_7"
  | Btn_8 -> "Btn_8"
  | Btn_9 -> "Btn_9"
  | Btn_left -> "Btn_left"
  | Btn_right -> "Btn_right"
  | Btn_middle -> "Btn_middle"
  | Btn_side -> "Btn_side"
  | Btn_extra -> "Btn_extra"
  | Btn_forward -> "Btn_forward"
  | Btn_back -> "Btn_back"
  | Btn_task -> "Btn_task"
  | Key_unknown -> "Key_unknown"
;;

let of_int32 = function
  | 0x100l -> Btn_0
  | 0x101l -> Btn_1
  | 0x102l -> Btn_2
  | 0x103l -> Btn_3
  | 0x104l -> Btn_4
  | 0x105l -> Btn_5
  | 0x106l -> Btn_6
  | 0x107l -> Btn_7
  | 0x108l -> Btn_8
  | 0x109l -> Btn_9
  | 0x110l -> Btn_left
  | 0x111l -> Btn_right
  | 0x112l -> Btn_middle
  | 0x113l -> Btn_side
  | 0x114l -> Btn_extra
  | 0x115l -> Btn_forward
  | 0x116l -> Btn_back
  | 0x117l -> Btn_task
  | _ -> Key_unknown
;;

let to_int32 = function
  | Btn_0 -> 0x100l
  | Btn_1 -> 0x101l
  | Btn_2 -> 0x102l
  | Btn_3 -> 0x103l
  | Btn_4 -> 0x104l
  | Btn_5 -> 0x105l
  | Btn_6 -> 0x106l
  | Btn_7 -> 0x107l
  | Btn_8 -> 0x108l
  | Btn_9 -> 0x109l
  | Btn_left -> 0x110l
  | Btn_right -> 0x111l
  | Btn_middle -> 0x112l
  | Btn_side -> 0x113l
  | Btn_extra -> 0x114l
  | Btn_forward -> 0x115l
  | Btn_back -> 0x116l
  | Btn_task -> 0x117l
  | Key_unknown -> 240l
;;