Keypad .kstate question

OK, Well after a Bunch more playing I feel like I am going in circles a bit and have ended up at the same place several times..

The One thing that seems to not be working right is the findInList as it seems to not be allowing me to actually find the Key in the active Key list:

Anyway the code I have for the what I am doing is this right now..

I have edited out everything that is not being worked on:

// Included Libraries
#include <Keypad.h>


// Variable Declaration
String msg;
int enc;
int encA;
int encB;
int Afound;
int Bfound;
#define PSE9r 3
#define PSE9c 7


//Define Button Matrix Options and Pin Map
byte PSE9[PSE9r][PSE9c] = {
  { 8, 9, 10, 11, 12, 13, 14},
  { 21, 15, 16, 17, 18, 19, 20},
  { 22, 23, 24, 25, 26, 27, 28}
};
byte PSE9rPins[PSE9r] = { 22, 21, 20};    //row pinouts
byte PSE9cPins[PSE9c] = { 19, 18, 17, 16, 15, 14, 13};    //column pinouts


//initialize Keypad Physical Matrix
Keypad PSE9matrix = Keypad( makeKeymap(PSE9), PSE9rPins, PSE9cPins, PSE9r, PSE9c);


// Program
void setup() {
  Serial.begin(500000);
  PSE9matrix.setDebounceTime(0);    // Default is 50mS
  PSE9matrix.setHoldTime(10000);    // Default is 500mS
}

void loop() { 
    CheckEncoders9();
}

// Encoder Program
void CheckEncoders9(void){
   // Check for Single Button usage or Run Encoder Coding
  if (PSE9matrix.getKeys()) {
    for (int i=0; i<LIST_MAX; i++) {    // Scan the whole key list.
      if (PSE9matrix.key[i].stateChanged ) {    // Only find keys that have changed state.
        if (PSE9matrix.key[i].kchar == 8 ||PSE9matrix.key[i].kchar == 21 || PSE9matrix.key[i].kchar == 22) {  
          switch (PSE9matrix.key[i].kstate) {    // Report active key state : IDLE, PRESSED, HOLD, or RELEASED
          case PRESSED:
            msg = " pressed";
            Joystick.button(PSE9matrix.key[i].kchar, 1);
          break;
          case RELEASED:
            msg = " released";
            Joystick.button(PSE9matrix.key[i].kchar, 0);
          break;
          }
        byte s = PSE9matrix.key[i].kchar;
        Serial.print("Button ");
        Serial.print(s);
        Serial.print(" is");
        Serial.println(msg);
        } else {
          // Determine Active Encoder A or B 
            enc = PSE9matrix.key[i].kchar;
          if ( PSE9matrix.key[i].kchar % 2 == 0 ){
            encA = enc - 1;
            encB = enc;
            Afound = PSE9matrix.findInList(encA);
            Bfound = PSE9matrix.findInList(encB);
          }else{
            encA = enc;
            encB = enc + 1;
            Afound = PSE9matrix.findInList(encA);
            Bfound = PSE9matrix.findInList(encB);
          }
          byte n = PSE9matrix.key[i].kstate;
          Serial.print("Encoder ");
          Serial.print(encA);
          Serial.print(" ");
          Serial.println(encB);
          Serial.print("Encoder State ");
          Serial.println(n);
          switch (PSE9matrix.key[i].kstate) {    // Report active key state : IDLE, PRESSED, HOLD, or RELEASED
            case PRESSED:
              msg = " pressed";
              Joystick.button(PSE9matrix.key[i].kchar, 1);
            break;
            case HOLD:
              msg = " held";
            break;
            case RELEASED:
              msg = " released";
              Joystick.button(PSE9matrix.key[i].kchar, 0);
            break;
            case IDLE:
              msg = " idle";
            break;
          }
          Serial.print("A Encoder Found = ");
          Serial.println(Afound);
          Serial.print("B Encoder Found = ");
          Serial.println(Bfound);
          byte s1 = PSE9matrix.key[i].kchar;
          Serial.print("Encoder Button ");
          Serial.print(s1);
          Serial.print(" is");
          Serial.println(msg);
        }
      }  
    }
  }  
}

I have an encoder connected with Ground on Pin 20 and Output A on Pin 14 - Matrix [3] [6] for button 27 and Output B on Pin 13 -Matrix [3] [7] for button 28.

continued next post...