summaryrefslogtreecommitdiff
path: root/hid/pico/src/ph_outputs.h
diff options
context:
space:
mode:
Diffstat (limited to 'hid/pico/src/ph_outputs.h')
-rw-r--r--hid/pico/src/ph_outputs.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/hid/pico/src/ph_outputs.h b/hid/pico/src/ph_outputs.h
new file mode 100644
index 00000000..1f8e3f40
--- /dev/null
+++ b/hid/pico/src/ph_outputs.h
@@ -0,0 +1,42 @@
+/* ========================================================================= #
+# #
+# KVMD - The main PiKVM daemon. #
+# #
+# Copyright (C) 2018-2023 Maxim Devaev <[email protected]> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <https://www.gnu.org/licenses/>. #
+# #
+# ========================================================================= */
+
+
+#pragma once
+
+#include "ph_types.h"
+#include "ph_proto.h"
+
+
+#define PH_O_KBD(x_id) ((ph_g_outputs_active & PH_PROTO_OUT1_KBD_MASK) == PH_PROTO_OUT1_KBD_##x_id)
+#define PH_O_MOUSE(x_id) ((ph_g_outputs_active & PH_PROTO_OUT1_MOUSE_MASK) == PH_PROTO_OUT1_MOUSE_##x_id)
+#define PH_O_IS_KBD_USB PH_O_KBD(USB)
+#define PH_O_IS_MOUSE_USB (PH_O_MOUSE(USB_ABS) || PH_O_MOUSE(USB_REL) || PH_O_MOUSE(USB_W98))
+#define PH_O_IS_MOUSE_USB_ABS (PH_O_MOUSE(USB_ABS) || PH_O_MOUSE(USB_W98))
+#define PH_O_IS_MOUSE_USB_REL PH_O_MOUSE(USB_REL)
+
+
+extern u8 ph_g_outputs_active;
+extern u8 ph_g_outputs_avail;
+
+
+void ph_outputs_init(void);
+void ph_outputs_write(u8 mask, u8 outputs, bool force);