programmable_button.h (2258B)
1 /* 2 Copyright 2021 Thomas Weißschuh <thomas@t-8ch.de> 3 4 This program is free software: you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation, either version 2 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #pragma once 19 20 #include <stdint.h> 21 #include <stdbool.h> 22 23 /** 24 * \file 25 * 26 * \defgroup programmable_button HID Programmable Buttons 27 * \{ 28 */ 29 30 /** 31 * \brief Clear the programmable button report. 32 */ 33 void programmable_button_clear(void); 34 35 /** 36 * \brief Set the state of a button. 37 * 38 * \param index The index of the button to press, from 0 to 31. 39 */ 40 void programmable_button_add(uint8_t index); 41 42 /** 43 * \brief Reset the state of a button. 44 * 45 * \param index The index of the button to release, from 0 to 31. 46 */ 47 void programmable_button_remove(uint8_t index); 48 49 /** 50 * \brief Set the state of a button, and flush the report. 51 * 52 * \param index The index of the button to press, from 0 to 31. 53 */ 54 void programmable_button_register(uint8_t index); 55 56 /** 57 * \brief Reset the state of a button, and flush the report. 58 * 59 * \param index The index of the button to release, from 0 to 31. 60 */ 61 void programmable_button_unregister(uint8_t index); 62 63 /** 64 * \brief Get the state of a button. 65 * 66 * \param index The index of the button to check, from 0 to 31. 67 * 68 * \return `true` if the button is pressed. 69 */ 70 bool programmable_button_is_on(uint8_t index); 71 72 /** 73 * \brief Send the programmable button report to the host. 74 */ 75 void programmable_button_flush(void); 76 77 /** 78 * \brief Get the programmable button report. 79 * 80 * \return The bitmask of programmable button states. 81 */ 82 uint32_t programmable_button_get_report(void); 83 84 /** 85 * \brief Set the programmable button report. 86 * 87 * \param report A bitmask of programmable button states. 88 */ 89 void programmable_button_set_report(uint32_t report); 90 91 /** \} */