팁 & 테크
저는 애플 스탠다드 키보드(m0116) 사용자 입니다.
이 키보드는 ADB로 연결되기 때문에 컨버터가 필요 했으며 기계식흑설탕님의 글(http://www.kbdmania.net/xe/8860021)을 보고
아두이노를 이용한 ADB-USB 컨버터를 제작하여 사용했었습니다.
제가 오랫동안 키보드를 두들겨 왔지만 -, =, [, ], _(underscore), +, {, } 이 문자들은 속타를 하는데 항상 방해를 해왔기 때문에
해결책으로 FN 키를 정해두고 q( * ), w( + ), e( - ), r( = ), s( [ ), f( ] ) 로 정의해서 사용 중 이었지만
여전히 shift 키와 함께 눌러야 하는 _(underscore), {, } 이 문자들은 불편했습니다.
그래서 얼마전에 http://www.kbdmania.net/xe/11457355 질문 글을 올렸고 Ley 님의 도움으로 해결해서 그 방법을 공유하고자 합니다.
아래의 코드는 tmk_keyboard(https://github.com/tmk/tmk_keyboard) 오픈소스를 이용해서 적용하였습니다.
keymap_plain.c 파일(제가 애플 스탠다드 키보드에 적용해서 사용하는 코드입니다)
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR, SLCK, PAUS, VOLD, VOLU, MUTE, PWR,
LGUI, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS, EQL, BSPC, INS, HOME, PGUP, NLCK, EQL, PSLS, PAST,
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, FN0, DEL, END, PGDN, HOME, UP, PGUP, PMNS,
LCTL, A, S, D, F, G, H, J, K, L, SCLN, QUOT, ENT, LEFT, DOWN, RGHT, PPLS,
LSFT, NUBS, Z, X, C, V, B, N, M, COMM, DOT, SLSH, RSFT, FN1, END, DOWN, PGDN,
LCAP, LALT, LGUI, SPC, APP, RALT,RCTL, RGUI, BSLS, RALT, BSPC, PDOT, PENT
),
[1] = KEYMAP(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR, SLCK, PAUS, VOLD, VOLU, MUTE, PWR,
LGUI, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, DEL, INS, HOME, PGUP, NLCK, EQL, PSLS, PAST,
TAB, PAST, PPLS, MINS, EQL, FN2, NO, HOME, UP, PGUP, PSCR, SLCK, PAUS, FN0, DEL, END, PGDN, P7, P8, P9, PMNS,
LCTL, FN3, LBRC, P0, RBRC, FN4, END, LEFT, DOWN, RGHT, PGDN, NO, BSLS, P4, P5, P6, PPLS,
LSFT, NUBS, P1, P2, P3, P4, P5, P6, P7, P8, P9, P0, RSFT, FN1, P1, P2, P3,
LCAP, LALT, LGUI, SPC, APP, RALT, RCTL, RGUI, INS, RALT, P0, PDOT, PENT
),
[2] = KEYMAP(
ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR, SLCK, PAUS, VOLD, VOLU, MUTE, PWR,
LGUI, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BSPC, INS, HOME, PGUP, NLCK, EQL, PSLS, PAST,
TAB, NO, NO, UP, NO, NO, NO, NO, UP, NO, PSCR, SLCK, PAUS, FN0, DEL, END, PGDN, P7, P8, P9, PMNS,
LCTL, NO, LEFT, DOWN, RGHT, NO, NO, LEFT, DOWN, RGHT, NO, NO, NO, P4, P5, P6, PPLS,
LSFT, NUBS, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, RSFT, FN1, P1, P2, P3,
LCAP, LALT, LGUI, SPC, APP, RALT, RCTL, RGUI, NO, RALT, P0, PDOT, PENT
),
};
const action_t PROGMEM fn_actions[] = {
ACTION_LAYER_MOMENTARY(1), // FN0
ACTION_LAYER_MOMENTARY(2), // FN1
ACTION_MODS_KEY(MOD_LSFT, KC_MINUS), // FN2 : shift + '-'
ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // FN3 : shift + '['
ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // FN4 : shift + ']'
};
위 코드에 보시면 FN2, FN3, FN4 로 펑션키를 만들어서 이 펑션키가 눌러지면 shift+’-‘, shift+’[‘, shift+’]’
키가 실행되도록 했더니 잘 작동하였습니다.
즉,
FN0 + t 를 누르면 _ (underscore)
FN0 + a 를 누르면 {
FN0 + g 를 누르면 }
이제는 저 문자들이 나와도 껄끄럽지가 않네요. ㅎㅎ
문제 해결하신것은 축하드립니다!