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 해도 되더군요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 2022년 7월 1일부로 회원 정리 안내 12 아침에™⇔N² 2022.06.09 3325
공지 키보드랩 이용규정 아침에™⇔N² 2021.11.22 3581
공지 [공제/공구] 가격/품목 등 정보 61 철혈마제 2015.03.09 36406
공지 키보드랩 사용주의사항. 11 duck0113 2014.06.03 40400
3520 인조대리석(하이막스) 하우징 키보드를 제작해봐야 겠어요.. 15 file 슈퍼두퍼 2018.04.13 695
3519 안녕하세요? 대구분들은 혹시 없으신가요? 25 빌드플레이트 2018.04.13 393
3518 GMK 9009 구하는게 꿈인데요. 이 조합 어떨까요? 11 file 이발관형 2018.04.13 685
3517 5년만에 새 주력 키보드 하나 구입했습니다 2 키도리 2018.04.12 611
3516 급 먹자모임 3 고구마군 2018.04.12 387
3515 엔승 신제품? 11 SilentBlack 2018.04.12 705
3514 키보드랩 홈페이지에서 갤러리 게시물의 제목이 잘 안 보입니다. 4 file KitCat 2018.04.12 323
3513 키랩에 성남 분들 많이 계신 것 같은데요 ~ ㅎㅎ 34 마리네 2018.04.11 478
3512 SA키캡에 어울리는 스위치는 어떤 거라고 생각하세요? 13 고펑 2018.04.11 465
3511 4월21일!! 광주 전남 키보드 모임 "광전사 2회" 2차 공지. D-10 11 file 산류 2018.04.11 339
3510 한국엔 키캡 찍는 회사들이 없는 걸까요.. 9 Baby 2018.04.11 669
3509 vortex race 3 축 잘못 골랐네요 2 인빅터스 2018.04.11 298
3508 레오폴트 660m 그라파이트 질렀슴다~ 2 file 탱구형 2018.04.11 348
3507 LedZep 수령했습니다. 15 file 사랑나무 2018.04.09 515
3506 Marvo KG935 오테뮤 적축 4 xDeliciouSx 2018.04.08 294
3505 다들 무탈하셧나요. ^^; 예전 가슴 아팠던 글을 적었었지요. 42 file 낑꽁이 2018.04.08 795
» gh60 보드에서 dynamic macro 사용하기 3 곰돌순아빠 2018.04.08 332
3503 LedZep 오늘 도착했네요 6 file nova9 2018.04.07 394
3502 오랜만에 키보드 추가해서 들어와보네요 13 file Alamo_ 2018.04.06 501
3501 [나눔인증샷] 민승희님 동화책 나눔 인증샷 3 file 재아 2018.04.06 318
목록
Board Pagination Prev 1 ... 35 36 37 38 39 40 41 42 43 44 ... 215 Next
/ 215