/***************************************************************************** # # # KVMD - The main PiKVM daemon. # # # # Copyright (C) 2018-2023 Maxim Devaev # # # # 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 . # # # *****************************************************************************/ #pragma once #include "ph_types.h" #define PH_PROTO_MAGIC ((u8)0x33) #define PH_PROTO_MAGIC_RESP ((u8)0x34) //#define PH_PROTO_RESP_OK ((u8)0x20) // Legacy #define PH_PROTO_RESP_NONE ((u8)0x24) #define PH_PROTO_RESP_CRC_ERROR ((u8)0x40) #define PH_PROTO_RESP_INVALID_ERROR ((u8)0x45) #define PH_PROTO_RESP_TIMEOUT_ERROR ((u8)0x48) // Complex response flags #define PH_PROTO_PONG_OK ((u8)0b10000000) #define PH_PROTO_PONG_CAPS ((u8)0b00000001) #define PH_PROTO_PONG_SCROLL ((u8)0b00000010) #define PH_PROTO_PONG_NUM ((u8)0b00000100) #define PH_PROTO_PONG_KBD_OFFLINE ((u8)0b00001000) #define PH_PROTO_PONG_MOUSE_OFFLINE ((u8)0b00010000) #define PH_PROTO_PONG_RESET_REQUIRED ((u8)0b01000000) // Complex request/response flags #define PH_PROTO_OUT1_DYNAMIC ((u8)0b10000000) #define PH_PROTO_OUT1_KBD_MASK ((u8)0b00000111) #define PH_PROTO_OUT1_KBD_USB ((u8)0b00000001) #define PH_PROTO_OUT1_KBD_PS2 ((u8)0b00000011) // + #define PH_PROTO_OUT1_MOUSE_MASK ((u8)0b00111000) #define PH_PROTO_OUT1_MOUSE_USB_ABS ((u8)0b00001000) #define PH_PROTO_OUT1_MOUSE_USB_REL ((u8)0b00010000) #define PH_PROTO_OUT1_MOUSE_PS2 ((u8)0b00011000) #define PH_PROTO_OUT1_MOUSE_USB_W98 ((u8)0b00100000) // Complex response #define PH_PROTO_OUT2_CONNECTABLE ((u8)0b10000000) #define PH_PROTO_OUT2_CONNECTED ((u8)0b01000000) #define PH_PROTO_OUT2_HAS_USB ((u8)0b00000001) #define PH_PROTO_OUT2_HAS_PS2 ((u8)0b00000010) #define PH_PROTO_OUT2_HAS_USB_W98 ((u8)0b00000100) #define PH_PROTO_CMD_PING ((u8)0x01) #define PH_PROTO_CMD_REPEAT ((u8)0x02) #define PH_PROTO_CMD_SET_KBD ((u8)0x03) #define PH_PROTO_CMD_SET_MOUSE ((u8)0x04) #define PH_PROTO_CMD_SET_CONNECTED ((u8)0x05) #define PH_PROTO_CMD_CLEAR_HID ((u8)0x10) // + #define PH_PROTO_CMD_KBD_KEY ((u8)0x11) // + #define PH_PROTO_CMD_MOUSE_ABS ((u8)0x12) #define PH_PROTO_CMD_MOUSE_BUTTON ((u8)0x13) #define PH_PROTO_CMD_MOUSE_WHEEL ((u8)0x14) #define PH_PROTO_CMD_MOUSE_REL ((u8)0x15) // + #define PH_PROTO_CMD_MOUSE_LEFT_SELECT ((u8)0b10000000) #define PH_PROTO_CMD_MOUSE_LEFT_STATE ((u8)0b00001000) // + #define PH_PROTO_CMD_MOUSE_RIGHT_SELECT ((u8)0b01000000) #define PH_PROTO_CMD_MOUSE_RIGHT_STATE ((u8)0b00000100) // + #define PH_PROTO_CMD_MOUSE_MIDDLE_SELECT ((u8)0b00100000) #define PH_PROTO_CMD_MOUSE_MIDDLE_STATE ((u8)0b00000010) // + #define PH_PROTO_CMD_MOUSE_BACKWARD_SELECT ((u8)0b10000000) // Previous/Up #define PH_PROTO_CMD_MOUSE_BACKWARD_STATE ((u8)0b00001000) // Previous/Up // + #define PH_PROTO_CMD_MOUSE_FORWARD_SELECT ((u8)0b01000000) // Next/Down #define PH_PROTO_CMD_MOUSE_FORWARD_STATE ((u8)0b00000100) // Next/Down