100% 당첨매일매일 출석 도장 찍고 포인트 받아가세요
  • X86 통합검색
    X86 기상정보
    흐림 22

    중구 필동, 13:00 현재

    현재바람
    남 1m/s
    현재습도
    52%
    통합대기
    보통

    X86 운영알림판
    공개 글쓴이가 전체공개한 글 입니다.
    추천5개  팔로우하기 (현재1명)

    안녕하세요?

    자잘한 팁이지만 필요한 분들이 있을까 싶어 올려봅니다^^


    우선 저는 Apple의 매직 키보드를 사용하지 않습니다.

    펜타그래프의 키감도 안 맞지만 키캡과 키보드 자체가 너무 낮아서 손목에 무리가 오더군요;;

    (그래서 장시간 사용시 맥북에도 별도 키보드를 붙여 쓰는 중입니다)


    그래서 커스터맥에서도 일반 윈도우용 104키(영문) 혹은 106키(한글)를 사용 중 입니다.

    (거기에 많이들 사용하실테지만 Karabiner Elements를 통해 좌측 CMD와 OPT 위치를 바꿔 사용 중입니다)



    그 와중 Karabiner에서 Complex Mod도 가능해졌고(설정을 안열어보다보니 최근에서야 알았네요),

    놀고있는 한/영과 한자키(104키의 경우 Alt와 윈도우 키가 되겠네요)에 매핑이나 해볼까 싶어 코딩을 해보았습니다.


    야매 코딩을 하다 설마 싶어 검색을 해봤더니 이미 잘 만들어진 코드들이 있더군요...

    리얼맥 사용자 분들은 그냥 매직키보드 사용하는 분들이 많아 미리 짜둔게 없을거라고 예상을 했더니 아니네요^^;


    아무래도 잘 굴러가는 코드들 수정하는게 편하겠지요?^^;  

    코딩을 잘 모르시는 분들을 위해서, 그리고 숙련자 분들은 디버깅이 편하시도록(!) 최대한 디테일하게 적어둡니다.


    별건 아닌 내용인데 관련 자료까지 찾으려면 번거로운... 그런 내용이라 큰 도움은 안될수도 있습니다^^;

    그래도 맥 활용에 모쪼록 도움되시길 바랍니다.



    * 참조

    - https://blog.naver.com/hankboy/221200885234

    - https://pqrs.org/osx/karabiner/complex_modifications/

    - http://weibeld.net/mac/remap-presenter-keys.html


    * Karabiner json Ref. Manual(Structure 등)

    - https://pqrs.org/osx/karabiner/json.html#root-data-structure




    • 하단의 모든 json 파일들은 리얼포스 104키와 106키를 베이스로 작성되었으니, 본인 키보드 키값에 맞춰 수정이 필요할 수도 있습니다.


    ENG104-EngKor&CN.json 

    KOR106-EngKor&CN.json 

    Transmit_Delete_key.json 




    0. 전제 조건

    - 커스터맥 혹은 리얼맥에 윈도우 키보드를 사용 중인 경우(104 혹은 106키)

    - 우측 CMD, OPT, CTRL 쪽에는 손이 잘 안가는 경우

    - 한영 변환에 Cmd+Space, Capslock, Shift+Space 등을 사용할 생각이 없는 경우

    - '한/영 전환에 우측 Command 혹은 한/영키', '한자 변환에 우측 윈도우 혹은 한자키'를 사용하고 싶은 경우

    - 패러렐즈에서도 한/영과 한자를 별도 설정없이 그대로 사용하고 싶은 경우(AltGr 설정이 안먹거나 번거로운 경우)


    쉽게 말해 만사 귀찮은데 윈도우의 키보드 레이아웃을 그대로 사용하고 싶은 분들^^

    (활용을 하게되면 특정 S/W와 H/W에서 한정된 키 매핑도 가능)





    1. 준비물

    1-1. 키보드(한글 106키 혹은 104키, 통상 윈도우용 키보드)

    1-2. Karabiner Elements(구 Karabiner 및 XML은 시에라부터는 사용 불가)

    기타. Sublime text 같은 에디터류(수정이 필요없거나 약간만 수정한다면 textedit가 있으니 없어도 그만)





    2. 사용 방법

    2-1. 필요한  json 파일 다운로드 혹은 코드를 저장하여 json 생성

    2-2.  json 파일을 Karabiner 해당 폴더에 복사

    2-3. Karabiner Elements의 Complex Modifications 탭에서 Add rule 하여 적용(본인에게 불필요한 키매핑은 Enable 하지 않으면 됨)

    2-4. 끝


    * 맥의 기본 입력소스 변경 단축키를 CTRL+OPT+Space로 변경해두셔야 코드 수정이 필요 없습니다.(4. 이슈 항목 참조)


    * json 파일을 위치시킬 폴더는 다음과 같습니다.

    ~/.config/karabiner/assets/complex_modifications/


    * 패러렐즈의 경우 104키 사용자는 AltGr 설정 하지마시고, 윈도우의 키보드 레이아웃을 101키 타입1(타입2로 선택해야 합니다. 착오입니다) 로만 맞춰주시면

    한/영, 한자 무리없이 적용될 것으로 보입니다.

    (연휴 기간이라 사무실 104키 설정을 확인할 방법이 없군요;; 추후 업데이트)



    * Karabiner Elements의 Complex Modifications 및 Add rule 화면(빨간 원으로 표시된 부분)





    3. 수정 방법

    본인의 키보드에서 해당 json 파일이 적용이 안되는 경우 혹은 뭔가를 더 바꾸고 싶은 경우, 해당 키값의 수정이 필요합니다.

    별도의 키로거가 필요치 아니하며, Karabiner에 딸려오는 Eventviewer를 사용하면 편리합니다.


    3-1. Karabiner EventViewer 실행하여 작동하지 않는 키를 눌러보며 Key name 확인

    3-2. json 파일의 작동이 안되는 해당 부분을 수정 혹은 추가(예: from key_code의 lang1을 right_command로 변경 등)

    3-3. Karabiner 재실행


    * 모든 키보드의 키 값을 제가 알고 있는게 아니기에 수정을 부탁하셔도 한계가 있습니다.

      코드 차근차근 보시면 이름만 바꿔주면 되는 경우가 대부분이니 직접 해보시는 것을 추천합니다. 



    * Karabiner EventViewer 화면


    * 104키 한영 및 한자키 Karabiner Elements json 코드 - ENG104-EngKor&CN.json 파일

    {
    "title": "For Korean Windows 104 Keyboard(Kor/Eng, Hanja Key)",
    "rules": [
    {
    "description": "Change right OPT and CMD to Kor/Eng and Hanja Key in Parallels",
    "manipulators": [
    {
    "type": "basic",
    "from": {
    "key_code": "right_option"
    },
    "to": [
    {
    "key_code": "right_control"
    }
    ],
    "conditions": [
    {
    "type": "frontmost_application_if",
    "bundle_identifiers": [
    "^com\\.parallels\\.desktop$",
    "^com\\.parallels\\.vm$",
    "^com\\.parallels\\.desktop\\.console$",
    "^com\\.parallels\\.winapp\\."
    ]
    }
    ]
    },
    {
    "type": "basic",
    "from": {
    "key_code": "right_command"
    },
    "to": [
    {
    "key_code": "right_option"
    }
    ],
    "conditions": [
    {
    "type": "frontmost_application_if",
    "bundle_identifiers": [
    "^com\\.parallels\\.desktop$",
    "^com\\.parallels\\.vm$",
    "^com\\.parallels\\.desktop\\.console$",
    "^com\\.parallels\\.winapp\\."
    ]
    }
    ]
    }
    ]
    },
    {
    "description": "Change right OPT and CMD key to left CTRL+OPT+space(Kor/Eng) and OPT+enter(Hanja)",
    "manipulators": [
    {
    "from": {
    "key_code": "right_option"
    },
    "to": [
    {
    "key_code": "spacebar",
    "modifiers": [
    "left_control",
    "left_option"
    ]
    }
    ],
    "type": "basic"
    },
    {
    "from": {
    "key_code": "right_command"
    },
    "to": [
    {
    "key_code": "return_or_enter",
    "modifiers": [
    "right_option"
    ]
    }
    ],
    "type": "basic"
    }
    ]
    }
    
    ]
    }


    * 106키 한영 및 한자키 Karabiner Elements json 코드 - KOR106-EngKor&CN.json 파일

    {
    "title": "For Korean Windows 106 Keyboard(Kor/Eng, Hanja Key)",
    "rules": [
    {
    "description": "Change right CMD and OPT to Kor/Eng and Hanja Key in Parallels",
    "manipulators": [
    {
    "type": "basic",
    "from": {
    "key_code": "lang1"
    },
    "to": [
    {
    "key_code": "right_control"
    }
    ],
    "conditions": [
    {
    "type": "frontmost_application_if",
    "bundle_identifiers": [
    "^com\\.parallels\\.desktop$",
    "^com\\.parallels\\.vm$",
    "^com\\.parallels\\.desktop\\.console$",
    "^com\\.parallels\\.winapp\\."
    ]
    }
    ]
    },
    {
    "type": "basic",
    "from": {
    "key_code": "lang2"
    },
    "to": [
    {
    "key_code": "right_option"
    }
    ],
    "conditions": [
    {
    "type": "frontmost_application_if",
    "bundle_identifiers": [
    "^com\\.parallels\\.desktop$",
    "^com\\.parallels\\.vm$",
    "^com\\.parallels\\.desktop\\.console$",
    "^com\\.parallels\\.winapp\\."
    ]
    }
    ]
    }
    ]
    },
    {
    "description": "Change Kor/Eng key to left CTRL+OPT+space(Kor/Eng)",
    "manipulators": [
    {
    "from": {
    "key_code": "lang1"
    },
    "to": [
    {
    "key_code": "spacebar",
    "modifiers": [
    "left_control",
    "left_option"
    ]
    }
    ],
    "type": "basic"
    }
    ]
    },
    {
    "description": "Change Hanja key to option+enter(Hanja)",
    "manipulators": [
    {
    "from": {
    "key_code": "lang2"
    },
    "to": [
    {
    "key_code": "enter",
    "modifiers": [
    "right_option"
    ]
    }
    ],
    "type": "basic"
    }
    ]
    }
    ]
    }
    
    






    4. 이슈 발생 가능 사항


    4-1. 기본 입력 소스 전환 단축키는 Control+Option+Space로 지정된 상황에 맞춰 작성되었으므로, 이에 맞춰 "단축키 변경" 혹은 "코드 수정" 하셔야 합니다.

    * json 미작동시 변경해야 할 부분 - from 혹은 to 값

    {
    "description": "Change Kor/Eng key to left CTRL+OPT+space(Kor/Eng)",
    "manipulators": [
    {
    "from": {
    "key_code": "lang1"
    },
    "to": [
    {
    "key_code": "spacebar",
    "modifiers": [
    "left_control",
    "left_option"
    ]
    }
    ],
    "type": "basic"
    }
    ]
    },


    4-2. 입력 소스 변환에 딜레이가 있어 첫 글자가 변환되지 않는 경우

    (예: 한영전환 직후 '애플' 입력하였는데 dㅐ플 입력)


    완벽한 해결책은 아니지만, Karabiner의 Parameters 수정으로 약간 보완할 수 있습니다.

    (혹시 json에서 Key press up이 아닌 Key press down으로 매핑 타이밍을 조절하는 방법을 알고계시는 분이 계시면 공유 부탁드립니다^^)


    * 구름 입력기 등을 사용하는 것도 해결 방법이지만 몇몇 프로그램에서 한/영 전환이 불가능해지는 이슈가 있음


    * 하단 3가지 값을 본인에게 맞춰 조절하여 첫 글자 미변환을 다소 보완 가능


    4-3. 106키 리얼포스의 한자키 매핑 미적용

    한자키 변환에서 간혹 적용되지 않는 경우가 있는 것 같습니다.

    제가 테스트 해 본 것은 106키의 경우 리얼포스 1종이기 때문에 from 값을 lang2 혹은 해당 값으로 수정이 필요할 수도 있습니다.

    아니면 누군가 디버깅을 확실히 해주셔도... ㅎㅎ


    {
    "description": "Change Hanja key to option+enter(Hanja)",
    "manipulators": [
    {
    "from": {
    "key_code": "lang2"
    },
    "to": [
    {
    "key_code": "enter",
    "modifiers": [
    "right_option"
    ]
    }
    ],
    "type": "basic"
    }
    ]
    }





    5. 활용편 - Transmit의 Delete 키 매핑 예시

    Karabiner는 모든 입력장치의 입력값을 일괄/개별 수정 가능합니다.


    FTP 클라이언트로 Transmit을 사용중인 분들이 꽤 있으실텐데,

    Transmit은 Delete 키(CMD+Backspace) 등의 기본 단축키 외에는 별도의 단축키를 지정 or 추가가 불가능 합니다.

    (Karabiner Elements 외 추가하는 방법이 있다면 공유 바랍니다^^)


    이 경우 저는 파일 삭제에 CMD+Backspace가 아닌 Delete 키를 사용하기 위해 Karabiner를 통한 매핑을 해줍니다.

    (Rename이나 실행/다운로드 같은 경우 Presbutan의 설정이 먹히므로 별도 코딩 불필요)


    물론 이 매핑은 Transmit 프로그램에만 한정시켜 작동해야 하므로 코드에 조건(condition, Karabiner json  structure 참조 要)을 주게됩니다.(패러렐즈 매핑과 유사)


    * Transmit_Delete_key.json 파일 코드

    {
    "title": "Delete key shortcut in Transmit",
    "rules": [
    {
    "description": "Change Delete key to Left command+Backspace",
    "manipulators": [
    {
    "type": "basic",
    "from": {
    "key_code": "delete_forward"
    },
    "to": [
    {
    "key_code": "delete_or_backspace",
    "modifiers": [
    "left_command"
    ]
    }
    ],
    "conditions": [
    {
    "type": "frontmost_application_if",
    "bundle_identifiers": [
    "^com\\.panic\\.Transmit$"
    ]
    }
    ]
    }
    ]
    }
    ]
    }


    이처럼 Karabiner Elements는 특정 소프트웨어 혹은 특정 하드웨어에 제한된 매핑을 해줄 수도 있습니다.

    (예: 리얼포스 키보드가 연결되면 한/영키에 언어전환을 매핑하고 랩탑의 내장 키보드는 우측 커맨드에 매핑 or 특정 소프트웨어에서 특정 키보드만의 키 매핑 or 프리젠터의 키 별도 매핑 등등)



    * 특정 소프트웨어의 App id 찾는 방법 - terminal에 하단 명령어에서 App name을 해당 앱 이름(해당 앱 실행시 좌상단 사과마크 옆의 명칭)으로 변경 후 입력

    osascript -e 'id of app "App Name"'


    * 특정 하드웨어의 PID(Product ID), VID(Vendor ID) 찾는 방법 - Karabiner에서 확인


    끝!

    추천5개  팔로우하기 (현재1명)

    i7-7700K, Z270M-D3H, RX 580, 10.12.6

    E3-1231v3, Z97X-UD5H-BK, GTX 960, 10.13.4

    E3-1231v3, B85M-D3H, GTX 650, 10.12.6

    E3-1231v3, H81M-D2V, RX 560, 10.12.6

    i5-4460, H81M-K, GTX 960, 10.13.4

    주변에서 굴리고 있는 커스텀맥입니다.

    https://x86.co.kr/@Ohchang [ Lv8 | 8학년, GigaByte | 팔로우 1 | 팔로잉 0 | 글 9 | 댓글 103 | 포인트 6599P | 가입 461일 | 67c53]
  • Ohchang profile
    • HOT Comments 이글에 핫코멘트가 있으며 클릭하시면 바로 이동합니다. (추천 수 : 3 이상)


  • 등록일 제목 조회 글 작성 공개
    09.06 클로버 컨피규레이터 기본 사전 17.09.07 61 3854
    ariC.
    02.03 입문자를 위한 x86 안내서 113 73411
    아이뱅크
    03.18 커맥팁 | 14 13 1264
    우럭각시
    03.17 커맥팁 | 21 14 1563
    우럭각시
    03.17 커맥팁 | 37 17 2332
    우럭각시
    03.16 커맥팁 | 5 3 416
    우럭각시
    03.16 커맥팁 | 56 23 3495
    우럭각시
    03.15 커맥팁 | 2 2 168
    아이뱅크
    03.15 기타 | 2 1 378
    인텔맥
    03.14 커맥팁 | 6 9 372
    룽즈
    03.13 기타 | 4 2 341
    조현종
    03.13 기타 | 4 3 347
    Hsage
    03.11 커맥팁 | 8 3 373
    Ohchang
    03.11 메인보드 | 4 312
    덕구킹
    03.10 기타 | 5 5 297
    lavapong
    03.05 커맥팁 | 30 11 2015
    lavapong
    03.04 커맥팁 | 2 2 438
    좌절금지
    03.04 커맥팁 | 4 428
    좌절금지
    03.02 커맥팁 | 18 13 1394
    아이뱅크
    03.02 사운드 | 11 3 801
    나다
    02.24 커맥팁 | 47 8 1453
    Ohchang
    02.22 기타 | 5 6 326
    iNch224
    02.21 사운드 | 8 2 370
    나다
    02.20 그래픽 | 4 4 586
    Wisha002
    02.20 커맥팁 | 10 4 620
    좌절금지
    02.17 커맥팁 | 41 32 3511
    봄날
    02.16 기타 | 9 5 847
    키아누리눅스
    »»» 커맥팁 | 23 5 1303
    Ohchang
    02.14 커맥팁 | 8 14 1400
    좌절금지
    02.12 커맥팁 | 12 14 773
    묘오
    02.12 커맥팁 | 5 8 591
    동살마루
    02.12 그래픽 | 8 9 675
    봄날
    02.08 기타 | 8 4 709
    머짱이당
    02.06 기타 | 18 6 573
    ClimbJoe
    02.01 사운드 | 9 3 599
    Monsteel
    01.31 메인보드 | 7 5 503
    SynC
    01.31 그래픽 | 9 2 322
    ClimbJoe
    01.30 기타 | 15 295
    ZISQO
    01.30 커맥팁 | 10 4 964
    키아누리눅스
    01.28 커맥팁 | 12 13 868
    뚜오
    01.28 커맥팁 | 9 4 823
    달봉
    01.25 사운드 | 3 5 424
    Y통통
    01.25 커맥팁 | 7 5 621
    뚜오
    01.24 그래픽 | 15 11 1205
    달봉
    01.22 그래픽 | 6 1 550
    봄날
    01.22 사운드 | 3 4 338
    뚜오
    01.18 커맥팁 | 4 4 347
    Zyxwv
    01.17 커맥팁 | 17 5 1014
    DearLiar
    01.14 커맥팁 | 12 9 811
    minix
    01.07 커맥팁 | 1 2 403
    홍대퀸카
    01.07 커맥팁 | 8 1 717
    작은거인
    01.05 그래픽 | 12 4 1151
    soosia
  • 서버에 요청 중입니다. 잠시만 기다려 주십시오...