logo

한국어

게시판






조회 수 331 추천 수 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 3205
공지 키보드랩 이용규정 아침에™⇔N² 2021.11.22 3487
공지 [공제/공구] 가격/품목 등 정보 61 철혈마제 2015.03.09 36265
공지 키보드랩 사용주의사항. 11 duck0113 2014.06.03 40291
4278 몬스긱 m5가 사망했습니다.. 5 file 덜덜덜 2023.12.02 415
4277 기계식키보드 중에 저렴한건 어떤게 있을까요 1 이지섭 2023.12.02 168
4276 하.. 5 file 아침에™⇔N² 2023.11.20 349
4275 야광키보드 좋긴 한데 5 이지섭 2023.11.17 257
4274 키보드랩 11월소식 9 아침에™⇔N² 2023.11.15 519
4273 다른 키보드 커뮤니티에 올린 다신흑 제작기 글 5 텐숀포스 2023.11.12 662
4272 한탕주의 1 file 見利思義 2023.11.11 237
4271 가입하고 처음 장터글 올려보려고하니 3 텐숀포스 2023.11.10 134
4270 블랙프라이데이라는데 5 아침에™⇔N² 2023.11.10 157
4269 현명한소비란 5 아침에™⇔N² 2023.11.07 168
4268 밖에 비가 많이 오네요 3 이지섭 2023.11.05 92
4267 Legends Never Die 見利思義 2023.11.03 132
4266 오늘 문득 드는 생각입니다 16 그저먹을거 2023.10.28 256
4265 도배질 1 file 見利思義 2023.10.19 215
4264 흐흐흐 4 file 見利思義 2023.10.16 174
4263 구구 6 file 見利思義 2023.10.16 153
4262 지름게시판이 없다니....( 알리 현대카드 ) 4 file 見利思義 2023.10.13 225
4261 자판기가 왜 안보일까요? 16 그저먹을거 2023.10.09 380
4260 요즘 폰으로 불법적인 거래가 많은듯하니 조심하는게 좋겠습니다 1 몽삐쥬 2023.10.02 227
4259 아무도 관심 없을(?) DCS 하이퍼퓨즈 복각 소식 업데이트... 1 file Kiruas 2023.09.19 256
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 215 Next
/ 215