Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned int KEY_LEFTCURLYBRACE = (unsigned int)('{');
- unsigned int KEY_RIGHTCURLYBRACE = (unsigned int)('}');
- unsigned int KEY_SMALLERTHAN = (unsigned int)('<');
- unsigned int KEY_BIGGERTHAN = (unsigned int)('>');
- unsigned int KEY_WQUOTE = (unsigned int)('`');
- unsigned int KEY_COLON = (unsigned int)(':');
- unsigned int KEY_QUESTIONMAKR = (unsigned int)('?');
- unsigned int KEY_TILDE_M = (unsigned int)('~');
- unsigned int KEY_DOUBLEQUOTE = (unsigned int)('"');
- unsigned int KEY_BAR = (unsigned int)('|');
- int Pressed[] = {false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false};
- unsigned int Keys[] = {0, MODIFIERKEY_GUI,MODIFIERKEY_CTRL ,MODIFIERKEY_ALT ,0,0,0,KEY_SPACE,MODIFIERKEY_RIGHT_ALT,MODIFIERKEY_RIGHT_CTRL,KEY_LEFT,KEY_DOWN,KEY_RIGHT,
- 0,MODIFIERKEY_RIGHT_SHIFT,0,KEY_Z,KEY_X,KEY_C,KEY_V,KEY_B,KEY_N,KEY_M,MODIFIERKEY_LEFT_SHIFT,KEY_UP,0,
- 0,KEY_A,KEY_CAPS_LOCK,KEY_S,KEY_D,KEY_F,KEY_G,KEY_H,KEY_J,KEY_K,KEY_L,KEY_ENTER,0,
- 0,KEY_Q,KEY_TAB,KEY_W,KEY_E,KEY_R,KEY_T,KEY_Y,KEY_U,KEY_I,KEY_O,KEY_P,KEY_BACKSPACE,
- KEY_ESC,KEY_2,KEY_1,KEY_3,KEY_4,KEY_5,KEY_6,KEY_7,KEY_8,KEY_9,KEY_0,KEY_MINUS,KEY_EQUAL};
- unsigned int KeysFn[] = {0, MODIFIERKEY_GUI,MODIFIERKEY_CTRL ,MODIFIERKEY_ALT ,0,0,0,KEY_SPACE,MODIFIERKEY_RIGHT_ALT,MODIFIERKEY_RIGHT_CTRL,KEY_LEFT,KEY_DOWN,KEY_RIGHT,
- 0,MODIFIERKEY_RIGHT_SHIFT,0,KEY_F9,KEY_F10,KEY_F11,KEY_F12,KEY_END,KEY_PAGE_DOWN,KEY_BAR,MODIFIERKEY_LEFT_SHIFT,KEY_UP,0,
- 0,KEY_F5,KEY_CAPS_LOCK,KEY_F6,KEY_F7,KEY_F8,KEY_INSERT,KEY_HOME,KEY_PAGE_UP,KEY_SLASH,KEY_BACKSLASH,KEY_ENTER,0,
- 0,KEY_F1,KEY_TAB,KEY_F2,KEY_F3,KEY_F4,KEY_T,KEY_PRINTSCREEN,KEY_U,KEY_TILDE_M,KEY_DOUBLEQUOTE,KEY_QUOTE,KEY_DELETE,
- KEY_ESC,KEY_LEFT_BRACE,KEY_WQUOTE,KEY_RIGHT_BRACE,KEY_LEFTCURLYBRACE,KEY_RIGHTCURLYBRACE,KEY_SMALLERTHAN,KEY_BIGGERTHAN,KEY_SEMICOLON,KEY_COLON,KEY_QUESTIONMAKR,KEY_COMMA,KEY_PERIOD};
- unsigned int KeysPr[] = {0, MODIFIERKEY_GUI,MODIFIERKEY_CTRL ,MODIFIERKEY_ALT ,0,0,0,KEY_SPACE,KEY_HOME,KEY_END,KEY_LEFT,KEY_DOWN,KEY_RIGHT,
- 0,MODIFIERKEY_RIGHT_SHIFT,0,KEY_Z,KEY_X,KEY_C,KEY_V,KEY_B,KEY_N,KEY_M,KEY_EQUAL,KEY_UP,0,
- 0,KEY_A,KEY_CAPS_LOCK,KEY_S,KEY_D,KEY_F,KEY_G,KEY_H,KEY_J,KEY_K,KEY_L,KEY_ENTER,0,
- 0,KEY_Q,KEY_TAB,KEY_W,KEY_E,KEY_R,KEY_T,KEY_Y,KEY_U,KEY_I,KEY_O,KEY_P,KEY_BACKSPACE,
- KEY_ESC,KEY_2,KEY_1,KEY_3,KEY_QUOTE,KEY_DOUBLEQUOTE,KEY_SMALLERTHAN,KEY_BIGGERTHAN,KEY_SEMICOLON,KEY_COLON,KEY_QUESTIONMAKR,KEY_COMMA,KEY_PERIOD};
- bool IsCaps[] = {false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,true,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false};
- bool IsFn[] = {false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,true,
- false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false};
- bool IsPr[] = {false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,true,
- false,false,false,false,false,false,false,false,false,false,false,false,false,
- false,false,false,false,false,false,false,false,false,false,false,false,false};
- bool isRowInput = false;
- const int RowCount = 5;
- const int ColCount = 13;
- const int Rows[] = {0, 1, 2, 3, 4};
- const int Cols[] = {5,6,7,8,9,10,12 ,13 ,14 ,15 ,16 ,17, 18};
- bool CapsLockOn = false;
- const int CapsLED = 11;
- bool FnOn = false;
- const int FnLED = 19;
- bool PrOn = false;
- const int PrLED = 20;
- void setup()
- {
- Serial.begin(9600);
- Serial.println("Startin up...");
- pinMode(CapsLED, OUTPUT);
- pinMode(FnLED, OUTPUT);
- pinMode(PrLED, OUTPUT);
- digitalWrite(CapsLED, LOW);
- digitalWrite(FnLED, LOW);
- digitalWrite(PrLED, LOW);
- for (int i = 0; i < RowCount; i++)
- {
- if(isRowInput)
- {
- pinMode(Rows[i], INPUT);
- digitalWrite(Rows[i], HIGH);
- }
- else
- {
- pinMode(Rows[i], OUTPUT);
- digitalWrite(Rows[i], LOW);
- }
- }
- for (int i = 0; i < ColCount; i++)
- {
- if(isRowInput)
- {
- pinMode(Cols[i], OUTPUT);
- digitalWrite(Cols[i], LOW);
- }
- else
- {
- pinMode(Cols[i], INPUT);
- digitalWrite(Cols[i], HIGH);
- }
- }
- Keyboard.begin();
- }
- int Map(int row, int col)
- {
- return ((13 * row) + col);
- }
- bool CheckButton(int Row, int Col)
- {
- if(isRowInput)
- {
- for(int i = 0; i < ColCount; i++)
- {
- digitalWrite(Cols[i], HIGH);
- }
- digitalWrite(Cols[Col], LOW);
- return digitalRead(Rows[Row]) == LOW;
- }
- else
- {
- for(int i = 0; i < RowCount; i++)
- {
- digitalWrite(Rows[i], HIGH);
- }
- digitalWrite(Rows[Row], LOW);
- return digitalRead(Cols[Col]) == LOW;
- }
- }
- void Run()
- {
- for(int i = 0; i < RowCount; i++)
- {
- for(int j = 0; j < ColCount; j++)
- {
- if(CheckButton(i,j) && !Pressed[Map(i,j)])
- {
- Serial.print("[");
- Serial.print(i);
- Serial.print(",");
- Serial.print(j);
- Serial.println("] is Pressed!");
- if(FnOn)
- {
- Keyboard.press(KeysFn[Map(i,j)]);
- }
- else
- {
- if(PrOn)
- {
- Keyboard.press(KeysPr[Map(i,j)]);
- }
- else
- {
- Keyboard.press(Keys[Map(i,j)]);
- }
- }
- Pressed[Map(i,j)] = true;
- if (IsCaps[Map(i,j)])
- CapsLockOn = !CapsLockOn;
- if(IsFn[Map(i,j)])
- FnOn = !FnOn;
- if(IsPr[Map(i,j)])
- PrOn = !PrOn;
- }
- if(!CheckButton(i,j))
- {
- Keyboard.release(KeysFn[Map(i,j)]);
- Keyboard.release(KeysPr[Map(i,j)]);
- Keyboard.release( Keys[Map(i,j)]);
- Pressed[Map(i,j)] = false;
- }
- }
- }
- }
- void SetLED()
- {
- if(CapsLockOn)
- {
- digitalWrite(CapsLED, HIGH);
- }
- else
- {
- digitalWrite(CapsLED, LOW);
- }
- if(FnOn)
- {
- digitalWrite(FnLED, HIGH);
- }
- else
- {
- digitalWrite(FnLED, LOW);
- }
- if(PrOn)
- {
- digitalWrite(PrLED, HIGH);
- }
- else
- {
- digitalWrite(PrLED, LOW);
- }
- }
- void loop()
- {
- Run();
- SetLED();
- }
Advertisement
Add Comment
Please, Sign In to add comment