vs code에서 wsl을 이용한 c/c++ 컴파일

vs code에서 c/c++ 컴파일을 하기 위한 환경을 구성해 보겠습니다.
이 내용은 https://code.visualstudio.com/docs/languages/cpphttps://code.visualstudio.com/docs/cpp/config-wsl를 참고하였습니다.

사전준비

  • 윈도우10
  • visual studio code 설치(이하 vs code)
  • vs code에 c/c++ 확장 설치
  • 윈도우10에서 wsl 설치(설명에서는 ubuntu를 사용하고 있음.)

목표

vs code에서 컴파일 환경을 갖추고
c++ 코드를 작성하고 우분투에서 'Hello World!'를 출력하는 것까지 해 보겠습니다.

참고. c 프로그래밍을 하는 경우에도 컴파일 환경을 갖추려면 c++코드가 필요합니다. 컴파일 환경을 갖춘 후에 c 프로그래밍을 하시면 됩니다.

c 소스코드 작성

<윈도우에서>

  1. vs code 작업폴더 열기

윈도우 cmd창에서 D:\projects\helloworld 폴더를 만듭니다.(필요에 따라 바꿔서 만드세요.)
helloworld 폴더에서 'code .'을 입력하면 vs code가 현재 폴더를 열면서 실행됩니다.
실행할때 code 뒤에 '.'을 넣어 주어야 합니다.

cd d:
mkdir projects
cd helloworld
mkdir helloworld
cd helloworld
code .
  1. hello world! 코드 작성

vs code에서 새 파일을 열고, 아래 코드를 참고해 helloworld.cpp파일을 만듭니다.
우분투 shell에서 Hello World!를 출력는 코드입니다.

helloworld.cpp

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{

    vector<string> msg {"Hello", "C++", "World", "from", "VS Code!",
    "and the C++ extension!"};

    for (const string& word : msg)
    {
        cout << word << " ";
    }
    cout << endl;
}

GNU 컴파일러와 GDB 디버거 설치

<우분투 bash 쉘에서>

  1. 우분투 업데이트

컴파일러를 설치하기 전에 패키지 목록을 최신으로 업데이트하고 업그레이드까지 진행합니다.

'''
sudo apt-get update && sudo apt-get dist-upgrade
'''

  1. 컴파일러와 디버거 설치
sudo apt-get install build-essential gdb
  1. 설치확인

아래 두 명령을 실행하여 g++와 gdb의 위치를 확인합니다.
설치가 잘 되었다면 g++: /usr/bin/g++ /mnt/c/Program Files (x86)/Dev-Cpp/MinGW64/bin/g++.exe
/usr/share/man/man1/g++.1.gz 와 같이 파일의 경로를 출력됩니다. g++ 예 였습니다.

whereis g++
whereis gdb

우분투에 컴파일 폴더 준비

<윈도우 cmd에서>
윈도우에서 vs code로 컴파일을 하면 우분투에 실행파일이 만들어지는데, 이 폴더에 생성됩니다.
폴더는 윈도우와 같이 만들어 줍니다.

mkdir projects
cd projects
mkdir helloworld

vs code 설정

<윈도우 vs code에서>

이 작업을 통해 3개의 파일이 만들어 집니다. 하나씩 만들어 나가겠습니다.

  • c_cpp_properties.json
  • tasks.json
  • launch.json

c_cpp_properties.json : 컴파일 경로설정

c_cpp_properties.json 생성 및 설정

커맨드 팔렛트를 열기 위해 Ctrl+Shift+P를 누릅니다.
"C/C++"를 입력하며 나타나는 목록중에 다음을 찾아 선택합니다.

C/C++: Edit configutations (JSON)

.vscode/c_cpp_properties.json 파일이 만들어지면서 파일 열립니다.
우분투에 설치한 g++(컴파일러)의 경로를 설정하기 위해
초기 파일의 내용을 모두 지우고 아래 내용을 복사해 붙여넣기 해 주세요.

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }
    ],
    "version": 4
}

tasks.json : 빌드 task 만들기

tasks.json 생성 및 설정

vs code가 우분투의 g++컴파일러를 호출해 실행파일을 만들도록 설정하는 과정입니다.

명령 팔렛트(Ctrl+Shift+P)에서 'Tasks"를 입력하면 나오는 목록중에
'Tasks: Configure default build task'를 선택합니다.
이어서 '템플릿에서 tasks.json 파일 만들기'를 선택하고 'Others'를 선택합니다.

tasks.json에서 "tasks"부분을 아래와 같이 수정합니다.

아이디는 자신의 우분투 아이디를 입력합니다.

{
    "version": "2.0.0",
    "windows": {
        "options": {
            "shell": {
                "executable": "c:\\windows\\sysnative\\bash.exe",
                "args": ["-c"]
            }
        }
    },
    "tasks": [
        {
            "label": "build c on WSL",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "-o",
                "/home/<우분투 아이디>/projects/helloworld/${fileBasenameNoExtension}.out",
                "${fileBasenameNoExtension}.c"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": []
        },
        {
            "label": "build cpp on WSL",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "-o",
                "/home/<우분투 아이디>/projects/helloworld/${fileBasenameNoExtension}.out",
                "${fileBasenameNoExtension}.cpp"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

빌드테스트

helloworld.out 만들기
명령 팔렛트에서 Tasks: Run Task를 실행하거나 Ctrl+Shift+B를 누르면 'build c on WSL' task를 실행할 수 있습니다.
실행해서 우분투에 실행파일(helloworld.out)이 만들어지는지 확인해 봅니다.

Run Task를 실행하면 우분투 helloworld 폴더에 helloworld.out파일이 빌드됩니다. 쉘에서 실행합니다.

./helloworld.out
Hello World!

launch.json : vs code에서 디버그하기 위한 설정

마지막으로 launch.json을 만들겠습니다. 앞서 우분투에 설치한 GDB를 이용해 보겠습니다.

launch.json 생성 및 설정

메뉴바로 이동해 '디버그 > 구성 추가'를 선택하면 나타나는 목록에서 C++ (GDB/LLDB)를 선택합니다.
.vscode에 생성된 launch.json파일의 내용을 지우고 아래 내용을 붙여넣기 해 주세요.

참고

  • 아이디에는 우분투 아이디로 바뀌줍니다.
  • path는 리터럴 경로(전체 경로)를 사용합니다.
  • sourceFileMap의 설정은 하단 내용을 참고합니다.
{
"version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/<우분투 아이디>/projects/helloword/helloworld.out",
            "args": ["-fThreading"],
            "stopAtEntry": true,
            "cwd": "/home/<우분투 아이디>/projects/helloword/",
            "environment": [],
            "externalConsole": true,
            "windows": {
                "MIMode": "gdb",
                "miDebuggerPath": "/usr/bin/gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            },
            "pipeTransport": {
                "pipeCwd": "",
                "pipeProgram": "c:\\windows\\sysnative\\bash.exe",
                "pipeArgs": ["-c"],
                "debuggerPath": "/usr/bin/gdb"
            },
            "sourceFileMap": {
                "/mnt/c": "${env:systemdrive}/",
                "/usr": "나중에 wsl 경로는 넣게 됩니다."
            }
        }
    ]
}

sourceFileMap의 설정

두 가지를 확인해야 합니다.. 하나는 소스파일 드라이브이고 다른 하나는 윈도우에 설치된 wsl 우분투의 '/usr' 경로입니다.

먼저 소스파일 드라이브입니다.
wsl에서 윈도우 시스템의 c드라이브 루트는 /mnt/c로 접근합니다. 우리는 D:\projects\helloworld에서 작업을 하기 때문에 /mnt/d가 됩니다.

/mnt/d --> D:\

적용 결과

"sourceFileMap": {
    "/mnt/d": "${env:systemdrive}/",
    "/usr": "나중에 wsl 경로는 넣게 됩니다."
}

다음으로 wsl에 있는 /usr의 윈도우에서의 경로를 알아 보겠습니다.
vs code에서 helloworld.cpp파일을 열고 10번째 줄에 있는 string에서 오른쪽 클릭을 합니다. 그럼 컨텍스트 메뉴가 나오고 'Go to Declaration'을 선택합니다.

에디터에 stringfwd.h파일이 열리게 됩니다. 여기서 경로복사를 선택합니다.

메모장에서 붙여넣기 하여 복사된 경로를 확인합니다.
C:\Users<자신의 윈도우 아이디>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\usr\include\c++\7\bits\stringfwd.h

우리에게 필요한 부분은 C:\부터 usr\까지 입니다.

C:\Users<자신의 윈도우 아이디>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\usr\

\ --> \ 바꾼 후 적용합니다.

적용 결과

"sourceFileMap": {
    "/mnt/d": "${env:systemdrive}/",
    "/usr": "C:\\Users\\<자신의 윈도우 아이디>\\AppData\\Local\\Packages\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\LocalState\\rootfs\\usr\\"
}

launch.json의 설정이 완료된 상태는 아래과 같습니다.

{
"version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/<우분투 아이디>/projects/helloword/helloworld.out",
            "args": ["-fThreading"],
            "stopAtEntry": true,
            "cwd": "/home/<우분투 아이디>/projects/helloword/",
            "environment": [],
            "externalConsole": true,
            "windows": {
                "MIMode": "gdb",
                "miDebuggerPath": "/usr/bin/gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            },
            "pipeTransport": {
                "pipeCwd": "",
                "pipeProgram": "c:\\windows\\sysnative\\bash.exe",
                "pipeArgs": ["-c"],
                "debuggerPath": "/usr/bin/gdb"
            },
            "sourceFileMap": {
                "/mnt/d": "${env:systemdrive}/",
                "/usr": "C:\\Users\\<자신의 윈도우 아이디>\\AppData\\Local\\Packages\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\LocalState\\rootfs\\usr\\"
            }
        }
    ]
}

컴파일

helloworld.cpp를 빌드하도록 하겠습니다.
vs code에서 파일을 열고
커맨드 팔렛트에서 'Tasks: Run Build Task' --> 'build cpp on WSL' 순으로 선택하거나
Ctrl+Shift+B를 누르고 'build cpp on WSL' 순으로 선택합니다.

vs code 하단 터미널에 아래 내용이 출력이 됩니다.

> Executing task: g++ -g -o /home/<우분투 아이디>/projects/helloworld/helloworld.out helloworld.cpp <
터미널이 작업에서 다시 사용됩니다. 닫으려면 아무 키나 누르세요.

이제 우분투에서 확인해 보겠습니다.
윈도우에서 wsl 우분투를 실행하고 프로젝트 폴더로 이동합니다.
빌드된 파일을 실행할때는 './helloworld.out'을 입력하면 됩니다. ('.'로 시작합니다.)

cd ~/projects/helloworld/
./helloworld.out

아래 메세지가 출력됩니다.

Hello C++ World from VS Code! and the C++ extension!

디버깅

마지막으로 디버깅입니다.
vs code에서 파일을 열고 F5키를 누룹니다.

편집기는 main()의 첫번째 구문에서 자동으로 멈추게 됩니다.

디버깅을 준비가 완료되었습니다.

마치며

고생하셨습니다. 글이 길어지다 보니 설명이나 스샷을 충분히 넣지 못한 부분이 있습니다. 다음에 좀 더 보완하도록 하겠습니다.
감사합니다.

'c' 카테고리의 다른 글

C언어에서 기억 클래스의 종류  (0) 2019.05.26
vs code에서 wsl을 이용한 c/c++ 컴파일  (0) 2019.05.16

장고에서 소셜인증하기 - 1. 설치

개요

네이버 아이디를 통해 장고 어플리케이션에 인증을 처리합니다.
적용할 패키지는 django-allauth로 인증, 등록, 계정 관리 및 타사 (소셜) 계정 인증을 처리할 수 있습니다.

총 3회에 걸쳐 소개합니다.

  1. 파이썬 패키지 설치
  2. 네이버 오픈API 이용 신청
  3. 장고에 소셜 어플리케이션 등록

사용환경

  • Python 2.7, 3.3, 3.4, 3.5 or 3.6
  • Django (1.11+)
  • 네이버 오픈API 앱 등록 정보

파이썬 패키지 설치

장고

장고 프로젝트 또는 가상환경에서 파이썬 패키지를 설치합니다.

pip install django-allauth

settings.py

  • 중의. INSTALLED_APPS에 'django.contrib.sites'가 있어야 합니다.
# Specify the context processors as follows:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # Already defined Django-related contexts here

                # `allauth` needs this from django
                'django.template.context_processors.request',
            ],
        },
    },
]

AUTHENTICATION_BACKENDS = (
    ...
    # Needed to login by username in Django admin, regardless of `allauth`
    'django.contrib.auth.backends.ModelBackend',

    # `allauth` specific authentication methods, such as login by e-mail
    'allauth.account.auth_backends.AuthenticationBackend',
    ...
)

INSTALLED_APPS = (
    ...
    # The following apps are required:
    'django.contrib.auth',
    'django.contrib.messages',
    'django.contrib.sites',

    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    # 네이버 외에 다른 오픈아이디 제공자를 추가하려면 [여기](https://tinyurl.com/y6tsrngg)에서 찾아 추가하면 됩니다.
    'allauth.socialaccount.providers.naver',
)

SITE_ID = 1

LOGIN_REDIRECT_URL = '/'

urls.py

urlpatterns = [
    ...
    url(r'^accounts/', include('allauth.urls')),
    ...
]

설치 후

데이터베이스 테이블을 생성합니다.

./manage.py migrate

추가 작업이 남아 있어 네이버 오픈아이디로 로그인을 할 수 없지만 장고의 기본 로그인과 로그아웃은 동작합니다.

장고에서 slug 사용하기

개요

slug는 의미있는 URL을 만드는데 사용되며, 블로그의 주소에서 주로 볼 수 있습니다.

정의

짧은 라벨로서, 문자, 숫자, 밑줄 또는 하이픈만을 포함. 일반적으로 URL에 사용. 예를 들어, 블로그 엔트리 URL은 다음과 같다고 할 때,
https://www.djangoproject.com/weblog/2008/apr/12/spring/
마지막 부분(spring)이 슬러그입니다.
출처: 용어 | Django 문서 | Django

이 글의 제목이 '장고에서 slug 사용하기'인데 이 글의 URL을 예로 들어 보겠습니다.

  • http://blog.jiktong.kr/1234
  • http://blog.jiktong.kr/%uC7A5%uACE0%uC5D0%uC11C%20slug%20%uC0AC%uC6A9%uD558%uAE30
  • http://blog.jiktong.kr/장고에서-slug-사용하기

마지막 예시가 slug입니다.

환경

  • Django 2.2.1

장고 models.py에서 slug

from django.db import models
from django.utils.text import slugify

class MyModel(models.Model):
  title = models.CharField(max_length=50)
  slug = models.SlugField(max_length=201, db_index=True, unique=True, allow_unicode=True)
  created = models.DateTimeField(auto_now_add=True)

  class Meta:
    ordering = ['-created']
    index_together = [['id', 'slug']]
  • allow_unicode=True 영문을 제외한 다른 언어도 사용할 수 있도록 합니다. => 한글지원
  • db_index=True 해당 필드를 인덱스 열로 지정합니다.
  • index_together = [['id', 'slug']] 'id'와 'slug'필드를 묶어서 색인하는 '멀티 컬럼 색인'을 지원합니다.

장고 urls.py에서 slug

from django.urls import path

from . import views

urlpatterns = [
    path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]

MariaDB(MySQL) 외부 접근 허용|금지하기

개요

데이터베이스를 처음 설치하면 내부(localhost)에서만 접근이 가능합니다.
HeidiSQL과 같은 데이터베이스 관리툴에서 외부(카페24 가상서버)에 운영중인 데이터베이스에 연결하려면, 서버에 외부 접근에 필요한 설정이 필요합니다.

사용환경

외부 서버의 데이터베이스에 접근하기 위한 관문(조건)

  1. 방화벽 접근 정책 추가
  2. database의 접근 권한 부여
  3. mysqld의 Listen IP대역 변경

외부 접근 허용하기

방화벽 접근 정책 추가

방화벽을 운영중인 경우에만 해당합니다.

카페24 가상서버는 관리자 페이지에서 방화벽을 관리합니다.
방화벽이 활성화(on)되어 있다면 'Inbound 접근 정책'에 3306 포트를 추가합니다.

추가내용

  • 이름: mariadb
  • 프로토콜: tcp
  • 포트: 3306

아래와 같이 설정내용이 추가됩니다.

NO 이름 프로토콜 포트 접근허용 IP 접근 차단 IP 관리
3 mariadb tcp 3306 ANY [Rule 삭제] [차단IP추가]

database의 접근 권한

데이터베이스 사용 계정은 root 보다 '다른 계정'을 만들어 사용하는 것이 안전합니다.

  1. 외부 접근 계정을 추가합니다.

모든 IP에 대해 접근을 허용하기 위해 '%'를 사용했습니다.
특정 IP대역에 대해 허용하려면 '111.222.%'를 사용합니다.

CREATE USER 계정이름@'%' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON 데이터베이스이름.* TO 계정이름@'%';
FLUSH PRIVILEGES;

마지막에 FLUSH PRIVILEGES는 현재 실행중인 세션에 변경 내용을 적용하기 위해 실행합니다.

  1. 확인

mysql에 로그인한 후 아래 명령어를 실행합니다.

mysql> SELECT Host,User,password FROM mysql.user;

mysqld의 Listen IP대역 변경

  1. 현재 상태를 확인한다.
$ netstat -ntlp | grep mysqld

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      19688/mysqld
  1. 원본 백업
sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf_org
  1. Listen IP대역 변경
    이래 내용을 찾아 바꿔줍니다.

bind-address = 127.0.0.1 <= 수정 전
bind-address = 0.0.0.0 <= 수정 후

sudo vim /etc/mysql/my.cnf
bind-address        = 0.0.0.0
  1. mysql 재시동
$ sudo /etc/init.d/mysql restart
$ netstat -ntlp | grep mysqld

tcp        0      0 0.0.0.0:3306          0.0.0.0:*               LISTEN      19688/mysqld

외부 접근 금지

위에서 지정한 내용을 모두 해제합니다.

방화벽 접근 정책 삭제

Rule삭제 버튼으로 추가 했던 Inbound 접근 정책을 삭제합니다.

MariaDB 사용자 계정 삭제

외부 접근을 위해 추가된 계정이라면 해당 계정을 삭제합니다.

DELETE FROM mysql.user WHERE Host='%' AND User='계정이름';
FLUSH PRIVILEGES;

mysqld의 Listen IP대역 변경 취소

  1. 원본 복원
sudo cp /etc/mysql/my.cnf_org /etc/mysql/my.cnf

vim을 이용해 직접 수정해도 됩니다.

  1. mysql 재시동
$ sudo /etc/init.d/mysql restart
$ netstat -ntlp | grep mysqld

tcp        0      0 0.0.0.0:3306          0.0.0.0:*               LISTEN      19688/mysqld

참고

'database' 카테고리의 다른 글

관계 대수의 기본 연산자  (0) 2019.06.02
MariaDB(MySQL) 외부 접근 허용|금지하기  (0) 2019.05.09

환경설정에서 공유로 이동합니다.

컴퓨터 이름 오른쪽 끝에 편집 버튼을 선택하면 아래 그림과 같이 로컬 호스트의 이름을 바꿀 수 있습니다.



맥에서 파이썬 사용환경 만들기


homebrew 설치


homebrew 설치 디렉토리 설정

.bash_profile 추가

export PATH=/usr/local/bin:/usr/local/sbin:$PATH




python, python3 최신버전 설치

설치경로 확인은 which 사용한다.



pip와 pip3는 brew로 python을 설치할 경우 함께 설치된다. #2017년 1월 18일 수정

굳이 pip를 설치하려면

$ sudo easy_install pip

또는 $ sudo easy_install pip3



virtualenv 설치

$ sudo pip install virtualenv

또는 $ sudo pip3 install virtualenv


가상환경 구성

$ virtualenv -p python env27

또는 $ virtualenv -p python3 env36

'python & django' 카테고리의 다른 글

장고에서 slug 사용하기  (0) 2019.05.09
파이썬 사용환경 만들기  (0) 2017.01.14
파이썬의 정수 나누기 연산  (0) 2016.11.29
우분투에서 장고1.4 설치하기  (0) 2014.10.29
파이썬의 정수 나누기 연산에 대해 정리입니다.

파이썬의 사칙연산은 + - * /(나누기)가 있고,
나누기 연산은 // % /를 사용한다.

몫을 구할때 //
나머지 구할때 %
나누기는 /로 이해하자.

나누기 연산 중에 헷갈리는 연산자가 있는데 바로 몫 구하기

Python 2.7.10 (default, Jul 30 2016, 18:31:42)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 3//2
1
>>> 3/2
1

위와 같이 차이가 없어 보인다.
하지만, 실수 연산을 해 보면 구분할 수 있다.
실수 연산을 위해 __future__를 임포드하는 방법도 있다.

>>> from __future__ import division
>>> 3//2
1
>>> 3/2
1.5

이제야 몫과 나머지가 구분이 된다.

파이썬3에서의 연산
Python 3.5.2 (default, Oct 11 2016, 04:59:56)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 3//2
1
>>> 3/2
1.5


그 외에 몫과 나머지를 돌려주는 함수
>>> 1.5
1.5
>>> divmod(3,2)
(1, 1)
>>> a,b = divmod(3,2) #a는 몫, b는 나머지
>>> a
1
>>> b
1


맥북프로를 사용한 지 반년이 되어 간다.
맥에 익숙한 터라 잘 사용하고 있었는데
요즘 들어 command나 option의 사용이 불편하다.

특히 한영전환, 복사, 붙여넣기를 할 때 실수가 잦다.

평소 기계식 키보드에 대한 로망이 있어 프로젠 기계식 키보드를 사들였는데
이게 윈도우용 키보드다.
내 불편은 윈도우용을 보조 키보드로 사용하면서 시작됐다.

왜? 맥을 위한 기계식 키보드가 없는지… 맥용 기계식 키보드를 본 기억이 없다.

윈도우용 키보드를 맥에서 사용하려면
option 키 대신 Alt 키와, command 키 대신 Windows 로고 키를 사용하면 된다.

간단하다. 누구나 알고 있다.

하지만, 맥북 키보드와 보조 키보드를 혼용하는 경우
command와 Windows 로고 키의 위치가 달라 맥용과 윈도우용 키보드가 바뀔때 마다 헷갈린면!

보조 키보드의 Windows 로고 키와 Alt 키의 동작 키값을 바꾸길 권한다.
즉, option 키 대신 Windows 로고 키와, command 키 대신 Alt키를 사용해 보자.

더 이상 헷갈리지 않는다.

보조 키보드 혼용할 때 설정 방법
1. 한영전환은 Karabiner(https://pqrs.org/osx/karabiner/)을 이용해 스페이스 바 오른쪽 키를 이용한다. 맥북은 오른쪽 command, 보조 키보드는 한/영키를 사용할 수 있다.

2. 맥북 및 윈도우에서 시프트키를 두 번 눌러 Alfred(https://www.alfredapp.com) 실행한다.

3. 시스템 환경설정/키보드/보조 키보드에서 option과 command 키에 대한 동작을 변경한다.



끝!



+ Recent posts