Tuesday, December 31, 2013

Eagle PCB and Schematic Keypad Shortcut

I made an Instructable a while back about making a Programmable Keypad for your computer.  I have slightly modified that code to allow me a keypad for shortcuts when making schematics and PCBs in Eagle software.  That Instructable can be found here.  This is my new source code and I also added a switch to allow switching between schematic and PCB modes.
------------------------------------------------------------------------------------------------
//http://arduino.cc/en/Reference/MouseKeyboard

#include <Keypad.h>

//HIDKeyboard Keyboard; // Initialize HIDKeyboard object
char shift = KEY_LEFT_SHIFT;
char ctrl = KEY_LEFT_CTRL;
char alt = KEY_LEFT_ALT;
char f2 = KEY_F2;

const int schemBoard = 2;

const byte ROWS = 4;
const byte COLS = 3;

char Keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {4, 9, 8, 6};
byte colPins[COLS] = {5, 3, 7};

Keypad customKeypad = Keypad( makeKeymap(Keys), rowPins, colPins, ROWS, COLS);

void setup() {
  Keyboard.begin(); // Start communication
  delay(2000); // Wait for device to be found as a Keyboard
}

void loop() {
  char key = customKeypad.getKey();
 
  if (key != NO_KEY){
    if(schemBoard){  //schematic keys
      if     (key == '1'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('a');}  //add
      else if(key == '2'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('c');}  //copy
      else if(key == '3'){Keyboard.press(ctrl);Keyboard.press('d');}  //delete
      else if(key == '4'){Keyboard.press(ctrl);Keyboard.press('i');}  //info
      else if(key == '5'){Keyboard.press(ctrl);Keyboard.press('m');}  //move
      else if(key == '6'){Keyboard.press(alt);Keyboard.press('n');}  //net
      else if(key == '7'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('n');}  //name
      else if(key == '8'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('s');}  //smash
      else if(key == '9'){Keyboard.press(ctrl);Keyboard.press('t');}  //text
      else if(key == '0'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('v');}  //value
      else if(key == '*'){Keyboard.press(ctrl);Keyboard.press('w');}  //wire
      else if(key == '#'){Keyboard.press(alt);Keyboard.press(f2);}  //window fit
    }
    else{  //board keys
      if     (key == '1'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('a');}  //add
      else if(key == '2'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('c');}  //copy
      else if(key == '3'){Keyboard.press(ctrl);Keyboard.press('d');}  //delete
      else if(key == '4'){Keyboard.press(ctrl);Keyboard.press('i');}  //info
      else if(key == '5'){Keyboard.press(ctrl);Keyboard.press('m');}  //move
      else if(key == '6'){Keyboard.press(alt);Keyboard.press('n');}  //net
      else if(key == '7'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('n');}  //name
      else if(key == '8'){Keyboard.press(ctrl);Keyboard.press('r');}  //route
      else if(key == '9'){Keyboard.press(ctrl);Keyboard.press('t');}  //text
      else if(key == '0'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('v');}  //value
      else if(key == '*'){Keyboard.press(shift);Keyboard.press(ctrl);Keyboard.press('r');}  //ripup
      else if(key == '#'){Keyboard.press(alt);Keyboard.press(f2);}  //window fit
    }
  }
}

No comments:

Post a Comment