logo

한국어

게시판






조회 수 341 추천 수 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² Views3757
    read more
  2. 키보드랩 이용규정

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

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

    Date2014.06.03 Byduck0113 Views40813
    read more
  5. 스위치 1개 교체..

    Date2022.02.26 BySkySafe™ Views336
    Read More
  6. 이번에 펜슬형 미니전동드라이버를 구매했습니다.

    Date2018.07.26 By힝힝홍힝 Views336
    Read More
  7. 곧 블랙프라이데이 인데. 사실것들 정하셨나요?

    Date2018.11.17 Bywithjoys Views337
    Read More
  8. 은축은 역방향에도 체리높이 간섭이 없습니다

    Date2019.07.08 By Views337
    Read More
  9. 와.. 키랩 복권 1등 당첨이 되기도 하는군요...

    Date2018.07.10 By철빵e Views339
    Read More
  10. gh60 보드에서 dynamic macro 사용하기

    Date2018.04.08 By곰돌순아빠 Views341
    Read More
  11. 다들 선호하시는 키압 또는 스프링이 있으신가요?

    Date2018.10.16 By용인뚜잉 Views342
    Read More
  12. 해골 키캡을 만들자

    Date2018.05.23 ByOVERFLOW Views342
    Read More
  13. 기계식 키보드는 10만원이 넘는 키보드가 좋은 것 같습니다.

    Date2018.08.01 ByKitCat Views343
    Read More
  14. 아콘에서 FX다이킷 미달이 판매하네용

    Date2020.03.21 By바이퍼 Views345
    Read More
  15. flx virgo r2 무료로 양도드립니다.

    Date2022.09.26 By감자나라 Views345
    Read More
  16. 키보드가 두꺼우면(높이가 높으면) 좀 불편하지 않나요?

    Date2019.05.13 Bydrugfish Views347
    Read More
  17. 키보드 하우징 설계 강좌를 완성하였습니다

    Date2019.07.04 By테레비2 Views348
    Read More
  18. 볼트 1개만 구합니당 ㅜㅠ

    Date2018.01.27 By그렇다면 Views348
    Read More
  19. mt3 serika 영각 VS 일각

    Date2020.08.29 ByTAU(구:홍들) Views349
    Read More
  20. 키보드 추천 부탁드립니다.!

    Date2018.04.23 By짱구박사 Views351
    Read More
  21. 미니키보드용 하프 패드. 함 그려 봤습니다.

    Date2018.04.29 Bybenkei Views351
    Read More
  22. 바이퍼 이글에서 ISO엔터 쓰실 분 주의사항

    Date2020.04.28 By흰둥이친구 Views352
    Read More
  23. 4월21일!! 광주 전남 키보드 모임 "광전사 2회" 2차 공지. D-10

    Date2018.04.11 By산류 Views352
    Read More
  24. kbdfans

    Date2019.01.25 Bysince Views352
    Read More
목록
Board Pagination Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 216 Next
/ 216