2016년 11월 22일 화요일

mybatis mapper 동적 설정


spring 등 여타 framework 에서 sql query xml 을 mybatis 에 설정 하는 방법은
@MapperScan annotation 을 활용하거나 mybatis 의 scan 등을 활용해 mapper 를 손쉽게 설정 할 수 있다.

하지만 독립적으로 mybatis 를 사용하면서 로직에 따라 동적으로 mapper 를 등록해야 하는 일이 생겼는데 
공식 reference site 에 딱히 방법이 나와 있지 않아 난감해진적이 있었다.
그때 해결했던 이력을 남겨본다.

핵심만 말하자면
mybatis 라이브러리안에 XMLMapperBuilder 라는 class 를 활용해 해결할 수 있다.

아래는 test 했던 난잡한 sample code 이다. 그래도 작은 도움은 될거라 생각된다.

/**
 * Created by fall1999y on 2016. 6. 23..
 */

public class SessionFactoryProvider {
    private static final String mapperFiles[] = {"mybatis/sql/testsql.xml", "mybatis/sql/samplesql.xml"};

    public SqlSessionFactory produceFactory() {
        String resource = "mybatis/mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {

            throw new RuntimeException("Fatal Error.  Cause: " + e, e);
        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        for (String mapperFile : mapperFiles) {
            InputStream in = getClass().getClassLoader().getResourceAsStream(mapperFile);
            Configuration configuration = sqlSessionFactory.getConfiguration();
            if (in != null) {
                XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(in, configuration, mapperFile, configuration.getSqlFragments());
                xmlMapperBuilder.parse();
            } else {
                System.err.println("Error file not loaded " + mapperFile);
            }
        }
        return sqlSessionFactory;
    }

    public static void main(String[] args) {
        SessionFactoryProvider provider = new SessionFactoryProvider();
        SqlSessionFactory factory = provider.produceFactory();
        SqlSession s = factory.openSession();

        TestMapper mapper = s.getMapper(TestMapper.class);
        System.out.println(mapper.selectTestTable());
        SampleMapper sampleMapper = s.getMapper(SampleMapper.class);
        System.out.println(sampleMapper.selectSampleTable());
    }
}


참고로 아래는 독립적인 mybatis 에서 xml scan 하는 설정이다. (mybatis.xml)
<mappers>
    <package..
부분만 보면 이해가 가능하다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="properties/db.properties" />
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        <environment id="development2">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <package name="net.vjvj.mapper"/>
    </mappers>
</configuration>

2016년 8월 17일 수요일

mac 맥 에서 finder(탐색기) 단축키 지정

mac 에선 windows 처럼 finder(탐색기)를 바로 호출하는 단축키가 없다.
alfred 의 workflows 를 이용하면 단축키(ctrl+option+e) 를 생성할수 있다.

Alfred Preferences -> Workflows -> 좌측하단 + 버튼 -> Templates -> Files and Apps -> Lunch file group from hotkey 를 선택하면 추가되는 화면이 아래와 같다.


아래와 같이 설정 하면 된다.


hotkey 부분 설정



Launch Apps / Files 부분 설정 (finder 를 단축키로 열었을때 기본으로 열리게 할 디렉터리를 finder 에서 drag and drop 으로 추가)






2016년 8월 1일 월요일

chrome 주소창 focus 상태에서 page focus 이동

크롬에서 페이지 주소를 입력할때 command + L (mac  기준) 을 입력하면
주소창으로 포커스가 이동된다.


주소창에 포커스가 있을때 이걸 다시 page 포커스로 이동 시키는 마땅한 단축키가 없다.
이때 주소창 상에
javascript: 라고 입력하면 다시 page 로 focus 가 이동한다.




크롬 검색엔진 을 이용한 약간의 트릭으로 단축키 처럼 같은 기능을 구현할 수 있다.

⌘ + , (설정) > 검색 > 검색엔진 관리 > 기타 검색엔진  에서
새 검색엔진을 등록 하면된다.

예:) [새 검색엔진추가]        [키워드]            [URL]
       포커스                        ff                       javascript:


위 와 같이 등록하고 ff 만 입력하면 위에서 설명한 javascript: 를 입력한 기능과 같은 기능을 실행한다.




맥 키보드 단축키로 창 이동 및 창 크기 조정

Window Wrangler

활성창을 이동 시키거나 크기를 조절할때 마우스를 사용해야만 하는데
위 유틸리티를 사용하면 키보드 만으로 쉽게 창 제어가 가능

(유틸을 사용하지 않고 맥 기본 기능으로 할 수 도 있지만 시끄럽고 매끄럽지 않음 - voiceover 활용)

Spectacle

창의 크기를 단축키 하나로 좌측 50% 우측 50% 상단 50% 창크기 최대 등 설정된 크기로 지정할수 있고
활성창을 다른 모니터로 옮기는데 유용


위 두 유틸을 사용하여 창 관련 거의 모든 제어는 windows os 처럼 할 수 있음

두 유틸다 권한이 필요하기 때문에

시스템 환경설정 > 보안 및 개인 정보 보호 > 손쉬운 사용 의 우측 영역에 해당 app check 


※ windows 에서 창을 오른쪽 화면 끝으로 끌어다 놓으면 창의 크기가 우측 50%가 되는 기능이 있는데
이것은 tuck 이라는 util 을 사용하면 되나 
키보드로 다되는 기능이라 
딱히 필요 하진 않아서 사용하지는 않음


위 사이트에 tuck 이라는 util (기타 util 도 괜찮아 보이지만 유료인듯해 사용하지는 않음)






 

2016년 7월 30일 토요일

맥 - 마우스 우클릭 단축키 만들기 (windows context menu key)

일반 배열 키보드나 맥북이 아닌 대다수의 노트북 키에는 있는
Context Menu Key(보통 우측 alt 키 또는 우측 윈도우키 오른쪽에 위치) 가 있고 이 키는 마우스 우클릭 했을때의 기능을 한다.
이미지 출처 : http://scls.typepad.com/.a/6a00d8341d32e053ef010536ce6920970b-800wi
이미지 출처 : 구글이미지검색 http://i.stack.imgur.com/szIYh.png


하지만 맥에서는 딱히 이 기능을 가진 키도 없고 단축키도 없다.

위 기능을 구현하는 방법중에 하나는 karabiner 를 사용하면 된다.
karabiner 의 private.xml (http://blog.vjvj.net/2016/05/os-x_16.html) 에

<autogen>__KeyToKey__ KeyCode::RETURN, ModifierFlag::OPTION_R, PointingButton::RIGHT</autogen>

위 코드를 추가하면
우측  option 키 + return 를 치면 context menu key 의 역할을 하는 단축키를 만들어 낼수 있다.


--- 추가
너무 쉽게 생각한듯하다.
위 방법은 포커스가 가 있는 곳의 우클릭 기능을 하지 않고
현재 마우스 위치 있는곳에서 우클릭 기능을 한다.

가령 포커스는 파인더에 가 있어도 마우스 커서는 크롬에가 있다면
마우스 우클릭 기능은 크롬에서의 마우스 우클릭을 한것처럼 된다.

그래서 alfred 에서 관련 workflow 를 만들어논 것을 찾았다.
http://www.alfredforum.com/topic/3147-rightclick-%E2%80%94-do-a-right-click-on-finder-files-with-the-keyboard/

option + \  키로 맵핑했다.
위 워크플로우는 finder 에서는 잘되는데 다른곳에는 잘 안된다.


그래서 당분간 더 좋은 방법을 찾기전까진 두 방법을 상호보완적으로 사용해야할것 같다.




2016년 7월 13일 수요일

[Intellij] Always Select Opend File / 구 Auto Scroll from Source (eclipse Link With Editor 와 유사한 기능)


eclipse Link With Editor
이클립스 에디터에서 소스를 작성하거나 할때 navigation 이 에디터의 소스 위치로 이동하는 기능



이미지 출처 : http://ddoong2.com/739

------------------

intellij 에서도 위와 유사한 기능을 제공하고 있다.

2019.3 이후 명칭
Always Select Opened File


-------------------

2019.3 이전 명칭
Autoscroll from Source


navigation 에서 상단 톱니바퀴 모양의 아이콘을 클릭하면 위와 같은 패널이 나오고
위 패널의 메뉴중 "Autoscroll from Source" 를 선택하면 설정이 완료된다.

2016년 7월 12일 화요일

intellij 단축키 Jump to Source

Intellij Project Navigation (단축키 cmd + 1) 에서 파일을
열때 보통 enter 키로 여는데 이렇게 열면 커서(포커스)가 계속  Project Navigation 에 남아 있는다.
이게 유용할때도 있지만(연속적으로 파일을 훑어볼때..) 파일을 열고 코딩을 하려면 최소 esc키를 한번 누른 후 또는 Project Navigation을 닫은 후에 코드를 작성할 수 있다.



파일을 열고 바로 코드를 작성하려 할때 이때 사용하는 단축키가
Main menu > View > Jump to Source 이다
기본 단축키는 cmd  + ↓  or f4 키 이지만 좀더 활용도를 높이기 위해 cmd + enter 추가했다.
cmd + enter 키는 다른 단축키에 할당이 되어있지만 project navigation 상에는 할당되어 있지않아
사용가능하다.

2016년 7월 7일 목요일

intellij context menu shortcut (마우스 우클릭 단축키)

일반 키보드는 우측에 Context Menu 를 바로 호출 할 수 있는 키가 있다.
하지만 맥북이나 해피해킹에는 없다.
(참고로 윈도우 계열에선 shift + f10 이 마우스 우클릭에 해당하는 키)
다른 응용프로그램을 사용할 때는 거의 사용 안하지만
 intellij 에서 종종 사용하기 때문에 마우스 우클릭에 해당하는 단축키를 지정해 사용한다.

Keymap
Other > Show Context Menu
^C  (control + c) 로 지정해 사용한다.



2016년 7월 4일 월요일

intellij code format (Line Breaks and Wrapping)

이클립스에선 코드 포멧을 실행하면 line length 에 따라 코드 정리가 실행 되는데
intellij 에선 line length 에 따라 정리가 되는게 기본옵션이 아니라 되지 않는다.
stack overflow 에서 그 방법을 찾아 남긴다.

Format existing code

  1. Ensure right margin is not exceeded
    File > Settings > Editor > Code Style > Java > Wrapping and Braces > Ensure right margin is not exceeded
    File Settings Ensure right margin
  2. Reformat code
    Code > Reformat code...
    Reformat code
    or press Ctrl + Alt + L

2016년 6월 21일 화요일

intellij 단축키


mac windows eclipse
한줄삭제 : command + delete ctrl + y

현재 커서 이후 삭제 (custom)
cmd + ctrl + delete

현재 커서 이전 삭제 (custom)
cmd + ctrl + opt + delete
코드줄이동 : command + shift + 상하 방향키 command + shift + 상하 방향키
포함하는괄호로이동 :  alt + command + [ or ]  CTRL +  ] OR [
    — 유사 단축키 (가까운 괄호로 이동) :     ctrl + m CTRL + SHIFT + M
확장하며 선택 :  option + 상 or 하 방향키
자동완성템플릿 :
(sout = System.out.println)
command + j CTRL + J
code completion :    shift + command + space ctrl + space
메소드 이동 :  ctrl + 위 아래 방향키 alt + 위 아래 방향키
파일찾기 :  command + shift + o CTRL + SHIFT + N : 파일찾기 CT + SH + R
파일전환(탭전환) :  alt + [ or ] alt + 좌우 방향키
코드 포멧 정리 :  command + alt + L ctrl + alt + l shift + ctrl + f
search everywhere :  shift 더블클릭
파일 이름 바꾸기 :  shift + f6  (shift + option_r + 6) shift + f6
run : control + r shift + f10
run … :  option + control + r
new line  shift + enter 
현재 문장 자동 완료 : 
(빈공간이 있을경우 빈공간으로 커서이동)
shift + command + enter  Ctrl + Shift + Enter
현재 커서 이전 new line command + alt + enter
line end :  control + e
line start :  control + a 
move code block :  option + control + [ or ]
대소문자 변환 : command + shift + u control + shift + u
한줄 잘라내기 :  command + x (shift 로 미선택시) shift + delete
한줄 복사 : command + c (shift 미선택시)
import :  ctrl + option + o ctrl + alt + o
hide tool window :   shift + esc
max tool window :  command + shift + ‘
tool resize :  command + shift + 방향키
tool tab 이동 :  option + [ or ]
quick document :  f1  Ctrl + Q : view javadoc at popup f2
전체화면 : command + shift + f12 ctrl + shift + f12
freemode :  command + option + ctrl + f (custom set)
close :  command + w - 현재 소스닫기
close all :  command + shift + w
단어선택 :  ctrl + g ctrl + w
   (누를때마다 같은 파일에 있는 같은 단어 선택됨)
find next :  command + g f3
코드폴딩 :  command + (+) or (-) ctrl + (+) or (-)
코드 전체 폴딩 :  command + shift + (+) or (-) ctrl + shift +  (+) or (-)
show context menu (마우스 우클릭 - custom key) ctrl + c
implement method
(상속 메소드 구현)
ctrl + i ctrl + i
파라미터 정보 :  command + p ctrl + p
override method :  ctrl + o CTRL + O : OVERRIDE
에러부분 찾기 Navigating to Next/Previous Error  :  F2 (SHIFT+F2) 
quick-fixes :   option (alt) + Enter  CTRL + 1
editor focus :  ESC  f12
마지막에 열린창으로 돌아가기 : f12
사용 가능한 메소드 자동 추가 getter, setter :  command + n ( 소스코드 상에서 ) alt + insert ALT+SHFIT+S, R
파일안에서 찾기 (단어) :  command + f CTRL + F
프로젝트안에서 찾기 (단어) :  command + shift + f CTRL + SHIFT + F
클래스내 메소드 검색 (클래스 구조) :  command + f12 CTRL + F12
최근 수정한곳 찾기 :  command + [ or ] CTRL + ALT + 좌 OR 우
(인텔 그래픽 카드 관련 서비스 중지 services.msc)
마지막 수정한곳으로 :  command + shift + backspace  CTRL + SHIFT + BACKSPACE

코드(메소드등) 프로젝트내에서 시용하는곳 찾기

opt + f7 ,   (custom) opt+7
alt + f7
코드(메소드등 ) 
프로젝트내에서 사용하는곳 찾기 - 레이어팝업 : 

opt + cmd + f7 , (custom) opt+cmd+7
alt + ctrl + f7 
코드(메소드등 ) 현재파일에서 사용하는곳 찾기 :

cmd + f7 , (custom) ctrl+cmd+7
ctrl + f7
코드(메소드등 ) 현재 파일에서 사용하는 곳 highlighting :

shift + cmd + f7 , (custom) shift+cmd+7
shift + ctrl + f7
코드(메소드등 ) 사용하는곳 
찾기 (scope 사용자설정) : 

shift + opt + cmd + f7 , (custom) shift+opt+cmd+7
shift + alt + ctrl + f7

2016년 5월 23일 월요일

intellij Editor Tabs (창분할 관련)

intellij 또는 eclipse 로 개발하다가 소스화면을 분할해서 봐야 할 경우가 생길때
해당 소스의 상단 탭에서 마우스 우클릭하면 탭 분할과 관련된 기능을 선택할 수 있다.






























또는 아래와 같이 창 분할과 관련된 메뉴에 단축키를 지정해서 사용할 수 있다.
다음은 현재 지정해서 사용하는 단축키와 해당 기능들의 간략한 설명이다

Preferences.. [단축키 Command + , ] > Keymap


[tab 관련 단축키 지정]

Split Vertically : [ ctrl + ' ]  - 현재 소스 우측에 새로이 새탭을 연다 (동일소스)
Split Horizontally : [ ctrl + / ] - 현재 소스 하단에 새롭게 새탭을 연다 (동일소스)
Move Right : [ ctrl + command + ‘ ] - 현재소스를 새로운 탭(우측방향)으로 이동
     (현재 분할창에 하나의 소스만 있을 경우 동작안함)
Move Down : [ ctrl + command + / ] - 현재소스를 새로운 탭(하단방향)으로 이동
     (현재 분할창에 하나의 소스만 있을 경우 동작안함)

Unsplit : [ ctrl + u ] - 현재 분할창 닫기 (현재탭 소스가 부모창으로 이동되고 분할창만 닫힘)
      - 포커스가 부모창에 있을경우 자식창 닫힘 (창 통합)
Unsplit all : [ ctrl + command + u ] - 모든 분할창 하나의 창으로 닫힘

Goto Next Spliter : [ ctrl + ] ] - 다음 분할창으로 포커스 이동
Goto Previous Spliter : [ ctrl +  ] - 이전 분할창으로 포커스 이동

Select Next Tab : [ ctrl + command + ]    or Shift + Command +  ]  - 탭이동 (같은 분할창 내에서 탭 이동)
Select Previous Tab : [ ctrl + command + [    or Shift + Command +  ] - 탭이동 (같은 분할창 내에서 탭 이동)

Move To Opposite Group : [ ctrl + ;  or option + m ] - 분할창 이동 (현재소스가 다른 분할창으로 이동, 다른 분할 창이 있을 경우에만)
Open In Opposite Group : [ ctrl + command + ; or option + c ] - 분할창 복사 (현재 소스탭을 다른 분할창으로 복사, 다른 분할 창이 있을 경우에만)


2016년 5월 17일 화요일

맥(os x) 키배열 변경 (hhkb style) 및 방향키 변경

1. karabiner 를 통해서 vi 방식인 hjkl 로 변경




-> 손적응이 쉽지 않아 다음 방법으로 변경


2. fn + ijkl 방식으로 변경

vi mode  방식보다는 편했지만...





뭔가 불편해서 좀더 나은 방법을 검색


3. custom setting  (ctrl + ijkl)



키코드 확인
Misc & Uninstall > Helper Applications > Launch EventViewer

커스텀 셋팅
Misc & Uninstall > Custom Setting : Open private.xml

셋팅값






  Control ijkl
  test
  __KeyToKey__KeyCode::RawValue::0x22, ModifierFlag::CONTROL_L, KeyCode::CURSOR_UP
  __KeyToKey__KeyCode::RawValue::0x26, ModifierFlag::CONTROL_L, KeyCode::CURSOR_LEFT
  __KeyToKey__KeyCode::RawValue::0x28, ModifierFlag::CONTROL_L, KeyCode::CURSOR_DOWN
  __KeyToKey__KeyCode::RawValue::0x25, ModifierFlag::CONTROL_L, KeyCode::CURSOR_RIGHT



가장 편하긴 하지만.. intellij 단축키와 중복되는 경우가 생김


4. custom setting (hhkb type, shift_r + [ ; ' / )


조금 불편하지만 해피해킹과 유사하다는 장점




  hhkb type
  test
  __KeyToKey__KeyCode::RawValue::0x21, ModifierFlag::SHIFT_R, KeyCode::CURSOR_UP
  __KeyToKey__KeyCode::RawValue::0x29, ModifierFlag::SHIFT_R, KeyCode::CURSOR_LEFT
  __KeyToKey__KeyCode::RawValue::0x2c, ModifierFlag::SHIFT_R, KeyCode::CURSOR_DOWN
  __KeyToKey__KeyCode::RawValue::0x27, ModifierFlag::SHIFT_R, KeyCode::CURSOR_RIGHT

  __KeyToKey__KeyCode::RawValue::0x28, ModifierFlag::SHIFT_R, KeyCode::HOME
  __KeyToKey__KeyCode::RawValue::0x2b, ModifierFlag::SHIFT_R, KeyCode::END

  __KeyToKey__KeyCode::RawValue::0x25, ModifierFlag::SHIFT_R, KeyCode::PAGEUP
  __KeyToKey__KeyCode::RawValue::0x2f, ModifierFlag::SHIFT_R, KeyCode::PAGEDOWN




5. 현재 사용하고 있는 setting

control + ikjl (상하좌우)
control + uo (pageup, pagedown)
control + hn (home, end)

control + ikjl uo hn 키는 control + fn + ikjl uo hn 키로 변경

karabiner 에서 다중키입력 변환(치환) 방법
https://pqrs.org/osx/karabiner/xml.html.en



------------- private.xml ---------------





  ikjl type
  test



 
    __KeyToKey__
    KeyCode::I,ModifierFlag::CONTROL_L | ModifierFlag::FN,
    KeyCode::I,ModifierFlag::CONTROL_L
 
 
    __KeyToKey__
    KeyCode::K,ModifierFlag::CONTROL_L | ModifierFlag:: FN,
    KeyCode::K,ModifierFlag::CONTROL_L
 
 
    __KeyToKey__
    KeyCode::J,ModifierFlag::CONTROL_L | ModifierFlag:: FN,
    KeyCode::J,ModifierFlag::CONTROL_L
 
 
    __KeyToKey__
    KeyCode::L,ModifierFlag::CONTROL_L | ModifierFlag::FN,
    KeyCode::L,ModifierFlag::CONTROL_L
 
 
    __KeyToKey__
    KeyCode::U,ModifierFlag::CONTROL_L | ModifierFlag::FN,
    KeyCode::U,ModifierFlag::CONTROL_L
 
 
    __KeyToKey__
    KeyCode::O,ModifierFlag::CONTROL_L | ModifierFlag::FN,
    KeyCode::O,ModifierFlag::CONTROL_L
 
 
    __KeyToKey__
    KeyCode::H,ModifierFlag::CONTROL_L | ModifierFlag::FN,
    KeyCode::H,ModifierFlag::CONTROL_L
 
 
    __KeyToKey__
    KeyCode::N,ModifierFlag::CONTROL_L | ModifierFlag::FN,
    KeyCode::N,ModifierFlag::CONTROL_L
 

  __KeyToKey__KeyCode::RawValue::0x22, ModifierFlag::CONTROL_L, KeyCode::CURSOR_UP
  __KeyToKey__KeyCode::RawValue::0x26, ModifierFlag::CONTROL_L, KeyCode::CURSOR_LEFT
  __KeyToKey__KeyCode::RawValue::0x28, ModifierFlag::CONTROL_L, KeyCode::CURSOR_DOWN
  __KeyToKey__KeyCode::RawValue::0x25, ModifierFlag::CONTROL_L, KeyCode::CURSOR_RIGHT

  __KeyToKey__KeyCode::RawValue::0x4, ModifierFlag::CONTROL_L, KeyCode::HOME
  __KeyToKey__KeyCode::RawValue::0x2d, ModifierFlag::CONTROL_L, KeyCode::END
  __KeyToKey__KeyCode::RawValue::0x20, ModifierFlag::CONTROL_L, KeyCode::PAGEUP
  __KeyToKey__KeyCode::RawValue::0x1f, ModifierFlag::CONTROL_L, KeyCode::PAGEDOWN


---- fn 위치 추가

ijkm + fn type
test


__KeyToKey__KeyCode::COMMAND_R, KeyCode::FN

__KeyToKey__KeyCode::CONTROL_L, ModifierFlag:: FN, KeyCode::CAPSLOCK


__KeyToKey__KeyCode::RawValue::0x22, ModifierFlag::FN, KeyCode::CURSOR_UP
__KeyToKey__KeyCode::RawValue::0x26, ModifierFlag::FN, KeyCode::CURSOR_LEFT
__KeyToKey__KeyCode::RawValue::0x28, ModifierFlag::FN, KeyCode:: CURSOR_RIGHT
__KeyToKey__KeyCode::RawValue::0x2e, ModifierFlag::FN, KeyCode::CURSOR_DOWN

__KeyToKey__KeyCode::RawValue::0x4, ModifierFlag::FN, KeyCode::HOME
__KeyToKey__KeyCode::RawValue::0x2d, ModifierFlag::FN, KeyCode::END
__KeyToKey__KeyCode::RawValue::0x20, ModifierFlag::FN, KeyCode::PAGEUP
__KeyToKey__KeyCode::RawValue::0x1f, ModifierFlag::FN, KeyCode::PAGEDOWN



------- 2016.06 현재 적용 코드



f1~f12 function 키 = 숫자키 + 우측 option   조합 추가등 hhkb 배열 추가



<?xml version="1.0"?>
<root>
 <item>
  <name>HHKB type</name>
  <identifier>test</identifier>


  <autogen>__KeyToKey__KeyCode::TAB, ModifierFlag:: COMMAND_R, KeyCode::CAPSLOCK</autogen>


  <autogen>__KeyToKey__KeyCode::BRACKET_LEFT, ModifierFlag::OPTION_R, KeyCode::CURSOR_UP</autogen>
  <autogen>__KeyToKey__KeyCode::SEMICOLON, ModifierFlag::OPTION_R, KeyCode::CURSOR_LEFT</autogen>
  <autogen>__KeyToKey__KeyCode::QUOTE, ModifierFlag::OPTION_R, KeyCode:: CURSOR_RIGHT</autogen>
  <autogen>__KeyToKey__KeyCode::SLASH, ModifierFlag::OPTION_R, KeyCode::CURSOR_DOWN</autogen>

  <autogen>__KeyToKey__KeyCode::K, ModifierFlag::OPTION_R, KeyCode::HOME</autogen>
  <autogen>__KeyToKey__KeyCode::COMMA, ModifierFlag::OPTION_R, KeyCode::END</autogen>
  <autogen>__KeyToKey__KeyCode::L, ModifierFlag::OPTION_R, KeyCode::PAGEUP</autogen>
  <autogen>__KeyToKey__KeyCode::DOT, ModifierFlag::OPTION_R, KeyCode::PAGEDOWN</autogen>

  <autogen>__KeyToKey__KeyCode::DELETE, ModifierFlag::OPTION_R, KeyCode::FORWARD_DELETE</autogen>

  <autogen>__KeyToKey__KeyCode::1, ModifierFlag::OPTION_R, KeyCode::F1</autogen>
  <autogen>__KeyToKey__KeyCode::2, ModifierFlag::OPTION_R, KeyCode::F2</autogen>
  <autogen>__KeyToKey__KeyCode::3, ModifierFlag::OPTION_R, KeyCode::F3</autogen>
  <autogen>__KeyToKey__KeyCode::4, ModifierFlag::OPTION_R, KeyCode::F4</autogen>
  <autogen>__KeyToKey__KeyCode::5, ModifierFlag::OPTION_R, KeyCode::F5</autogen>
  <autogen>__KeyToKey__KeyCode::6, ModifierFlag::OPTION_R, KeyCode::F6</autogen>
  <autogen>__KeyToKey__KeyCode::7, ModifierFlag::OPTION_R, KeyCode::F7</autogen>
  <autogen>__KeyToKey__KeyCode::8, ModifierFlag::OPTION_R, KeyCode::F8</autogen>
  <autogen>__KeyToKey__KeyCode::9, ModifierFlag::OPTION_R, KeyCode::F9</autogen>
  <autogen>__KeyToKey__KeyCode::0, ModifierFlag::OPTION_R, KeyCode::F10</autogen>
  <autogen>__KeyToKey__KeyCode::MINUS, ModifierFlag::OPTION_R, KeyCode::F11</autogen>
  <autogen>__KeyToKey__KeyCode::EQUAL, ModifierFlag::OPTION_R, KeyCode::F12</autogen>
  <autogen>__KeyToKey__KeyCode::BACKQUOTE, ModifierFlag::OPTION_R, KeyCode::ESCAPE</autogen>

------- 2016.08 단축키 추가 (context menu key 추가) 마우스 우클릭 기능

  <autogen>__KeyToKey__ KeyCode::RETURN, ModifierFlag::OPTION_R, PointingButton::RIGHT</autogen>

</item>
</root>



----------- 2017.11 hhkb 를 위한 설정
esc 와 backquote 키 swap 에 따른 설정 (설정 순서 중요)


<?xml version="1.0"?>
<root>
<item>
<name>HHKB type</name>
<identifier>test</identifier>

<autogen>__KeyToKey__KeyCode::BACKQUOTE, ModifierFlag::COMMAND_R, ConsumerKeyCode::POWER</autogen>
<autogen>__KeyToKey__KeyCode::ESCAPE, ModifierFlag::COMMAND_R, KeyCode::ESCAPE</autogen>



<autogen>__KeyToKey__KeyCode::TAB, ModifierFlag:: COMMAND_R, KeyCode::CAPSLOCK</autogen>

<autogen>__KeyToKey__KeyCode::U, ModifierFlag::COMMAND_R, KeyCode::HOME</autogen>
<autogen>__KeyToKey__KeyCode::I, ModifierFlag::COMMAND_R, KeyCode::END</autogen>
<autogen>__KeyToKey__KeyCode::COMMA, ModifierFlag::COMMAND_R, KeyCode::PAGEUP</autogen>
<autogen>__KeyToKey__KeyCode::M, ModifierFlag::COMMAND_R, KeyCode::PAGEDOWN</autogen>

<autogen>__KeyToKey__KeyCode::BACKQUOTE, KeyCode::ESCAPE</autogen>  
<autogen>__KeyToKey__KeyCode::ESCAPE, KeyCode::BACKQUOTE</autogen>


<autogen>__KeyToKey__KeyCode::1, ModifierFlag::COMMAND_R, KeyCode::F1</autogen>
<autogen>__KeyToKey__KeyCode::2, ModifierFlag::COMMAND_R, KeyCode::F2</autogen>
<autogen>__KeyToKey__KeyCode::3, ModifierFlag::COMMAND_R, KeyCode::F3</autogen>
<autogen>__KeyToKey__KeyCode::4, ModifierFlag::COMMAND_R, KeyCode::F4</autogen>
<autogen>__KeyToKey__KeyCode::5, ModifierFlag::COMMAND_R, KeyCode::F5</autogen>
<autogen>__KeyToKey__KeyCode::6, ModifierFlag::COMMAND_R, KeyCode::F6</autogen>
<autogen>__KeyToKey__KeyCode::7, ModifierFlag::COMMAND_R, KeyCode::F7</autogen>
<autogen>__KeyToKey__KeyCode::8, ModifierFlag::COMMAND_R, KeyCode::F8</autogen>
<autogen>__KeyToKey__KeyCode::9, ModifierFlag::COMMAND_R, KeyCode::F9</autogen>
<autogen>__KeyToKey__KeyCode::0, ModifierFlag::COMMAND_R, KeyCode::F10</autogen>
<autogen>__KeyToKey__KeyCode::MINUS, ModifierFlag::COMMAND_R, KeyCode::F11</autogen>
<autogen>__KeyToKey__KeyCode::EQUAL, ModifierFlag::COMMAND_R, KeyCode::F12</autogen>
<autogen>__KeyToKey__KeyCode::DELETE, ModifierFlag:: COMMAND_R, KeyCode::FORWARD_DELETE</autogen>
<autogen>__KeyToKey__ KeyCode::RETURN, ModifierFlag::COMMAND_R, PointingButton::RIGHT</autogen>

</item>
</root>



--- 2017.11 hhkb media 키 추가 및 macbook type 추가




<?xml version="1.0"?>
<root>
<item>
<name>HHKB type</name>
<identifier>hhkb</identifier>

<autogen>__KeyToKey__KeyCode::BACKQUOTE, ModifierFlag::COMMAND_R, ConsumerKeyCode::POWER</autogen>
<autogen>__KeyToKey__KeyCode::ESCAPE, ModifierFlag::COMMAND_R, KeyCode::ESCAPE</autogen>



<autogen>__KeyToKey__KeyCode::TAB, ModifierFlag:: COMMAND_R, KeyCode::CAPSLOCK</autogen>

<autogen>__KeyToKey__KeyCode::U, ModifierFlag::COMMAND_R, KeyCode::HOME</autogen>
<autogen>__KeyToKey__KeyCode::I, ModifierFlag::COMMAND_R, KeyCode::END</autogen>
<autogen>__KeyToKey__KeyCode::COMMA, ModifierFlag::COMMAND_R, KeyCode::PAGEUP</autogen>
<autogen>__KeyToKey__KeyCode::M, ModifierFlag::COMMAND_R, KeyCode::PAGEDOWN</autogen>

<autogen>__KeyToKey__KeyCode::BACKQUOTE, KeyCode::ESCAPE</autogen>  
<autogen>__KeyToKey__KeyCode::ESCAPE, KeyCode::BACKQUOTE</autogen>


<autogen>__KeyToKey__KeyCode::1, ModifierFlag::COMMAND_R, KeyCode::F1</autogen>
<autogen>__KeyToKey__KeyCode::2, ModifierFlag::COMMAND_R, KeyCode::F2</autogen>
<autogen>__KeyToKey__KeyCode::3, ModifierFlag::COMMAND_R, KeyCode::F3</autogen>
<autogen>__KeyToKey__KeyCode::4, ModifierFlag::COMMAND_R, KeyCode::F4</autogen>
<autogen>__KeyToKey__KeyCode::5, ModifierFlag::COMMAND_R, KeyCode::F5</autogen>
<autogen>__KeyToKey__KeyCode::6, ModifierFlag::COMMAND_R, KeyCode::F6</autogen>
<autogen>__KeyToKey__KeyCode::7, ModifierFlag::COMMAND_R, KeyCode::F7</autogen>
<autogen>__KeyToKey__KeyCode::8, ModifierFlag::COMMAND_R, KeyCode::F8</autogen>
<autogen>__KeyToKey__KeyCode::9, ModifierFlag::COMMAND_R, KeyCode::F9</autogen>
<autogen>__KeyToKey__KeyCode::0, ModifierFlag::COMMAND_R, KeyCode::F10</autogen>
<autogen>__KeyToKey__KeyCode::MINUS, ModifierFlag::COMMAND_R, KeyCode::F11</autogen>
<autogen>__KeyToKey__KeyCode::EQUAL, ModifierFlag::COMMAND_R, KeyCode::F12</autogen>
<autogen>__KeyToKey__KeyCode::DELETE, ModifierFlag:: COMMAND_R, KeyCode::FORWARD_DELETE</autogen>
<autogen>__KeyToKey__ KeyCode::RETURN, ModifierFlag::COMMAND_R, PointingButton::RIGHT</autogen>
<autogen>__KeyToKey__ KeyCode::RawValue::0x5a, ConsumerKeyCode::MUSIC_PLAY </autogen>
<autogen>__KeyToKey__ KeyCode::F13, ModifierFlag::SHIFT_L, ConsumerKeyCode::MUSIC_PREV</autogen>
<autogen>__KeyToKey__ KeyCode::F13, ModifierFlag::SHIFT_R, ConsumerKeyCode::MUSIC_PREV</autogen>
<autogen>__KeyToKey__ KeyCode::F13, ConsumerKeyCode::MUSIC_NEXT</autogen>
</item>

<item>
<name>mac type</name>
<identifier>mac</identifier>

<autogen>__KeyToKey__KeyCode::BACKQUOTE, ModifierFlag::COMMAND_R, KeyCode::ESCAPE</autogen>
<autogen>__KeyToKey__KeyCode::TAB, ModifierFlag:: COMMAND_R, KeyCode::CAPSLOCK</autogen>

<autogen>__KeyToKey__KeyCode::U, ModifierFlag::COMMAND_R, KeyCode::HOME</autogen>
<autogen>__KeyToKey__KeyCode::I, ModifierFlag::COMMAND_R, KeyCode::END</autogen>
<autogen>__KeyToKey__KeyCode::COMMA, ModifierFlag::COMMAND_R, KeyCode::PAGEUP</autogen>
<autogen>__KeyToKey__KeyCode::M, ModifierFlag::COMMAND_R, KeyCode::PAGEDOWN</autogen>

<autogen>__KeyToKey__KeyCode::1, ModifierFlag::COMMAND_R, KeyCode::F1</autogen>
<autogen>__KeyToKey__KeyCode::2, ModifierFlag::COMMAND_R, KeyCode::F2</autogen>
<autogen>__KeyToKey__KeyCode::3, ModifierFlag::COMMAND_R, KeyCode::F3</autogen>
<autogen>__KeyToKey__KeyCode::4, ModifierFlag::COMMAND_R, KeyCode::F4</autogen>
<autogen>__KeyToKey__KeyCode::5, ModifierFlag::COMMAND_R, KeyCode::F5</autogen>
<autogen>__KeyToKey__KeyCode::6, ModifierFlag::COMMAND_R, KeyCode::F6</autogen>
<autogen>__KeyToKey__KeyCode::7, ModifierFlag::COMMAND_R, KeyCode::F7</autogen>
<autogen>__KeyToKey__KeyCode::8, ModifierFlag::COMMAND_R, KeyCode::F8</autogen>
<autogen>__KeyToKey__KeyCode::9, ModifierFlag::COMMAND_R, KeyCode::F9</autogen>
<autogen>__KeyToKey__KeyCode::0, ModifierFlag::COMMAND_R, KeyCode::F10</autogen>
<autogen>__KeyToKey__KeyCode::MINUS, ModifierFlag::COMMAND_R, KeyCode::F11</autogen>
<autogen>__KeyToKey__KeyCode::EQUAL, ModifierFlag::COMMAND_R, KeyCode::F12</autogen>
<autogen>__KeyToKey__KeyCode::BACKSLASH, ModifierFlag:: COMMAND_R, KeyCode::FORWARD_DELETE</autogen>
<autogen>__KeyToKey__ KeyCode::RETURN, ModifierFlag::COMMAND_R, PointingButton::RIGHT</autogen>
</item>
</root>

Intelij 설정 및 plugin

1. preferences... (settings...) Appearance & Behavior > Appearance - Window Options        ✓   Show memory indicator Editor &...