qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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 /** \} */