logo

한국어

게시판






조회 수 332 추천 수 3 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

안녕하세요. 

커스텀 키보드에 얼마전에 입문한 초보입니다.

얼마전에 gh60보드를 이용하여 첫 커스텀을 만들면서, easyAVR을 이용하여 키맵을 할 경우 몇가지 불편한 점이 있어서...

이번에 QMK firmware를 이용해서,  펌웨어를 올렸던 경험을 공유하려고 몇글자 적어봅니다.

오히려, 별로 안좋은 가이드가 될 수 있는데... 고수분들께서 잘 수정 해줄 거라 믿고 작성하여 봅니다.


펌웨어 컴파일 환경은 MacOS High Sierra 입니다.


기존에 easyAVR을 통해서 키보드 키매핑을 하고 컴웨어를 올린 경우, 다음과 같은 문제점이 있었습니다..


1. 전원을 끌때마다 LED 세팅이 초기화 됨. 

LED를 꺼 놓은 경우에도, 절전 모드로 들어 갔다가 온 경우 LED가 다시 켜짐. 

이거 의외로 생각 보다 짜증이 납니다.


2. Dynamic Macro 기능을 사용 할 수 없음.

매크로 기능은 아직 레코딩을 하지 않아서 모르겠지만... 언제가 쓸지도 몰라서 일단은 사용하고 싶어짐. 


그래서 찾아보니, QMK를 이용해서 펌웨어를 빌딩한 경우 이러한 기능을 사용할 수 있다는 것을 알게 되었습니다.


https://www.gitbook.com/book/qmk/firmware

여기에 있는 것 처럼 설치를 해주면 됩니다.

Mac에 있는 brew나 리눅스는 apt를 이용하면 쉽게 설치가 가능할 것 같습니다. 


아래와 같이 keymap 파일을 만들어 주고, 실행해줍니다.

다른 사람들이 만들어놓은 키맵들이 친절히 있으니 참고하시면 어렵지 않게 코딩을 할 수 있습니다.

저의 경우에는 키맵 넣는거도 귀찮아서...

https://kbfirmware.com/

여기에서 키맵을 작성하고, 코드를 다운 다운 받아서 필요한 파일만 카피해서 사용하였습니다.


led의 경우에도 숨쉬는 것 같은 작동을 하게 만들어 주기 위해, config파일도 수정해 주었습니다.

빨간색으로 색칠된 부분이 추가해준 부분입니다.


~/qmk_firmware/keyboards/satan/config.h

/*

Copyright 2012 Jun Wako <wakojun@gmail.com>


This program is free software: you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation, either version 2 of the License, or

(at your option) any later version.


This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

GNU General Public License for more details.


You should have received a copy of the GNU General Public License

along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/


#ifndef CONFIG_H

#define CONFIG_H


#include "config_common.h"


/* USB Device descriptor parameter */

#define VENDOR_ID       0xFEED

#define PRODUCT_ID      0x6060

#define DEVICE_VER      0x0003

#define MANUFACTURER    SATAN

#define PRODUCT         GH60

#define DESCRIPTION     QMK keyboard firmware for Satan GH60 with WS2812 support


/* key matrix size */

#define MATRIX_ROWS 5

#define MATRIX_COLS 14


// ROWS: Top to bottom, COLS: Left to right


#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }

#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }

#define UNUSED_PINS


#define BACKLIGHT_PIN B6


/* COL2ROW or ROW2COL */

#define DIODE_DIRECTION COL2ROW


/* define if matrix has ghost */

//#define MATRIX_HAS_GHOST


/* Set 0 if debouncing isn't needed */

#define DEBOUNCING_DELAY 5


/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */

#define LOCKING_SUPPORT_ENABLE

/* Locking resynchronize hack */

#define LOCKING_RESYNC_ENABLE


/* key combination for command */

#define IS_COMMAND() ( \

    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \

)


/* Backlight configuration

 */

#define BACKLIGHT_LEVELS 4

#define BACKLIGHT_BREATHING

#define BREATHING_PERIOD 5

/* Underlight configuration

 */


#define RGB_DI_PIN E2

#define RGBLIGHT_ANIMATIONS

#define RGBLED_NUM 8     // Number of LEDs

#define RGBLIGHT_HUE_STEP 10

#define RGBLIGHT_SAT_STEP 17

#define RGBLIGHT_VAL_STEP 17


/*

 * Feature disable options

 *  These options are also useful to firmware size reduction.

 */


/* disable debug print */

//#define NO_DEBUG


/* disable print */

//#define NO_PRINT


/* disable action features */

//#define NO_ACTION_LAYER

//#define NO_ACTION_TAPPING

//#define NO_ACTION_ONESHOT

//#define NO_ACTION_MACRO

//#define NO_ACTION_FUNCTION


#endif


이 파일은 새로 작성한 파일입니다.

빨간색으로 색칠된 부분이 dynamic macro를 사용하기 위해서 필요한 부분입니다.

#include "dynamic_macro.h" 는 꼭 enum을 선언한 후에 호출 해 주세요.


~/qmk_firmware/keyboards/satan/keymaps/coart/keymaps.c

#include "satan.h"


#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))


enum custom_keycodes {

    DYNAMIC_MACRO_RANGE = SAFE_RANGE,

};


#include "dynamic_macro.h"


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

KEYMAP_WEB(

KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, 

KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, 

KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, 

KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(1), KC_LSFT, 

KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_GRV, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL),


KEYMAP_WEB(

KC_POWER, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, 

KC_CAPS, DYN_MACRO_PLAY1, DYN_REC_START1, DYN_REC_STOP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, 

KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, 

KC_TRNS, BL_TOGG, BL_STEP, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, 

KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)

};


bool process_record_user(uint16_t keycode, keyrecord_t *record) {

    if (!process_record_dynamic_macro(keycode, record)) {

        return false;

    }

    return true;

}



컴파일 하는 방법은 make keyboard:keymap 으로 하면 됩니다..

예를들어, 저는 satan 보드를 사용하고 있고, 작성한 키맵은 coart인 경우 다음과 같습니다.


> make satan:coart


그러면, satan_coart.hex파일이 컴파일되어 나오고 이것을 올리면 작업이 끝나게 됩니다.


펌웨어를 올리는 방법은 다음과 같습니다.

 

sudo dfu-programmer atmega32u4 erase

sleep 10

sudo dfu-programmer atmega32u4 flash /path/to/firmware.hex

sudo dfu-programmer atmega32u4 launch


커스텀 LED효과도 프로그래밍 해보고 싶은데... 일단은 오늘은 졸려서 여기까지만 하겠습니다. 



  • ?
    테레비2 2018.04.08 12:47
    능력자 한 분 추가요!
  • profile
    Stardust 2018.04.08 22:19
    오 조만간에 QMK 펌웨어랑 키맵 할일이 있는데 많은 도움이 될 것 같습니다. 감사합니다.
  • ?
    곰돌순아빠 2018.04.08 23:01
    config.h의 경우 하위 폴더에서 다시 config.h를 만들고 기판의 config.h를 import 해도 되더군요.

  1. 2022년 7월 1일부로 회원 정리 안내

    Date2022.06.09 By아침에™⇔N² Views3336
    read more
  2. 키보드랩 이용규정

    Date2021.11.22 By아침에™⇔N² Views3583
    read more
  3. [공제/공구] 가격/품목 등 정보

    Date2015.03.09 By철혈마제 Views36439
    read more
  4. 키보드랩 사용주의사항.

    Date2014.06.03 Byduck0113 Views40413
    read more
  5. LedZep 수령했습니다.

    Date2018.04.09 By사랑나무 Views515
    Read More
  6. Marvo KG935 오테뮤 적축

    Date2018.04.08 ByxDeliciouSx Views294
    Read More
  7. 다들 무탈하셧나요. ^^; 예전 가슴 아팠던 글을 적었었지요.

    Date2018.04.08 By낑꽁이 Views796
    Read More
  8. gh60 보드에서 dynamic macro 사용하기

    Date2018.04.08 By곰돌순아빠 Views332
    Read More
  9. LedZep 오늘 도착했네요

    Date2018.04.07 Bynova9 Views394
    Read More
  10. 오랜만에 키보드 추가해서 들어와보네요

    Date2018.04.06 ByAlamo_ Views501
    Read More
  11. [나눔인증샷] 민승희님 동화책 나눔 인증샷

    Date2018.04.06 By재아 Views318
    Read More
  12. 이번 레오폴드 660m 그라파이트 시리즈...

    Date2018.04.05 By이발관형 Views588
    Read More
  13. 누가 이거 좀 해석해주실 분 있나요? 전 이분 의도가 뭔지 잘 모르겠어서요..

    Date2018.04.04 By은하수 Views1223
    Read More
  14. 기쁜마음으로 kira 키보드 질렀습니다.

    Date2018.04.03 Bysin Views795
    Read More
  15. LedZep 외국에선 받았나보네요.

    Date2018.04.03 By치명적까마중 Views719
    Read More
  16. 가끔 댓글달 때 '내용값은 필수입니다' 라고 에러메세지..

    Date2018.04.03 By고펑 Views286
    Read More
  17. 4월21일!! 광주 전남 키보드 모임 "광전사 2회" 1차 공지.

    Date2018.04.02 By산류 Views720
    Read More
  18. 민망한 나눔(?)합니다

    Date2018.04.01 By김지호 Views758
    Read More
  19. Solarized Dark 실물

    Date2018.03.31 By이삭 Views910
    Read More
  20. 결국 Vortex race 3 청축 질렀습니다

    Date2018.03.30 By친칠라 Views551
    Read More
  21. 왜 볼텍스 레이스3 적/흑축은 타건영상이 없는걸까요 ㅠㅠ

    Date2018.03.30 By친칠라 Views256
    Read More
  22. 리얼포스 2 영문판은 언제 나올까요?

    Date2018.03.30 By우벽재주인 Views327
    Read More
  23. 요즘 Planck 키보드가 끌리는군요..

    Date2018.03.30 By저압적축 Views430
    Read More
  24. GMK LedZep 실물

    Date2018.03.30 ByHELLDROP Views704
    Read More
목록
Board Pagination Prev 1 ... 36 37 38 39 40 41 42 43 44 45 ... 216 Next
/ 216