Adafruit Keypad Library
Adafruit_Keypad.h
1 #ifndef _ADAFRUIT_KEYPAD_H_
2 #define _ADAFRUIT_KEYPAD_H_
3 
4 #include "Adafruit_Keypad_Ringbuffer.h"
5 #include "Arduino.h"
6 #include <string.h>
7 
8 #define makeKeymap(x) ((byte *)x)
9 
10 #define KEY_JUST_RELEASED (0)
11 #define KEY_JUST_PRESSED (1)
12 
13 /**************************************************************************/
17 /**************************************************************************/
18 union keypadEvent {
19  struct {
20  uint8_t KEY : 8;
21  uint8_t EVENT : 8;
22  uint8_t ROW : 8;
23  uint8_t COL : 8;
24  } bit;
25  uint32_t reg;
26 };
27 
28 /**************************************************************************/
32 /**************************************************************************/
34 public:
35  Adafruit_Keypad(byte *userKeymap, byte *row, byte *col, int numRows,
36  int numCols);
37  ~Adafruit_Keypad();
38  void begin();
39 
40  void tick();
41 
42  bool justPressed(byte key, bool clear = true);
43  bool justReleased(byte key);
44  bool isPressed(byte key);
45  bool isReleased(byte key);
46  int available();
47  keypadEvent read();
48  void clear();
49 
50 private:
51  byte *_userKeymap;
52  byte *_row;
53  byte *_col;
54  volatile byte *_keystates;
55  Adafruit_Keypad_Ringbuffer _eventbuf;
56 
57  int _numRows;
58  int _numCols;
59 
60  volatile byte *getKeyState(byte key);
61 };
62 
63 #endif
uint8_t COL
the col number
Definition: Adafruit_Keypad.h:23
key event structure
Definition: Adafruit_Keypad.h:18
struct keypadEvent::@0 bit
bitfield format
uint8_t KEY
the keycode
Definition: Adafruit_Keypad.h:20
uint8_t EVENT
the edge
Definition: Adafruit_Keypad.h:21
Class for interfacing GPIO with a diode-multiplexed keypad.
Definition: Adafruit_Keypad.h:33
uint8_t ROW
the row number
Definition: Adafruit_Keypad.h:22
uint32_t reg
register format
Definition: Adafruit_Keypad.h:25