100% 당첨매일매일 출석 도장 찍고 포인트 받아가세요
  • X86 기상정보
    맑음 1

    중구 필동, 10:32 현재

    현재바람
    북동 1m/s
    현재습도
    40%
    통합대기
    보통

    X86 운영알림판
    레벨 글쓴이가 전체공개한 글 입니다.

    안녕하세요?

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


    우선 저는 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에서 확인


    끝!

    • HOT Comments 이글에 핫코멘트가 있으며 클릭하시면 바로 이동합니다. (추천 수 : 3 이상)

  • No 제목 저장 레벨 조회 닉네임 8로
    공지
    [퍼옴] Common Problems in 10.13 High Sierra 5 공개 237 좌절금지
    공지
    클로버 컨피규레이터 기본 사전 17.09.07 50 공개 2216 ariC.
    공지
    입문자를 위한 x86 안내서 70 공개 57444 아이뱅크
    841 커맥팁 | 8 공개 222 Ohcha 1
    840 기타 | 5 공개 138 iNch2 1
    839 사운드 | 5 공개 168 나다 1
    838 그래픽 | 3 공개 216 Wisha 1
    837 커맥팁 | 8 공개 250 좌절금지 1
    836 커맥팁 | 베플 | 29 공개 1359 봄날 1
    835 기타 | 4 공개 301 키아누리눅 1
    » 커맥팁 | HOT | 19 공개 543 Ohcha 1
    833 커맥팁 | 10 공개 571 묘오 1
    832 커맥팁 | 5 공개 317 동살마루 1
    831 그래픽 | 7 공개 352 봄날 1
    830 기타 | 7 공개 467 머짱이당 1
    829 기타 | 17 공개 402 joeyu 1
    828 사운드 | 8 공개 439 Monst 1
    827 MB | 5 공개 394 SynC 1
    826 그래픽 | 8 공개 258 joeyu 1
    825 기타 | 15 Lv 2 258 ZISQO 1
    824 커맥팁 | 9 공개 458 키아누리눅 1
    823 커맥팁 | 8 공개 623 뚜오 1
    822 커맥팁 | 8 공개 557 달봉 1
    821 사운드 | 3 공개 243 Y통통 1
    820 커맥팁 | 5 공개 479 뚜오 1
    819 그래픽 | 11 공개 822 달봉 1
    818 그래픽 | 6 공개 377 봄날 1
    817 사운드 | 3 공개 225 뚜오 1
    816 커맥팁 | 2 공개 254 Zyxwv 1
    815 커맥팁 | 16 공개 685 DearL 1
    814 커맥팁 | 9 공개 574 minix 1
    813 커맥팁 | 1 공개 260 홍대퀸카 1
    812 커맥팁 | 7 공개 588 작은거인 1
    811 그래픽 | 9 공개 790 soosi 1
    810 커맥팁 | 15 공개 519 yysco 1
    809 커맥팁 | 11 공개 659 지유아빠 1
    808 커맥팁 | 10 공개 701 Wisha 1
    잠금 커맥팁 | 부팅시 Does printf work?? 에러 해결방법 1 공개 182 좌절금지
    806 커맥팁 | 25 공개 984 dktbz 1
    805 커맥팁 | 14 공개 786 지유아빠 1
    804 커맥팁 | 베플 | 22 공개 730 minix 1
    803 기타 | 5 공개 349 goldb 1
  • 서버에 요청 중입니다. 잠시만 기다려 주십시오...