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

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 2022년 7월 1일부로 회원 정리 안내 12 아침에™⇔N² 2022.06.09 3757
공지 키보드랩 이용규정 아침에™⇔N² 2021.11.22 3929
공지 [공제/공구] 가격/품목 등 정보 61 철혈마제 2015.03.09 36847
공지 키보드랩 사용주의사항. 11 duck0113 2014.06.03 40813
4048 핌프마이키보드 투표 중인 1976 키캡 5 file SSTINREASON 2015.01.15 3076
4047 필코 이중사출... 16 file 신발날리기 2016.09.03 1440
4046 필코 이색사출을 받았는데... 6 file 홍구홍구 2016.09.10 1158
4045 필드테스트 키캡 당첨자 발표입니다 25 file 포스 2018.02.28 715
4044 픽셀아트 만들어보았습니다. 9 file soju 2016.12.07 1203
4043 픽셀아트 만들어보았습니다 ㅎㅎ.. 9 file B.mini 2017.09.25 741
4042 픽셀아트 따라한 처음작품입니다... 3 file 바코드 2018.06.11 280
4041 플런저 키보드 추천부탁드려요 ^^ 3 file sdkfsdlkf 2014.02.12 4606
4040 플라스틱 보강 느낌이 정말 좋네요. 16 Hframe 2017.05.09 1315
4039 프시케님 주의하세요 22 file 톡톡 2014.06.05 2332
4038 프린터기 무한잉크... 정말이지 쉬운게 아니군요. 13 뚜비뚜비뚜뚜바 2015.01.20 2478
4037 프리오닉 키보드에 스피커가 있더군요... 10 콩바구니 2018.03.10 531
4036 프리미엄 문제는 제품판매에 대한 접근방식의 차이 인것 같습니다 1 금벌레 2017.03.08 1017
4035 프리미엄 거래에 대한 내용 8 장비니 2017.03.09 1383
4034 프리미엄 거래때문에 핫하네요. 의견 한번 적어봅니다. 12 꼴영민 2018.06.28 678
4033 프로필사진 양원 2016.08.31 1129
4032 프로필 사진 변경.... 3 뚜비뚜비뚜뚜바 2014.04.01 2108
4031 프로즌님 이벤트 수령샷 2 file 싱싱쭈꾸미 2015.01.06 1588
4030 프로그램 만드시는 분들께 부탁한가지.......,ㅡ,ㅡ ㅋ 20 아침에™ 2014.10.27 2852
4029 프라모델 세계도 보면 키캡구매와 별차이가 없는듯... 15 file 뚜비뚜비뚜뚜바 2014.10.14 2531
목록
Board Pagination Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 216 Next
/ 216