mirror of
https://github.com/clockworkpi/DevTerm.git
synced 2025-12-15 03:38:50 +01:00
keyboard matrix_scan modificatio
This commit is contained in:
parent
c129f9ea43
commit
03cf255599
@ -20,7 +20,7 @@
|
|||||||
#define MATRIX_KEYS 64 // 8*8
|
#define MATRIX_KEYS 64 // 8*8
|
||||||
|
|
||||||
#ifndef DEBOUNCE
|
#ifndef DEBOUNCE
|
||||||
# define DEBOUNCE 32
|
# define DEBOUNCE 5
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void init_rows();
|
void init_rows();
|
||||||
|
|||||||
@ -11,11 +11,6 @@ static uint8_t matrix[MATRIX_ROWS];
|
|||||||
static uint8_t matrix_debouncing[MATRIX_COLS];
|
static uint8_t matrix_debouncing[MATRIX_COLS];
|
||||||
static uint8_t matrix_prev[MATRIX_ROWS];
|
static uint8_t matrix_prev[MATRIX_ROWS];
|
||||||
|
|
||||||
static int8_t jack_idx=-1;
|
|
||||||
static uint16_t jack_time = 0;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void init_rows(){
|
void init_rows(){
|
||||||
int i;
|
int i;
|
||||||
for(i=0;i<8;i++) {
|
for(i=0;i<8;i++) {
|
||||||
@ -82,11 +77,13 @@ uint8_t matrix_scan(void) {
|
|||||||
|
|
||||||
if (keyboard_debouncing.deing == true && ( (millis() - keyboard_debouncing.de_time) > DEBOUNCE )) {
|
if (keyboard_debouncing.deing == true && ( (millis() - keyboard_debouncing.de_time) > DEBOUNCE )) {
|
||||||
for (int row = 0; row < MATRIX_ROWS; row++) {
|
for (int row = 0; row < MATRIX_ROWS; row++) {
|
||||||
|
|
||||||
matrix[row] = 0;
|
matrix[row] = 0;
|
||||||
for (int col = 0; col < MATRIX_COLS; col++) {
|
for (int col = 0; col < MATRIX_COLS; col++) {
|
||||||
matrix[row] |= ((matrix_debouncing[col] & (1 << row) ? 1 : 0) << col);
|
matrix[row] |= ((matrix_debouncing[col] & (1 << row) ? 1 : 0) << col);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
keyboard_debouncing.deing = false;
|
keyboard_debouncing.deing = false;
|
||||||
}else{
|
}else{
|
||||||
@ -131,10 +128,13 @@ void matrix_release(DEVTERM*dv,uint8_t row,uint8_t col) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
void keyboard_task(DEVTERM*dv)
|
void keyboard_task(DEVTERM*dv)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
static int8_t jack_idx=-1;
|
||||||
|
static uint16_t jack_time = 0;
|
||||||
|
|
||||||
uint8_t matrix_row = 0;
|
uint8_t matrix_row = 0;
|
||||||
uint8_t matrix_change = 0;
|
uint8_t matrix_change = 0;
|
||||||
|
|
||||||
@ -181,7 +181,39 @@ void keyboard_task(DEVTERM*dv)
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void keyboard_task(DEVTERM*dv)
|
||||||
|
{
|
||||||
|
|
||||||
|
uint8_t matrix_row = 0;
|
||||||
|
uint8_t matrix_change = 0;
|
||||||
|
uint8_t pressed = 0;
|
||||||
|
|
||||||
|
matrix_scan();
|
||||||
|
|
||||||
|
for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
|
||||||
|
matrix_row = matrix_get_row(r);
|
||||||
|
matrix_change = matrix_row ^ matrix_prev[r];
|
||||||
|
if (matrix_change) {
|
||||||
|
uint8_t col_mask = 1;
|
||||||
|
for (uint8_t c = 0; c < MATRIX_COLS; c++, col_mask <<= 1) {
|
||||||
|
if (matrix_change & col_mask) {
|
||||||
|
pressed = (matrix_row & col_mask);
|
||||||
|
if(pressed != 0) {
|
||||||
|
matrix_press(dv,r,c);
|
||||||
|
}else {
|
||||||
|
matrix_release(dv,r,c);
|
||||||
|
}
|
||||||
|
matrix_prev[r] ^= col_mask;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void keyboard_init(DEVTERM*){
|
void keyboard_init(DEVTERM*){
|
||||||
matrix_init();
|
matrix_init();
|
||||||
|
|||||||
@ -9,10 +9,6 @@ static uint16_t keys;
|
|||||||
static uint16_t keys_debouncing;
|
static uint16_t keys_debouncing;
|
||||||
static uint16_t keys_prev;
|
static uint16_t keys_prev;
|
||||||
|
|
||||||
|
|
||||||
static int8_t keys_jack_idx=-1;
|
|
||||||
static uint16_t keys_jack_time = 0;
|
|
||||||
|
|
||||||
void init_keys(){
|
void init_keys(){
|
||||||
int i;
|
int i;
|
||||||
for(i=0;i<KEYS_NUM;i++) {
|
for(i=0;i<KEYS_NUM;i++) {
|
||||||
@ -67,10 +63,10 @@ void print_keys(DEVTERM*dv) {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
void keys_task(DEVTERM*dv){
|
void keys_task(DEVTERM*dv){
|
||||||
|
static int8_t keys_jack_idx=-1;
|
||||||
|
static uint16_t keys_jack_time = 0;
|
||||||
|
|
||||||
scan_keys();
|
scan_keys();
|
||||||
|
|
||||||
@ -107,7 +103,35 @@ void keys_task(DEVTERM*dv){
|
|||||||
keys_prev = keys;
|
keys_prev = keys;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
void keys_task(DEVTERM*dv){
|
||||||
|
|
||||||
|
scan_keys();
|
||||||
|
|
||||||
|
uint16_t _mask =1;
|
||||||
|
uint16_t _change = 0;
|
||||||
|
uint16_t _pressed = 0;
|
||||||
|
|
||||||
|
_change = keys ^ keys_prev;
|
||||||
|
|
||||||
|
if(_change) {
|
||||||
|
|
||||||
|
for(uint8_t c=0;c < KEYS_NUM;c++,_mask <<=1) {
|
||||||
|
if (_change & _mask) {
|
||||||
|
_pressed = keys & _mask;
|
||||||
|
if(_pressed) {
|
||||||
|
keypad_action(dv,c,KEY_PRESSED);
|
||||||
|
}else {
|
||||||
|
keypad_action(dv,c,KEY_RELEASED);
|
||||||
|
}
|
||||||
|
|
||||||
|
keys_prev ^= _mask;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
void keys_init(DEVTERM*dv){
|
void keys_init(DEVTERM*dv){
|
||||||
|
|
||||||
init_keys();
|
init_keys();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user