[Arduino] - 로스트 아크를 위한 4x4 키패드



게임을 즐길때는 nkey 싱글핸드 게이밍 키보드를 주로 사용한다.
fps rpg 를 가리지 않고 대부분의 게임에서 만족스러운 키보드다.
하지만 게임 중에는 한 두개 정도의 키가 부족해서 불편한 경우도있어 아쉬운 점도 있었다.
그때든 생각이 10개정도의 키만 따로 빼놓고 쓰고 싶다였다.
그렇게 만들게 된 것이 검은사막에 쓸려고 만든 4x4 키패드였는데 검은사막을 안하게되면서 키패드의 활용도가 점점 없어져갔다.

최근에 즐기기 시작한 게임이 새겼는데 바로 로스트 아크다.
rpg 게임 답게 열어봐야할 창들이 많고 단축키들도 없어서는 안되는 키들이였다.
옷장속에 있던 4x4 키패드를 다시 꺼내와 한 손 키보드에 없는 키들만 모아서 키맵핑을 해주었다.



키 배열을 따로 외우기 싫기 때문에 쿼티 키보드의 배열을 신경써서 만들었다.
로스트 아크는 Alt를 이용한 조합키가 대부분이다.
Alt 넣고보니 옆자리가 비고 쓸쓸해 보여서 Ctrl도 넣어주었다.
투명한 키는 return이다.



또 함께 사용할 기회가 생겼다니 쓰레기를 만든것 같지 않아 기분이 좋다.
이 키패드는 매크로 기능은 포함하고 있지 않고 단순한 키입력만 구현되어있다.
예전코드는 여기에서 확인 할 수 있다.

  • 로스트 아크 4x4 키패드 소스코드

/* @file Keypad.ino
|| @version 1.1
|| @author Heejoong
|| #2018-12-04
*/
#include <Keyboard.h>
const byte ROWS = 4;  //four rows
const byte COLS = 4;  //four columns
//define keypad
uint8_t keyPad[ROWS][COLS] = {
  {'l','k','j','h'}, //1
  {'i','u','y','t'}, //0
  {'m','n','c',KEY_RETURN}, //2
  {KEY_LEFT_ALT,KEY_LEFT_CTRL,'x','z'}  //3
};
byte aPin[ROWS] = {A0, A1, A9, A10}; //connect to the row pin
byte dPin[COLS] = {0 ,1 ,2 ,3}; //connect to the col pin
void setup() {
  Serial.begin(9600);
  Keyboard.begin();
  for(char a = 0 ;a < 4 ;a++ ){
      pinMode(aPin[a], INPUT_PULLUP);
  }
  for(char d = 0 ;d < 4 ;d++ ){
      pinMode(dPin[d], OUTPUT);
  }
}
void loop() {
  for (char x = 0; x < 4; x++) {
    for(char y = 0; y < 4; y++) {
      digitalWrite(x, LOW);
      if (digitalRead(aPin[y])) Keyboard.release(keyPad[x][y]);
      else Keyboard.press(keyPad[x][y]);
      digitalWrite(x, HIGH);
    }
  }
}
cs

Comments

Popular posts from this blog

[Python] - 블루투스 모듈 HC-06의 MAC 주소를 이용하여 통신 포트 찾기

[POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

[Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결

[Raspberry Pi] - 라즈베리 파이에서 멀티미디어 감상에 적절한 비디오 세팅