최근 와콤에서 와콤원2를 출시하면서 번들펜으로 펜버튼이 2개 있는 "와콤원펜2" 를 출시했습니다. 

 

와콤원2는 와콤원급의 엔트리 모델이면서 터치가 추가되는 등 여러 업그레이드가 있긴 하나, 펜 타블렛 자체가 아닌 타 EMR 기기 사용자들 입장에서 가장 눈에 띄는 특이사항은 와콤원펜2가 기존 와콤원펜과 같이 패널신호가 타사 제공용 와콤EMR 패널및 펜 신호와 호환되면서 와콤 EMR기기 중에서는 매우 드물게 펜이 2개 달린 제품이라는 점입니다. 

제 기억에는 한참 전에 펜2개 달린 와콤 EMR펜이 있기는 했던 것으로 기억하나, 최근에 나온 것은 이 제품이 유일합니다. 

 

펜 버튼 리맵핑 관련 Tabletpcreview 포럼에서 공유되었던 AHK 스크립트 백업본은 다음 글을 참조하시면 됩니다. 

 

https://signfang.tistory.com/356

 

Tabletpcreview 포럼 출처 ahk 스크립트 백업

갤럭시북 및 기타 와콤 EMR기기 커스터마이징 관련 자료가 많이 공유되던 Tabletpcreview 사이트의 포럼이 폐쇄되면서 해당 포럼의 "갤럭시 북" 페이지에서 공유되던 스크립트들도 모두 소실되었습

signfang.tistory.com

 

 

해당 글에서 중간에 리맵핑에 사용되는 신호를 말씀드리면서 다음과 같은 HEX 신호를 사용한다고 했는데,

 

0: 펜이 인식되었으며 호버링 중

1: 펜이 화면을 터치함

8: 펜이 화면을 터치하지 않은 상태에서 펜 버튼을 누름

12: 펜이 화면을 터치한 상태에서 펜 버튼을 누름

 

와콤원펜2의 두번째 펜 버튼은 "16" 을 사용합니다. 즉 

 

0: 펜이 인식되었으며 호버링 중

1: 펜이 화면을 터치함

8: 펜이 화면을 터치하지 않은 상태에서 첫번째 펜 버튼을 누름

12: 펜이 화면을 터치한 상태에서 펜 버튼을 누름

16: 펜이 화면을 터치하지 않은 상태에서 두번째 펜 버튼을 누름

 

을 인식하여 재할당하면 첫번째 펜버튼과 두번째 펜버튼에 서로 다른 기능을 할당할 수 있습니다. 

유의하셔야 할 점은 "12" 신호는 어떤 펜 버튼을 누른 상태에서도 동일하게 작동한다는 것입니다. "펜 버튼을 누른 채로 화면을 긋기" 동작은 하나만 할당 가능합니다. 

 

여담이지만 "지우개 펜"이 달린 갤럭시북2 펜의 지우개 부분도 신호 "12"를 사용하며, 갤럭시 폴드 시리즈용 S펜은 1과 12 신호가 서로 반대로 되어 있습니다. (다른 EMR펜은 경고 메시지가 표시되나 갤럭시북2의 지우개 펜 부분은 정상적으로 인식함)

 

예시 스크립트는 다음과 같습니다. 

 

SendMode Input
SetWorkingDir %A_ScriptDir%

global PEN_NOT_HOVERING := 0x0 ; Pen is moved away from screen.

#include AHKHID.ahk

WM_INPUT := 0xFF
USAGE_PAGE := 13
USAGE := 2

AHKHID_UseConstants()

AHKHID_AddRegister(1)
AHKHID_AddRegister(USAGE_PAGE, USAGE, A_ScriptHwnd, RIDEV_INPUTSINK)
AHKHID_Register()

OnMessage(WM_INPUT, "Work")

Work(wParam, lParam) {

    Local type, inputInfo, inputData, raw, proc
    static lastInput := PEN_NOT_HOVERING

    Critical

    type := AHKHID_GetInputInfo(lParam, II_DEVTYPE)

    if (type = RIM_TYPEHID) {
        inputData := AHKHID_GetInputData(lParam, uData)

    raw := NumGet(uData, 0, "UInt")
        proc := (raw >> 8) & 0x1F

    if (proc <> lastInput) {
        if (proc == 16)
		{
			Click left
			Click left
		}
		if (proc == 8)
        {
			Click right
        }
        lastInput := proc
    }
    }
}

 

 

해당 스크립트 실행시 "두번째 펜 버튼" 클릭시 더블클릭, "첫번째 펜 버튼" 클릭시 우클릭 동작을 합니다. 

 

이전 글에서도 언급했던대로 해당 스크립트는 와콤원 등 와콤기기에선 동작하지 않고, 와콤 EMR 기기에서만 동작합니다. 

갤럭시북 및 기타 와콤 EMR기기 커스터마이징 관련 자료가 많이 공유되던 Tabletpcreview 사이트의 포럼이 폐쇄되면서 해당 포럼의 "갤럭시 북" 페이지에서 공유되던 스크립트들도 모두 소실되었습니다. ( http://forum.tabletpcreview.com/threads/samsung-galaxy-book-discussion-thread.71795/ 등 , 현재는 접속 불가.)

 

Wayback machine 사용시 접근 가능하기는 하나 (https://web.archive.org/web/20220125221312/http://forum.tabletpcreview.com/threads/samsung-galaxy-book-discussion-thread.71795/) 깨진 페이지도 많고 로딩도 오래 걸리고 검색도 되지 않아 원하는 자료를 찾는 데 불편함이 많습니다. 

 

기존 해당 사이트에서 받아서 백업해두었던 자료들을 공유합니다. 

 

1. 해당 스크립트들은 모두 내용을 복사하여 ".ahk" 확장자로 저장한 후 Autohotkey V1 으로 실행해야 합니다. 2.0 이상 버전에선 작동하지 않습니다. https://www.autohotkey.com/download/ahk-install.exe

2. 해당 스크립트들은 "AHKHID" 추가 파일이 필요하며, "AHKHID.ahk" 파일과 같은 폴더에 있어야 합니다. 다운로드 링크: https://github.com/jleb/AHKHID/archive/refs/heads/master.zip

3. 해당 스크립트들은 제목에 표기한 닉네임(Forum handle)을 쓰는 분들이 만들었으며, 저는 단순히 백업 목적으로만 재게시합니다. 

 

 

모든 스크립트들의 기본적인 동작법은 다음과 같습니다.

 

1) AHKHID로 HID기기의 모든 신호를 읽어 옴. 위치, 사용자 입력...

2) HEX data 형태로 주어지는 값을 처음에 누군가 해석하여 "펜버튼 클릭", "펜 인식" 동작을 분석

3) "펜 인식" 상태에서 "신규 입력 data" 값이 "기존 입력 data"값과 달라지고, 그 값이 "펜버튼 클릭" 동작과 일치하면 user가 지정한 스크립트를 수행함 (A 스크립트)

4) 추후 다른 사용자들이 HEX data를 추가적으로 분석하여 "펜 클릭", "펜 호버", "펜 버튼 누른 상태로 드래그" 등의 신호 를 발견하여 해당 신호를 기반으로 스크립트 작성 (B 스크립트)

 

해당 스크립트들은 와콤 EMR 기기, 즉 갤럭시 북이나 일부 레노버 제품 등 와콤 제품이 아닌 제품에서만 동작합니다. 와콤 원 등 와콤이 드라이버를 제공하는 기기의 경우 해당 스크립트가 작동하지 않습니다.

 

B 스크립트 내부에도 있으나, 사용하는 HEX 신호는 다음과 같습니다. 

0: 펜이 인식되었으며 호버링 중
1: 펜이 화면을 터치함
8: 펜이 화면을 터치하지 않은 상태에서 펜 버튼을 누름 <- 리맵핑에 사용
12: 펜이 화면을 터치한 상태에서 펜 버튼을 누름

 

A) 가장 단순한 버전 -  펜버튼 리매핑 지원 (Fotd 제작)

 

SendMode Input
SetWorkingDir %A_ScriptDir%

global PEN_NOT_HOVERING := 0x0 ; Pen is moved away from screen.

#include AHKHID.ahk

WM_INPUT := 0xFF
USAGE_PAGE := 13
USAGE := 2

AHKHID_UseConstants()

AHKHID_AddRegister(1)
AHKHID_AddRegister(USAGE_PAGE, USAGE, A_ScriptHwnd, RIDEV_INPUTSINK)
AHKHID_Register()

OnMessage(WM_INPUT, "Work")

Work(wParam, lParam) {

    Local type, inputInfo, inputData, raw, proc
    static lastInput := PEN_NOT_HOVERING

    Critical

    type := AHKHID_GetInputInfo(lParam, II_DEVTYPE)

    if (type = RIM_TYPEHID) {
        inputData := AHKHID_GetInputData(lParam, uData)

    raw := NumGet(uData, 0, "UInt")
        proc := (raw >> 8) & 0x1F

    if (proc <> lastInput) {
        if (proc == 8)
        {
			Click right
            ;Click left
			;Click left
        }
        lastInput := proc
    }
    }
}

 

사실 대부분 용도에는 이 정도 기능만으로도 충분합니다. 

현재 상태는 펜버튼 클릭시 우클릭으로 동작합니다. "Click right" 코멘트하고 (;)  "Click left" 두개를 코멘트 해제하면 더블클릭으로 동작합니다.

해당 부분을 

        if (proc == 8)
        {
			Send {A}
        }

이와 같이 바꾸면 펜버튼 클릭이 "A" 입력으로 바뀝니다. 

 

B) 분석 코멘트 및 기능 추가 버전 (Serega, Poton812, LeoZappa)

/*
Original script and all the hard work by Serega and Piton812
posted in http://forum.tabletpcreview.com/threads/samsung-galaxy-book-discussion-thread.71795/page-370#post-528013

http://forum.tabletpcreview.com/threads/samsung-galaxy-book-discussion-thread.71795/page-375#post-528538

Modifications and gesture support by LeoZappa, posted in same thread
*/

SendMode Input
SetWorkingDir %A_ScriptDir%

; mouse coordinates are absolute and relative to screen rather than active window:
Coordmode, Mouse, Screen


;--------------------------------------------------------------
; ACTIONS ON BUTTON RELEASE
;--------------------------------------------------------------
; Treshold in milliseconds for single-click
; This is also the delay between release and triggering of the mouse right-click(pr other actions)
global RELEASE_TRESHOLD := 300 ;in milliseconds

; KEEP THESE FUNCTIONS SIMPLE AND AVOID SLEEP/WAIT
ReleaseActions(pressX,pressY,releaseX,releaseY,releaseCount) {
    if ( releaseCount > 1){
        ;double press-and-release of button while hovering, or more (triple etc.)
        MouseClick, middle, pressX, pressY, 1, 0
    }else{
        ;single press-and-release of button while hovering triggers right mouse click
        MouseClick, right, pressX, pressY, 1, 0
    }
}
;--------------------------------------------------------------




;--------------------------------------------------------------
; LONG PRESS WHILE HOVERING
;--------------------------------------------------------------
; Write the duration of a LONG HOVER PRESS, in milliseconds
; Set it to something like 100000 (100 secs) to effectively disable long press functionality

global LONG_HOVER_PRESS := 1000 ;in milliseconds

LongPressActions(pressX,pressY,releaseCount) {
    if (releaseCount > 0) {
        Send #v
    }else{
    Send +#s
    }
}

;--------------------------------------------------------------



;--------------------------------------------------------------
; FLICK ACTIONS
; Triggered by moving left/right/up/dows while pressing button (and hovering).
; Flick gesture is completed by either releasing the button or lifting pen away from screen.
; Also supports release count (e.g. press and release, press again and flick)
;--------------------------------------------------------------

global FLICK_DIST := 30 ; in px of the screen

FlickActions(pressX,pressY,deltaX,deltaY,releaseCount) {
    if (Abs(deltaX) > Abs(deltaY) ) {
        if (deltaX > 0) {
        ; flick right action
            if (releaseCount > 1){
            ; workaround to use alternate Redo shortcut
            ; when doing "press and release"+"flick right"
            ; in case some programs don't understand Ctrl+y
                Send +^z
            }else{
                Send ^y
            }
        }else{
        ; flick left action
            Send ^z
        }
    }else{
        if (deltaY > 0) {
        ; flick up action
            Send !{Esc}
            WinGet isMin, MinMax, A
            if ( isMin < 0 ) {
                WinRestore A
            }
        }else{
        ; flick down action
            Send +!{Esc}
            WinGet isMin, MinMax, A
            if ( isMin < 0 ) {
                WinRestore A
            }
        }  
    }
}



; write the coordinates you get from "example2_with_min_max_XY.ahk"
global Xmin := 0
global Xmax := 25272
global Ymin := 0
global Ymax := 16848
; write the resolution of your display
global screenXmax := 2160
global screenYmax := 1440


; calculation the ratio to convert pen coordinates to mouse coordinates
global kX := (Xmax - Xmin) / screenXmax
global kY := (Ymax - Ymin) / screenYmax

; Set up our pen constants
global PEN_HOVERING := 0 ; Pen is inside the area where screen see the pen and pen and don't touch the screen.
global PEN_TOUCHING := 1 ; Pen is touching screen.
global PEN_BTN_HOVERING := 8 ; Button is pressed with pen is inside the area where screen see the pen and pen and don't touch the screen.
global PEN_BTN_TOUCHING := 12 ; Button is pressed with pen is touching screen.

/*
The package from pen data flow
Package consist of 26 blocks
00 0 0 0000 0011 1111 11 1122 2222 ; Blocks address with size 4 bits
01 2 3 4567 8901 2345 67 8901 2345 ;

02 2 0 0000 0000 0000 20 0000 0000 ; Left Up of the screen
02 0 0 0000 0000 0000 20 0000 0000 ; Out of screen

02 2 0 B662 CC41 0000 20 0000 0000 ; Right Down of the screen
02 0 0 B662 CC41 0000 20 0000 0000 ; Out of screen

02 2 0 0000 0000 0000 58 0000 0000 ; Almost out of the screen (but screen still see the pen)
02 2 0 0000 0000 0000 00 0000 0000 ; Almost touching the screen (but not touching)
02 2 1 0000 0000 0100 00 6400 8403 ; Touching the screen

Resume:
xx x x xxxx xxxx xxxx xx #### #### ; ????
xx x x xxxx xxxx xxxx ## xxxx xxxx ; Z position
xx x x xxxx xxxx #### xx xxxx xxxx ; ????
xx x x xxxx #### xxxx xx xxxx xxxx ; Y position
xx x x #### xxxx xxxx xx xxxx xxxx ; X position
xx x # xxxx xxxx xxxx xx xxxx xxxx ; Using mode
xx # x xxxx xxxx xxxx xx xxxx xxxx ; Connection mode
## x x xxxx xxxx xxxx xx xxxx xxxx ; ????

Connection mode:
2 - Connection with pen exists
0 - Lose connection with pen

Using mode:
0x00 ( 0) - Hovering
0x01 ( 1) - Touching (after touching button will not be active)
0x08 ( 8) - Button is pressed when hovering
0x0C (12) - Touching with button pressed (after touching button will not be active)

X position pen:
0000 - minimum =     0
(B862) 0x62B8 - about maximum = 25272 (2160 points) 12 pen points in 1 screen point
Cursor X position = X position pen / 12

Y position pen:
0000 - minimum =     0
(D041) 0x41D0 - about maximum = 16848 (1440 points) 12 pen points in 1 screen point
Cursor Y position = Y position pen / 12
*/
/*
Convert blocks of package to date structure from variables

Package consist of 26 blocks
00 0 0 0000 0011 1111 11 1122 2222 ; Blocks address with size 4 bits
01 2 3 4567 8901 2345 67 8901 2345 ;

Data structure from variables:
UInt (32 bits) (variables 1)
00000000 ; Blocks address with size 4 bits
67452301 ;

UInt (32 bits) (variables 2)
11111100 ; Blocks address with size 4 bits
45230189 ;

UInt (32 bits) (variables 3)
22221111 ; Blocks address with size 4 bits
23018967 ;

UInt (32 bits) (variables 4)
33222222 ; Blocks address with size 4 bits
01896745 ;

*/


#include AHKHID.ahk

WM_INPUT := 0xFF
USAGE_PAGE := 13
USAGE := 2

AHKHID_UseConstants()

AHKHID_AddRegister(1)
AHKHID_AddRegister(USAGE_PAGE, USAGE, A_ScriptHwnd, RIDEV_INPUTSINK)
AHKHID_Register()

OnMessage(WM_INPUT, "Work")

Work(wParam, lParam) {
    Local type, inputInfo, inputData, raw, UsingMode, ConnectionMode
 
    static lastInput := -1 ; Last code for compare with constants

    static releaseCount := 0 ; count single/double/etc.-releases of pen button
    static valid_press := 0 ;Last state of pen

    Local sPen_Xpos ;X position cursor of pen
    Local sPen_Ypos ;Y position cursor of pen

    Local mouseXpos ;X position cursor of mouse
    Local mouseYpos ;Y position cursor of mouse

    static press_Time := 0 ; when was the button last pressed
    static release_Time :=  0 ; when was the button last released

    static pressX ;coordinates at time of button press
    static pressY
    static deltaX ;displacement at time of release of button/lift away from screen
    static deltaY

    sPen_Xpos := NumGet(uData, 2, "WORD") ;Read X position cursor of pen (offset on 2 bytes in package, size in 16 bits (2 bytes))
    sPen_Ypos := NumGet(uData, 4, "WORD") ;Read Y position cursor of pen (offset on 4 bytes in package, size in 16 bits (2 bytes))
    sPen_Xpos := (sPen_Xpos & 0xFFFF)
    sPen_Ypos := (sPen_Ypos & 0xFFFF)
    mouseXpos := sPen_Xpos / kX ; Convert to X position cursor for mouse
    mouseYpos := sPen_Ypos / kY ; Convert to Y position cursor for mouse

   
    Critical

    ;Get device type
    type := AHKHID_GetInputInfo(lParam, II_DEVTYPE) ;Connect to device
    if (type = RIM_TYPEHID) { ;if type device is "pen"
        inputData := AHKHID_GetInputData(lParam, uData) ;Connect to commands flow of pen
       
        raw := NumGet(uData, 1, "UChar") ;Read Z position cursor of pen (offset on 8 bytes in package, size in 8 bits (1 byte))
        UsingMode := raw & 0x1F ;Decode command to code using mode for compare with constants
        ConnectionMode := raw & 0x20 ; Decode command to code connection mode for tracking the information flow from pen till screen see the pen

        if (ConnectionMode <> 0){ ; Connection with pen exists

            BlockInput on ; seems to help with hiding the mouse cursor while pen is hovering. Not sure why.
               
            if (UsingMode <> lastInput) { ;Changed button state
                if (UsingMode == PEN_BTN_HOVERING) and (lastInput <> PEN_BTN_TOUCHING){
                ; just pressed button while hovering, didn't just lift pen from touching the screen
                        valid_press := 1 ;Mark pressed button state
                        press_Time := A_TickCount ; start measuring press time
                        release_Time := A_TickCount ; set release timer to something certainly larger than last value
                        pressX := mouseXpos
                        pressY := mouseYpos
                }else{
                    if (valid_press <> 0) and (lastInput == PEN_BTN_HOVERING){
                        if (UsingMode <> PEN_BTN_TOUCHING){
                            ; just released button while hovering
                            releaseCount++
                            release_Time := A_TickCount ; start measuring time from release
                            deltaX := mouseXpos - pressX
                            deltaY := mouseYpos - pressY
                        }else{ ;touched the screen again
                            valid_press := 0
                            releaseCount := 0
                        }  
                        valid_press := 0 ;Mark button released state
                    }
                }
                lastInput := UsingMode ;Save new code for new loop
            }
            if (valid_press <> 0) and (A_TickCount - press_Time > LONG_HOVER_PRESS) {
                    LongPressActions(pressX,pressY,releaseCount)
                    valid_press := 0
                    releaseCount := 0
            }else{
                ; Single-release action is right click
                if (valid_press == 0) and (releaseCount > 0 ) {
                    if (Abs(deltaX) > FLICK_DIST) or (Abs(deltaY) > FLICK_DIST) {
                        FlickActions(pressX,pressY,deltaX,deltaY,releaseCount)
                        releaseCount := 0
                    }else{
                    if (A_TickCount - release_Time > RELEASE_TRESHOLD) {
                        ReleaseActions(pressX,pressY,mouseXpos,mouseYpos,releaseCount)
                        valid_press := 0
                        releaseCount := 0
                    }
                    }
                }
            }
        }else{ ; Lost connection with pen

            BlockInput off
       
            lastInput := 0 ; set it to button released regardless of actual state
           
            if (valid_press <>0) {
                ; these are the last positions before disconnection
                deltaX := mouseXpos - pressX
                deltaY := mouseYpos - pressY
                if (Abs(deltaX) > FLICK_DIST) or (Abs(deltaY) > FLICK_DIST) {
                    FlickActions(pressX,pressY,deltaX,deltaY,releaseCount+1)
                }
            }
            releaseCount := 0
            release_Time := 0
            press_Time := 0
            valid_press := 0
        }
    }
}

 

Flick 액션 및 long press 기능을 추가한 버전입니다. 포럼에서 여러 사람이 공동 작업한 결과물로 알고 있습니다.

저는 해당 스크립트를 직접 써보지는 않아 구체적인 동작은 알지 못하나, 구현상 "FlickActions" 함수와 "ReleaseActions", "LongPressActions" 함수 내부를 변경하여 키 할당이 가능할 것으로 보입니다. 

 

 

 

와콤 원 2세대 12인치/13인치 터치가 출시되며 펜도 별도로 출시했습니다.
이번 세대 펜은 펜 버튼이 2개로 늘어나고, 상부/하부를 별도 색상으로 구매할 수 있는 것이 특징입니다. 따라서 제품 코드명도 색상 조합별로 다릅니다.
 
 

와콤원 펜 2 박스

 
 
박스 내부에는 펜 본품과 여분 펜촉 10개, 펜촉 교환기가 들어있습니다. 
 

상부/하부를 분리한 모습

 
펜 하부에 모든 동작을 담당하는 부분이 있으며, 상부는 그냥 플라스틱 조각입니다. (옵션에 따라 다른 재질 또는 펜 클립이 있는 조합으로 선택 가능)
 

상부: 와콤원펜2, 하부: 와콤원펜1

 
와콤원펜 1과 비교한 사진입니다. 전체적으로 펜팁 근처에서 부푼 형태인 "와콤 펜" 모양에서 "일반 펜" 모양에 더 가깝게 변했습니다.
 
펜 신호는 기존 와콤 EMR/와콤원 1세대와 동일한 것으로 보입니다. 와콤원 1세대에서 별다른 설정 없이 펜 신호를 인식했습니다. 갤럭시 북이나 갤럭시 탭 S펜 지원모델, 갤럭시 노트 등 와콤 EMR 지원 기기에서도 호환이 가능할 것으로 보입니다.
 
다만 펜 버튼은 2개로 늘었지만 기본적으로는 와콤 제어판에서는 와콤 원 2세대에서밖에 설정을 지원하지 않습니다. 두 버튼 모두 와콤원 1세대에서는 동일하게 동작합니다.
 
펜 버튼 신호를 읽을 수 있다면 autohotkey 등 스크립트를 이용하여 리맵핑이 가능할 수도 있을 것 같으나 아직은 확인해보지 못했습니다. 
 
 
------------------------------------
 
20231005 수정 -
갤럭시 북 등 와콤 EMR 기기에서 해당 "두번째 펜 버튼" 을 사용할 수 있는 스크립트를 만들었습니다. (와콤 원 등 와콤 드라이버 사용 기기에서는 동작하지 않습니다, 서드파티 제품만 사용가능)
https://signfang.tistory.com/357

갤럭시 북 등 와콤 EMR 기기에서 두번째 펜 버튼 사용 가능한 스크립트

최근 와콤에서 와콤원2를 출시하면서 번들펜으로 펜버튼이 2개 있는 "와콤원펜2" 를 출시했습니다. 와콤원2는 와콤원급의 엔트리 모델이면서 터치가 추가되는 등 여러 업그레이드가 있긴 하나,

signfang.tistory.com

 

이전에 가이드를 작성한 Zfont에서 One UI 최신 버전에서도 사용이 가능한 신버전을 출시했습니다.
이전 가이드 링크:
signfang.tistory.com/282

삼성 안드로이드폰에서 트루타입(ttf) 폰트 사용하기

2021. 01 수정) Zfont3 신버전이 출시되었습니다. 삼성 클라우드 백업을 우회하는 방식으로 적용합니다. One UI 3.0, 안드로이드 11 버전에서 작동을 확인했습니다. 다음 글을 참조하시기 바랍니다. signf

signfang.tistory.com



Zfont 3 버전 링크:

play.google.com/store/apps/details?id=com.htetznaing.zfont2

zFont 3 - Custom Font Installer [No ROOT] - Google Play 앱

You can change the custom font style on Xiaomi, Huawei, Samsung, Vivo, Oppo, Realme, Tecno, and Inifinix without ROOT. ✅SAMSUNG supported versions - KitKat and below - Lollipop (5.0 to 5.1.1) - Marshmallow (6.0 to 6.0.1) - Nougat (7.0 to 7.1.2) - Oreo &

play.google.com



One UI 3.0 베타 버전 (안드로이드 11)을 사용중인 갤럭시 노트 10에서 작동을 확인했습니다.
또한 이전 가이드에선 사용할 수 없었던 태블릿 제품에서도 (OneUI 2.5, 안드로이드 10 사용중인 갤럭시 탭 S5e) 작동을 확인했습니다.

기존 Zfont에서는 삼성 테마스토어에서 우회하는 방식이었으나 최신버전에서는 삼성클라우드 백업기능을 우회하는 방식으로 변경되었습니다.


* 본 방법으로는 핸드폰의 표시 폰트 (UI 요소)만 변경 가능하며 클립스튜디오 등 작업 파일에서 사용가능한 폰트를 추가할 수는 없습니다.



폰트 변경법

0. 본인이 사용하기를 원하는 폰트의 .ttf 파일을 준비합니다.
(.otf는 convertio.co/kr/otf-ttf/등의 변환 사이트를 사용하시면 됩니다.)
준비한 폰트는 핸드폰 내의 원하는 폴더에 넣어두시면 됩니다.

1. zFont 3 실행 후 "local" 탭 선택




2. 로컬 탭에 진입 후 "Aa" 가 쓰여진 원형 폴더 아이콘을 클릭하면 다음과 같은 폰트 선택창이 뜹니다.



3. 원하는 폰트를 선택하고 확인 버튼을 누르면 다음과 같은 창이 뜹니다.



아래의 "Apply" 버튼을 클릭합니다.




최신 삼성폰이라면 맨 아래의 "OneUI #ALL" 을 선택하시면 됩니다.

4. 다음 창에서 번호 순서대로 회색 부분을 클릭하면 자동으로 창이 뜨고 해당 과정이 진행됩니다.



준비 단계-> 설치 순서로 진행하면 됩니다

준비 단계
1. "Circle Rounded FlipFont" APK 설치
2. 폰트를 "Circle Rounded FlipFont" 로 변경
3. 삼성 계정에 로그인
4. 삼성 클라우드에 "설정" 부분을 백업
5. "Circle Rounded FlipFont" 를 삭제

설치 단계
1. 원하는 폰트 apk 파일을 설치 (zfont3에서 자동으로 생성해 줍니다)
2. 폰트를 기본 또는 삼성원으로 변경
3. 삼성 클라우드에서 "설정" 부분을 복원


복원이 끝나면 자동으로 폰트가 변경됩니다.
추후 다른 폰트로 변경할 때는 "준비 단계" 를 생략하고 "설치 단계" 만 실행하셔도 됩니다. (삼성클라우드에서 설정이 복원되기 때문에 그 사이에 설정이 변경되었다면 다시 준비단계를 실행해야 함)

와콤에서 출시한 저가형 EMR 액정 타블렛인 "와콤 원"용으로 제작된 번들 펜을 구입했습니다.

해당 제품은 와콤의 타 액정타블렛이나 인튜오스 등 평판타블렛과는 달리 신티크 계열 펜과 호환되지 않으며, 삼성 등 고객사에 납품하는 S펜/와콤 EMR 기술 기기와 호환되는 것이 특징입니다. 

(와콤 EMR/AES, 삼성 S펜 등 호환성 목록은 http://signfang.tistory.com/325 여기에 정리해두었습니다. )

 

 

 

 

번들 제품이지만 비닐 포장지 등 벌크포장이 아닌 제대로 된 리테일 박스에 담겨 있습니다. 

상대적으로 높은 가격 (정가 39,000원)을 생각하면 이해가 가는 부분입니다.

 

 

박스 내부 모습. 포장지로 싸여진 펜이 놓여 있습니다.

구성품은 펜과 여분 펜촉 3개, 설명서입니다. 펜촉 교환기는 제공되지 않습니다. 

 

 

왼쪽부터 갤럭시북 2 번들 S펜 (signfang.tistory.com/294), 와콤 원용 펜, 신티크13용 프로 펜입니다. 

크기는 갤럭시북2 번들펜/또는 갤럭시북 12용 번들펜과 비슷하고, 모양은 신티크용 펜을 닮은 것을 볼 수 있습니다. 와콤의 저가형 라인업인 인튜오스용 작은 펜과도 비슷합니다.  

 

 

 

상단은 와콤 원용 펜에 호환되는 펜촉, 하단은 갤럭시 노트 5 및 기타 제품에 호환되는 1mm 펜팁 삼성 S펜용 펜촉입니다. 

보시는 바와 같이 모양이 완전히 같으며, 펜촉이 호환됩니다.

 

특이한 점은 번들 펜촉은 검정색이지만, 삼성 S펜에 사용되는 검정색 펜촉처럼 부드러운 재질이 아닙니다. 사진에 찍힌 회색 펜팁과 유사한 딱딱한 재질입니다. 

굳이 비교하자면 삼성 S펜 검정팁과 회색팁의 중간 정도 경도라고 느껴집니다. 

 

 

 

위 사진에서 같이 찍힌 갤럭시 노트 5용 펜촉을 장착한 모습입니다. 

이 상태로 사용해도 모든 기능은 잘 작동합니다. 

 

 

갤럭시 노트 10/갤럭시 북 플렉스에 호환되는 신형 미세펜촉을 장착한 모습입니다. 

역시 이 상태로 사용해도 잘 작동합니다. 

 

0.7mm 펜촉은 중간에 고정되는 부분이 얇아 유격이 발생하기 때문에 이 제품에서 얇은 펜촉을 구입하시고 싶은 분들은 갤럭시 노트10 또는 갤럭시 북 플렉스용 펜촉 교환기를 삼성전자 서비스센터에서 구매해서 사용하시면 될 것 같습니다. 구형 라미 S펜과 동일합니다. 

(주의하실 점은 갤럭시 노트10용 펜촉 교환기에는 흰색 팁이 없습니다. 검정/회색만 존재)

 

무게는 갤럭시북 2용 S펜보다는 살짝 무겁지만 거슬릴 정도는 아니며, 오히려 살짝 무게중심이 그림그리는 속도에 적합하게 잡혀있다고 생각됩니다. 하지만 갤럭시북2용 S펜처럼 굴렸을 때 특정 방향으로 서는 것 같은 무게추는 없습니다.

몸체의 아래쪽 검정색 부분은 약간 마찰력이 높은 재질으로 미끄러짐이 덜합니다. 

 

번들 제품이지만 따로 구매하는 상품처럼 패키징이 잘 되어 있고, 원래부터 액정타블렛용 제품으로 출시된 만큼 그림그리기에 더 적합한 제품이긴 합니다만 여전히 제공하는 편의성이나 기능에 비해 가격은 좀 높다는 생각이 듭니다. 

1mm 팁을 그대로 사용할 시 그다지 정밀하지 못하고, 삼성 서비스센터에서 미세펜촉을 추가 구매할 시 발생하는 번거로움도 있습니다. 다만 반대로 1mm 펜촉을 사용하여 펜촉 휨 걱정이 덜한 것은 어떤 관점에서 보면 장점이라고도 할 수 있겠습니다. 

 

만약 본인이 크기가 큰 S펜 계열 제품이 필요하고, 오픈마켓 등 기타 경로를 통해 정가 39,000원보다 약간 싼 가격에 구매할 수 있다면 괜찮은 선택지가 될 것 같습니다. (현재 가장 가성비가 좋은 갤럭시북 10.6용 S펜은 품절상태)

삼성 노트북 펜 등 이전 모델: signfang.tistory.com/297?category=866128

 

노트북 펜 시리즈에서 에어커맨드 비활성화하기

http://forum.tabletpcreview.com/threads/samsung-notebook-9-13-and-15-flippers-with-windows-10-and-spen.72302/page-97#post-519885 Samsung Notebook 9 - 13" and 15" flippers with Windows 10 and spen U..

signfang.tistory.com

 

 

1번 방법: 서비스 비활성화 

실행(Win+R)->services.msc 에서 "Samsung Pen Service"만을 비활성화하면 (우클릭->속성->시작 유형->사용하지 않음/서비스 상태->중지) 펜 버튼 클릭시 에어커맨드가 실행되지 않으나, 재부팅시 때때로 해당 서비스가 다시 실행되게 되고 에어커맨드가 실행됩니다.

"Samsung Pen Service"와 "SamsungSystemSupportService"를 모두 비활성화해야 재부팅시 Pen service가 활성화되지 않으며, 에어커맨드도 실행되지 않습니다. 

다만 해당 서비스들을 비활성화하면 일부 Fn 키 단축키 (삼성 설정/야외 모드/배터리 공유모드 등)가 작동하지 않으며, 삼성 설정 앱에서 에어 액션을 비롯한 일부 설정이 비활성화되게 됩니다. 

 

2번 방법: 에어 커맨드 삭제

us.community.samsung.com/t5/Computers/Galaxy-Book-Flex-Help-disabling-air-commands/td-p/1263095

 

Galaxy Book Flex - Help disabling air commands?

  Does anyone know how to disable the air commands that pop up everytime you take your spen out? The default windows uninstaller doesn't allow you to uninstall third party apps. But when I use a third party uninstaller app it just reinstalls instantly. An

us.community.samsung.com

 

Powershell을 관리자 권한으로 실행한 뒤 다음을 입력합니다. 

 

  1. Remove-AppxPackage SAMSUNGELECTRONICSCoLtd.AirCommand_1.1.3.0_x86__wyx1vj98g3asy
  2. Remove-AppxProvisionedPackage -package SAMSUNGELECTRONICSCoLtd.AirCommand_1.1.3.0_x86__wyx1vj98g3asy -online

 

해당 방법을 이용하면 제스처도 그대로 이용할 수 있으며, 삼성 설정이나 단축키 등도 이용 가능합니다.

 

갤럭시북 12/10 모델처럼 해당 부분을 설정할 수 있게 해 주면 좋겠지만, 현재는 그런 옵션을 제공하지 않고 있습니다.

와콤사에서 개발한 액정타블렛 계열 제품용 패널/펜 기술은 크게 "와콤 AES", "와콤 EMR", "와콤 EMR 프로"(가칭) 으로 3가지 종류이며, 세 종류 모두 펜이 호환되지 않습니다. (비 액정타블렛 제품도 펜이 액정타블렛 패널과 호환되는 경우가 있으나 세대별로 다르며 복잡하므로 생략합니다)
AES는 마이크로소프트 엔트리그, 또는 애플펜슬과 유사하게 액티브 펜을 이용하는 기술이며 펜에 AAAA 또는 리튬이온 배터리를 사용합니다. 최근 출시되는 펜 탑재 노트북들은 거의 대부분 이 방식을 채용하고 있습니다. (패널 가격이 상대적으로 저렴)
EMR은 자기공명방식이며 펜에 배터리가 포함되지 않는 종류입니다. 삼성 S펜 역시 와콤 EMR 방식입니다. 노트북 제품 중 거의 유일하게 삼성만이 와콤 EMR 방식을 채택하고 있으나, "와콤 EMR"로 홍보하지는 않으며 펜 특성을 조정할 수 있는 "Wacom Feel" 드라이버 역시 지원되지 않습니다.
와콤 자사에서 판매하는 고가의 신티크/신티크 프로 라인업은 전용 펜과 패널을 이용하며, 삼성을 비롯한 고객사에 납품하는 제품들에서 사용하는 펜은 소프트웨어적으로 막혀 있습니다.

갤럭시 탭 제품은 보통 큰 사이즈의 S펜이 동봉되지만, 갤럭시 노트나 노트북 펜 계열의 제품은 제품 내부에 수납하는 작은 펜이 따라오는 것이 일반적이기 때문에 필기를 주로 하시는 분들은 따로 큰 사이즈 펜을 구입하시곤 합니다.

삼성 갤럭시 노트 및 갤럭시 탭, 또는 노트북 펜과 갤럭시 북 계열 노트북들은 와콤 EMR 패널을 사용하고, 삼성을 제외한 타 제조사에서 "와콤 EMR" 브랜드를 달고 홍보하는 제품과는 달리 삼성 노트북 계열은 와콤 feel 드라이버 등이 지원되지 않는 경우가 대부분인 것을 제외하면, 펜 하드웨어 자체는 와콤 EMR 계열 제품에서 모두 호환됩니다.

즉 "갤럭시 노트 용" 또는 "와콤 EMR", 최근 출시된 "와콤 One용" 펜들은 모두 호환되며, (One by 와콤과 다른 제품이니 주의가 팔요)
갤럭시 탭 S 시리즈, 갤럭시 탭 A with S-pen 시리즈, 갤럭시 노트 시리즈, 노트북 펜 시리즈, 갤럭시 북, 갤럭시 북 플렉스 시리즈에 모두 사용 가능합니다.

필압레벨은 갤럭시 노트7 이후 출시 제품들은 거의 대부분 4096단계 지원 제품들입니다.

주의하실 점은 와콤 원을 제외한 와콤의 "신티크"나 "인튜오스" 전용 펜, 또는 액티브 펜인 와콤 AES와 엔트리그 계열 제품은 갤럭시 노트 시리즈에 호환되지 않는다는 것입니다. (반대도 불가능합니다.)

그리고 현재 삼성이 제조한 펜과 콜라보 펜들 중 팁이 교체 가능한 S펜은 총 3가지 두께 펜팁으로 판매되고 있습니다.
(와콤 신티크/인튜오스/와콤 원 등 제품용 펜촉과는 다른 자체 규격입니다)


위에서부터: 1mm 펜촉/0.7mm 펜촉/신형펜촉




갤럭시 노트3~갤럭시 노트5: 1mm 펜촉
갤럭시 노트7~갤럭시 노트9: 0.7mm 펜촉
갤럭시 노트10~ : 신형 미세펜촉

검정: 연함/회색: 딱딱함/흰색: 중간

초기형 펜촉엔 흰색팁이 없으며, 0.7mm펜촉부터 흰색팁이 생겼으나 갤럭시 노트10 이후 제공되는 펜팁 중 흰색은 오직 갤럭시 북 플렉스 번들로만 제공됩니다. (노트 시리즈에는 회색과 검정색만 제공)

눈에 띄는 점은 최신형 펜촉은 중간부분이 두꺼워져 1mm 두께 펜촉과 중간 부분 두께가 다시 같아졌다는 점입니다.
이는 0.7mm 펜촉이 고질적으로 중간부분에서 끊어지는 문제가 있어 해결하기 위한 차원에서 도입된 것으로 보입니다.
실제로 구형 1mm 펜촉을 사용하는 갤럭시 노트5용 S펜에 신형 미세펜촉 장착시 아무런 유격 없이 잘 장착되었습니다.

라미 S펜 구형을 사용하시는 분들도 갤럭시 노트10/노트20용 신형 미세펜촉을 구입하시면 유격 없이 사용하실 수 있을 것 같습니다.

갤럭시 노트를 제외한 태블릿/노트북, 콜라보 펜 계열은 주로 발매한 연도에 따라 달라지지만, 제품 급이나 특성 등에 따라 이 역시 달라질 수 있으니 교체용 펜촉을 구매할 때 확인하셔야 합니다.



블루투스나 모션 기능을 지원하는 S펜도 있기는 하지만, 너무 비싸고 무거워서 여러 모로 그림용으로는 활용도가 떨어지기 때문에 제외했습니다.

현재 새 제품을 비교적 쉽게 구할 수 있는 제품들은 다음과 같습니다.

- 별매 제품 계열(액세서리) -

여기 쓰인 제품은 처음부터 별도 액세서리로 기획된 제품들입니다.
각종 인터넷 쇼핑몰이나 삼성 제품의 경우 디지털프라자에서 구입하실 수 있습니다.

1. 스테들러 S펜
https://search.shopping.naver.com/detail/detail.nhn?cat_id=50007236&nv_mid=13847850322&query=%EC%8A%A4%ED%85%8C%EB%93%A4%EB%9F%AC+s%ED%8E%9C&bt=0&frm=NVSCPRO&NaPm=ct%3Dke8mpwf4%7Cci%3Dd155c02db2a7b23d5b42578ed3eca1eccdd1d316%7Ctr%3Dsls%7Csn%3D95694%7Chk%3D1f975b3c61db677eff1794e93a27289db8c62ed7

 

스테들러 노리스 디지털 S펜 : 네이버 쇼핑

방식 : 와콤방식, 적용모델 : 범용, 색상 : 그린,옐로우, 품목 : 터치펜

search.shopping.naver.com


최초의 콜라보 S펜입니다. 스테들러 노리스 연필을 닮았으며 펜 버튼이 없습니다.


2. 라미 S펜/신형 라미 S펜

https://www.samsung.com/sec/mobile-accessories/lamy-safari-s-pen-smoky-black/

 

Samsung 대한민국

 

www.samsung.com

https://www.samsung.com/sec/mobile-accessories/lamy-safari-s-pen/MD-LAMYSFYW/

 

라미 사파리 S펜 (옐로우) | Samsung 대한민국

라미 사파리 S펜을 만나보세요. LAMY만의 기술력이 담긴 그립감과 디자인으로 탄생한 Stylus Pen을 경험할 수 있습니다.

www.samsung.com


각각 1mm/0.7mm 펜촉을 사용하는 구형/신형 라미 S펜입니다.
펜 버튼이 있습니다. (구형 리뷰: https://signfang.tistory.com/274)

3. Wacom One용 하이유니 디지털 펜
https://store.wacom.kr/goods/goods_detail.asp?GOODS_SEQ=639&Val_Category=5&Val_Category_Group=10&SUB_GUBUN=

 

타블렛/펜타블렛 | 와콤 온라인 스토어입니다.

 

store.wacom.kr


와콤이 Wacom One용으로 독자적으로 콜라보한 제품입니다.
펜 버튼은 없는 것으로 보입니다.

4. S펜 플러스/S펜플러스 2nd 에디션
http://itempage3.auction.co.kr/DetailView.aspx?ItemNo=B818210829&frm3=V2

 

트래딧 S펜 플러스 노트펜 터치펜 TD-SPP1 S펜 호환 - 옥션

모바일/태블릿>휴대폰일반용품>기타휴대폰용품

itempage3.auction.co.kr

https://shopping.naver.com/play/play/stores/100325401/products/4038767101?NaPm=ct%3Dke8n7spk%7Cci%3Dc8ff91153fc1b950e3ce98200bf80c6748eec4c7%7Ctr%3Dsls%7Csn%3D337067%7Chk%3Daffc13e099f18d9f797b07b9c7f5b75e46efac8e&

 

네이버쇼핑 플레이윈도

스포츠용품부터 레어템까지 핫한 상품을 한눈에

shopping.naver.com


갤럭시 노트 핸드폰에 들어가는 작은 S펜에 겉 껍데기를 씌운 제품들입니다.
아이디어는 좋으나 여러모로 완성도면에서 타 콜라보 제품보다는 떨어진다고 느껴졌습니다.
가격이 비교적 싸지만, 뚜껑이 꼭 필요하지 않고 내장 볼펜을 쓰지 않으신다면 갤럭시북 10.6용 S펜을 구입하시는 걸 추천드립니다.

펜 버튼이 있습니다.


- 번들 제품 계열 (서비스자재) -
여기 쓰인 제품들은 삼성/와콤 등에서 서비스자재로 공급되는 제품들입니다.
와콤은 와콤스토어에서, 삼성은 삼성전자 서비스센터에서 구입할 수 있습니다.

1. 갤럭시북 10.6용 S펜
www.samsungsvc.co.kr/shop/product/0000012315


현재 "펜 크기" S펜중 가장 저렴하며 여러모로 완성도가 높습니다. 갤럭시북 12/갤럭시탭S3용 S펜과는 클립이 플라스틱인 것을 제외하면 나머지 부분은 동일합니다. (www.samsungsvc.co.kr/shop/product/0000012313, 갤럭시북 12용은 3만5천원으로 꽤 비쌉니다.)
펜 버튼도 있습니다.


2. 갤럭시북2용 S펜
https://smartstore.naver.com/grimobile/products/4702364370?NaPm=ct%3Dke8mwacw%7Cci%3D7430e1049ee24b0f94b5d2ff8a1647de7ba3cc31%7Ctr%3Dsls%7Csn%3D167459%7Chk%3Da6a885503315f9a2d27af34fdf7e9d8018aab2ba

 

[정품S펜]갤럭시 북2 LTE S펜/SM-W737 : 지알아이모바일

[지알아이모바일] GRI Mobile에 오신것을 환영합니다.

smartstore.naver.com


현재 구할 수 있는 와콤 EMR/삼성S펜 제품들 중 거의 유일하게 지우개를 지원하지만, 인터넷에선 구매하기 어려운 제품입니다.
정가는 4.7만원이며 삼성서비스센터에 전화로 연락 후 방문하여 구입할 수 있습니다. (링크한 사이트는 정가보다 비싸게 올려두었습니다)

펜 버튼과 지우개가 있습니다. (리뷰: https://signfang.tistory.com/294)


3. 와콤 원(Wacom One) 용 펜
https://store.wacom.kr/goods/goods_detail.asp?GOODS_SEQ=569&Val_Category=5&Val_Category_Group=10&SUB_GUBUN=

 

타블렛/펜타블렛 | 와콤 온라인 스토어입니다.

 

store.wacom.kr


와콤 EMR 패널을 사용한 저가형 액정타블렛에 동봉되는 제품입니다. 타 S펜계열과 달리 와콤 팁을 사용합니다. (펠트팁 역시 사용가능)

펜 버튼이 있습니다. (리뷰: signfang.tistory.com/330)

4. 와콤 원(Wacom One 2) 용 펜

https://estore.wacom.kr/ko-kr/accessories/wacom_one_pen_2_bundle.html

 

와콤 원 펜 2 상/하단 - 커스텀

 

estore.wacom.kr

2023년 신규 출시된 와콤원펜 2용 펜입니다. 상/하단을 따로 구매해 색을 조합할 수 있습니다.

특이하게 펜 버튼이 2개 있습니다. (리뷰: signfang.tistory.com/355)



이처럼 삼성 S펜/와콤EMR 계열은 호환되는 "펜 사이즈" 펜들이 가격대별로 비교적 다양합니다.
본인의 예산과 선호도, 필요성에 맞는 제품을 선택하시면 될 것 같습니다.



======================

추가)


갤럭시 z폴드3가 출시하면서 와콤 EMR방식의 S펜을 지원하지만, 기존에 출시한 EMR펜이나 S펜과는 호환되지 않는 독자규격입니다.

정확히는 "펜 버튼을 누른 채로 드래그" 신호와 "드래그" 신호가 뒤바뀌어 있습니다. 즉 지우개 펜 신호와 같습니다. 

Z폴드 시리즈는 폴드 에디션, S펜 프로 딱 2종류만을 지원합니다. 

https://store.wacom.kr/goods/goods_detail.asp?GOODS_SEQ=569&Val_Category=5&Val_Category_Group=10&SUB_GUBUN=

 

타블렛/펜타블렛 | 와콤 온라인 스토어입니다.

 

store.wacom.kr

 

와콤에서 주로 외주용으로 공급하던 EMR 패널을 활용한 보급형 액정타블렛인 와콤 원 (Wacom One) 을 출시하면서, 해당 제품에 번들로 포함시키기 위해 개발한 기존 인튜오스 제품과 유사한 모양을 가진 EMR용 호환 펜입니다. 

따라서 갤럭시 북, 갤럭시 노트, 갤럭시 탭, 갤럭시 북 플렉스 등 다양한 와콤 EMR 지원 기기와도 호환이 가능하며, 삼성 S펜 계열 펜팁이 아닌 와콤 전용 펜팁을 사용합니다.

삼성 S펜 1mm와 동일한 펜촉을 사용합니다.

 

https://store.wacom.kr/goods/goods_detail.asp?GOODS_SEQ=639&Val_Category=5&Val_Category_Group=10&SUB_GUBUN=

 

타블렛/펜타블렛 | 와콤 온라인 스토어입니다.

 

store.wacom.kr

 

 

예전에 삼성에서 자체적으로 출시한 스테들러 S펜과 유사하게 와콤에서도 EMR 패널에 호환되는 연필 모양 "하이유니 디지털" 을 출시했으며, 이 역시 와콤 EMR/삼성 S펜 기기에 호환됩니다.

 

 

=============================================================

 

와콤 One용 스타일러스를 구매하여 리뷰를 작성했습니다. 

signfang.tistory.com/330

 

와콤 원 (Wacom One)용 번들펜 리뷰 (CP91300B2Z)

와콤에서 출시한 저가형 EMR 액정 타블렛인 "와콤 원"용으로 제작된 번들 펜을 구입했습니다. 해당 제품은 와콤의 타 액정타블렛이나 인튜오스 등 평판타블렛과는 달리 신티크 계열 펜과 호환되

signfang.tistory.com

 

0. 개요 

 

제가 라즈베리 파이 4를 NAS 용도로 구입해서 실제로 사용한지도 꽤 지났고 원래 가이드 글을 본격적으로 쓸 계획이었으나... 비교적 쉽게 공유기 메뉴만 눌러서 설정할 수 있는 iptime 공유기 NAS와는 달리 라즈베리파이 등 싱글보드 컴퓨터(SBC)를 이용한 자작 NAS 구현법은 어느정도 사용자가 리눅스에 익숙하지 않다면 너무 막히는 곳도 많고 자세히 공부해야 할 곳이 많습니다. 

저도 간단하게 다룰 줄은 알지만 리눅스 사용법을 체계적으로 남에게 가르칠 만큼 본격적으로 알지는 않기 때문에 타 사이트에 적힌 영어 튜토리얼들을 모아놓고 실제 사용하는 입장에서 간단한 팁 몇 개를 소개하는 정도 선에서 써 볼까 합니다. 

 

준비물은 라즈베리 파이 4B, iptime A3004NS-M등 DDNS와 VPN을 지원하는 공유기, 외장하드, 운영체제를 설치할 8GB 이상의 micro SD카드, 파이용 충전기(5V 3A) 등 기타 물품입니다.

 

 

1. 라즈베리 파이 4B (Raspberry Pi 4B)

 

라즈베리 파이 시리즈는 싱글보드 컴퓨터/초소형 PC 하면 가장 먼저 떠오르는, 어찌 보면 SBC라는 분야 자체를 개척했다고도 볼 수 있는 대표주자입니다. 

절대적인 성능이나 기능 등은 Rock64/Odroid 등 타사가 만든 SBC 경쟁자에 밀릴지라도 저렴한 가격과 방대한 커뮤니티 지원, low-level 까지 오픈된 documentation 등을 무기로 내세워 높은 경쟁력을 가졌었지만, 라즈베리 파이 3B+까지만 해도 LAN 연결은 대역폭이 제한되고 USB 버전도 2.0까지밖에 지원하지 않아 NAS용으로는 적합하지 않았습니다.

하지만 라즈베리 4B가 출시되면서 풀 대역폭 기가비트 랜, USB 3.0 포트 2개를 지원하고 고성능 CPU와 대용량 RAM(출시당시 최대 4GB, 현재 최대 8GB) 옵션을 장착하는 등 성능과 기능 경쟁력을 강화했습니다. (충전 역시 USB type-C 5V 3A 로 바뀌고 듀얼모니터 지원 등 기타 추가사항도 있음)

그리고 비교적 덜 유명한 타 제조사 SBC는 한국에서는 구하기가 어렵지만 라즈베리 파이 시리즈는 유저 풀이 넓은 만큼 한국에서도 구하기가 쉽고, 기가비트랜+USB 3.0을 모두 지원하는만큼 NAS 자작 용도로는 아주 훌륭합니다. 

현재 RAM 1GB 제품은 단종되고 2GB/4GB/8GB 제품이 있는데, NAS 용도라면 램용량은 아무거나 쓰셔도 무방합니다. 

 

라즈베이 파이를 비롯한 SBC들은 본질적으로 개발자용으로 만들어지기때문에 박스에 정말 제품 본체 말고는 아무것도 들어있지 않습니다.

USB-C로 연결되는 5V 3A 충전기, 최초 연결시 Micro HDMI로 연결할 변환잭과 모니터, USB/블루투스 키보드와 마우스가 필요합니다. 

그리고 기판이 외부로 노출되어 있어 불안하신 분들은 케이스를 구매하시면 됩니다. 제가 사용하는 케이스는 이 제품입니다.

https://ko.aliexpress.com/item/4000192227574.html

 

US $2.82 |라즈베리 파이 4 케이스, 냉각 팬이 장착 된 라즈베리 파이 케이스, 라즈베리 파이 4 모델

Smarter Shopping, Better Living! Aliexpress.com

ko.aliexpress.com

완전히 동일한 제품을 한국에선 약 2만원에 판매중인 것으로 압니다.

참고로 라즈베리 파이4가 고질적으로 발열이 매우 심한 편이라 케이스를 사용하실 분들은 팬과 방열판 패키지를 함께 구매하시는 것을 추천드립니다. 

 

2. 운영체제 설치 및 최초 세팅

 

https://www.raspberrypi.org/documentation/installation/installing-images/

 

Installing operating system images - Raspberry Pi Documentation

documentation > installation > installing-images Installing operating system images This resource explains how to install a Raspberry Pi operating system image on an SD card. You will need another computer with an SD card reader to install the image. Befor

www.raspberrypi.org

 

운영체제 설치는 공식 홈페이지 가이드를 참고하시기 바랍니다. MicroSD 카드에 운영체제 설치이미지를 복사하는 가이드입니다.

복사가 완료되면 라즈베리 파이에 SD 카드를 꽂고 USB-C 전원을 연결하시면 자동으로 부팅이 됩니다. 

 

최초 세팅은 대부분 자동으로 이루어지며, 세팅이 끝난 후 랜선을 이용해 공유기와 파이를 연결해주고, USB 3.0 단자에 외장하드를 꽂습니다. 

외장하드의 파일시스템은 이상적으로는 EXT4로 포맷되어 있어야 최대 속도가 나오지만, NTFS로도 약 80% 성능은 무리없이 내 주기 때문에 저는 NTFS를 사용했습니다. 

 

sudo fdisk -l 을 이용해 현재 시스템에 연결된 하드디스크 및 파티션을 확인하고 (/dev/sda1 등)

sudo mount -t ntfs-3g /dev/sdxx /mnt/hdd 등의 명령어를 이용해 해당 파티션을 특정 폴더에 마운트해서 테스트해본 후 fstab을 작성하면 됩니다. 

 

제가 사용하는 /etc/fstab의 자동마운트 설정은 다음과 같습니다.

UUID=XXXXXX /mnt/hdd ntfs-3g auto,nofail,late,rw 0 0 

 

/dev/sda1 과 같은 논리 주소는 그 때마다 바뀌기 때문에 UUID를 이용해서 작성하는 것이 좋습니다. 외장하드의 UUID는 /dev/disk/by-uuid 폴더의 링크를 "ls -al" 로 확인하면 알 수 있습니다.

마운팅 포인트는 어디로 잡아도 크게 상관은 없으나, 보통 해당 목적으로 /mnt/ 가 만들어져 있습니다. 여기에 원하는 이름으로 폴더를 만들면 됩니다.  "chmod 777" 로 읽기/쓰기/실행을 자유롭게 바꿔 두는 것이 좋습니다. 

 

일반 ntfs보다 ntfs-3g가 안정성이 높아 해당 마운팅 옵션을 사용했습니다. 

"nofail" 옵션은 해당 외장하드가 없을 때 부팅이 실패하는 일을 막기 위해서 넣었습니다. 

"late" 옵션은 해당 외장하드의 마운팅이 부팅과정에서 드라이버 로드 전에 이루어지면 실패하기 때문에 임의로 딜레이를 주기 위해 넣었습니다. 

 

 

 

3. Samba를 이용한 SMB 서버 구축

 

https://www.raspberrypi.org/documentation/remote-access/samba.md

 

Raspberry Pi Documentation

documentation > remote-access > samba Samba/CIFS Samba is a implementation of the SMB/CIFS networking protocol that is used by Windows devices to provide shared access to files, printers, and serial ports etc. There is a comprehensive Wikipedia page about

www.raspberrypi.org

https://pimylifeup.com/raspberry-pi-samba/

 

How to Setup a Raspberry Pi Samba Server

Setup network attached storage.

pimylifeup.com

 

공식 홈페이지, 또는 다음 블로그 글을 참고하시기 바랍니다. 

 

대략적으로 절차는 다음과 같습니다. 

 

1. Samba 설치

2. sudo adduser user1 명령어로 원하는 사용자 작성 

3. sudo smbpasswd -a user1 명령어로 samba를 사용할 유저 아이디/패스워드 작성

4. /etc/samba/smb.conf 파일을 수정해 "share" 이름과 설정을 마침

 

예시 share는 다음과 같습니다. 

 

[pishare] -> Share 이름

path = /mnt/hdd -> 해당 share에서 공유할 폴더 

read only = no

writeable=yes

browseable = yes

valid users = user1 -> smbpasswd -a 명령어로 추가한 유저 이름

create mask=0777

directory mask=0777

public=no

 

sudo systemctl restart smbd 명령어를 사용해 smb 설정을 업데이트해주면 됩니다. 

 

3. DDNS/VPN 서버 설정을 통한 외부접속 설정

제가 이전에 쓴 "iptime 공유기를 이용해 외부에서 SMB 드라이버 쓰기" 가이드의 "DDNS 설정", "VPN 연결" 부분을 참고하시기 바랍니다. 

https://signfang.tistory.com/258

 

Iptime 공유기의 VPN 서버 기능을 이용해 외부 네트워크에서 SMB 드라이브 쓰기

Dropbox나 Onedrive등 상용 클라우드 서비스의 가장 편리한 기능은 역시 "내 컴퓨터에 있는 하드디스크처럼 자유롭게 연결할 수 있는 네트워크 드라이브"입니다. 하지만 내가 원하는대로 용량을 증��

signfang.tistory.com

 

라즈베리 파이를 공유기에 유선으로 연결하고, VPN을 연결하면 기본설정상 "192.168.X.X" 를 공유하는 내부망으로 취급되므로 VPN 서버 접속후+라즈베리 파이에 할당된 내부 ip, 또는 Samba 서버 셋팅을 할때 만들었던 도메인 네임을 이용하면 파이에 접근할 수 있습니다. 

위에 링크한 가이드에서처럼 윈도우에 드라이브 문자를 할당해 마운트시키는 것도 가능합니다.  

예시) 링크된 글에서 기존에는 "\\192.168.1.1\ipsmb"로 마운트했음. 라즈베리 파이의 내부 ip가 "192.168.1.23"이고 내가 설정한 SMB 도메인 이름이 "pismb" 라면 "\\192.168.1.23\pismb" 로 마운트하면 동일하게 사용 가능

 

4. 라즈베리에서 사용하기 좋은 추가 프로그램들

 

SSH 서버: 원격 접속을 사용하기 위해 필수입니다. 기본적으로 설치되어 있습니다. 

Transmission 서버: 토렌트 등을 파이에서 구동하기 위한 인터페이스입니다. 

Pi-Hole: 파이에서 구동되는 네트워크 단위 광고차단 시스템/방화벽입니다. 

Squid: VPN 서버입니다. 하지만 이 구성에서는 라즈베리 파이가 내부망에 연결되어 있기 때문에 큰 효용은 없습니다. 

Mathematica/Minecraft: 상용 프로그램이지만 라즈베리파이 공식 배포판인 Raspbian에 포함되어서 제공됩니다. (재미삼아 해 볼만은 하지만 실질적으로 쓸만한 것은 아닙니다.)

 

5. 결론

 

기존 공유기 NAS를 사용할 때는 불안정하게 30MB/s를 겨우 달성할까 말까 하는 수준이었으나 라즈베리 파이로 NAS 구성을 바꾼 후에는 80MB/s 이상 아주 안정적으로 잘 사용하고 있습니다. HDD는 WD Elements 8TB 모델을 사용하고 있습니다. 

NAS를 본격적으로 구입하기는 부담이 되시지만 공유기에서 구동되는 자체 SMB 서버가 성능이 부족하다고 느끼고, 리눅스를 잘 다루는 분들에게 추천드립니다. 

 

 

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

추가설명 (21.06.03)

 

해당 방법과 같이 외장하드를 NAS로 사용하는 경우 해당 HDD가 자동으로 슬립모드에 들어갑니다. 

이를 막기 위해서 

sudo sdparm --clear=STANDBY /dev/sdx -S

명령어를 통해 슬립모드에 들어가지 않도록 변경하거나 또는 crontab을 이용하여 주기적으로 (약 10분에 한번) 가짜 파일을 하드에 저장하도록 해 주어야 합니다. 

 

알리익스프레스에서 ACGAM R1 컨트롤러를 싼 맛에 구입해서 그림용 리모컨으로 사용하고 있었는데, 페어링도 잘 되지 않고 여러 모로 만듦새가 좋지 않아 요새는 거의 쓰지 않고 있었습니다. 

이전에 작성했던 R1 컨트롤러 리뷰:

https://signfang.tistory.com/247

 

ACGAM R1 컨트롤러 리뷰/Autohotkey를 이용하여 조이스틱을 액정타블렛 리모콘으로 쓰기

신티크/갤럭시북/모바일스튜디오 등등 액정타블렛 사용자분들은 아시겠지만, 아무리 터치 인터페이스에 최적화된 툴을 사용한다고 해도 그림을 그릴 때 키보드가 없는게 의외로 상당히 불편합

signfang.tistory.com

 

8bitdo는 이전 SN30 Pro+ 리뷰 (https://signfang.tistory.com/312)에서도 언급했다시피 소형 레트로컨셉 컨트롤러 전문 기업입니다.

가격도 그만큼 꽤 비싼 편이나, 대체로 종합적인 만듦새나 사용성 면에서 여타 중국 제조사보다는 훨씬 뛰어납니다.

 

Zero2 제품은 현재 한국에도 정식 수입되어 판매중입니다.  저는 약 2만원을 주고 구입했습니다.

 

컨트롤러 생김새. 제가 손이 좀 큰 편입니다만 그걸 감안해도 굉장히 작습니다.
그림용 리모컨으로 사용시 그립법

제품 박스 내에는 컨트롤러, 설명서, 손목 스트랩, 매우 짧은 Micro-B USB 케이블(약 10cm) 이 동봉되어 있습니다.

D패드, R/L버튼, 닌텐도 스타일의 A/B/X/Y 버튼과 전원 버튼 기능을 하는 +/Start버튼, 페어링 버튼 기능을 하는 -/Select 버튼이 있습니다. 전면 플라스틱 재질은 글로시 재질이며, 후면은 매트 재질입니다. 

상단에는 Micro-B 단자가 있으며 하단에는 상태 LED가 있습니다.

전체적으로 만듦새도 좋으며, Windows 10에서 사용시 페어링 등에도 전혀 문제가 없습니다. 

 

8bitdo 제품답게 Zero 2 역시 다양한 모드를 지원합니다. Start 버튼을 눌러 전원을 켤 때 특정 버튼을 함께 누르면 해당 모드로 부팅됩니다. 최초 페어링시에는 Select 버튼을 2초간 누르면 페어링모드로 진입합니다.

Switch: Y+Start

D-input(일반 조이스틱): B+Start

X-input(엑스박스 호환): X+Start

MacOS: A+Start

블루투스 키보드: R+Start (키매핑이 특정 키로 고정된 키보드로 연결됩니다. 모바일기기에서 리모컨으로 사용시 유용함)

 

해당 모드로 한 번 부팅하면 다음 번 가동시에도 선택사항이 저장됩니다. 

 

R1 컨트롤러 리뷰에서 소개한 것과 같이, 저는 Autohotkey(https://www.autohotkey.com/)를 이용해서 조이스틱 리매핑을 하는 방식으로 Zero 2를 그림용 리모컨으로 사용하고자 했습니다. 

하지만 버튼 숫자가 적은 편이라 제가 원하는 조합으로 사용하기가 어려웠고, 기존에 사용하던 스크립트를 수정하여 총 2가지 모드를 지원하도록 바꿨습니다. 

제가 구현한 방식은 그림을 그리는 모드/텍스트를 복사하여 말풍선을 채우는 모드입니다. 

 

* 해당 스크립트 사용시 Windows에 D-input 모드로 페어링해야 합니다. (B+Start)

8bitdo zero2 - multimode.ahk
0.00MB

 

총 2가지 모드가 있습니다. 

"Draw" 모드: 그리기 모드. 브러시/지우개/라쏘/Ctrl+z 등

"Text" 모드: 텍스트 복사/붙여넣기, 엔터 등 띄어쓰기 조절 등

 

두 가지 모드는 각각 Select/Start 버튼으로 변경합니다. Select가 Draw 모드/Start가 Text 모드입니다. 스크립트 가동시 처음엔 Draw 모드로 시작합니다. 

 

D패드 상하좌우, ABXY 버튼 총 8개가 모드에 따라 키가 바뀝니다. R/L 키는 두 모드에서 전부 Ctrl/Shift로 동일합니다. (스크립트 내용을 참고하시면 쉽게 모드별 구현이 가능합니다)

Rightkeymod1/Rightkeymod2 등 "XXkeymodY" 와 같은 변수들에 원하시는 키를 넣으시면 변경도 가능합니다. 

 

 

+ Recent posts