커스텀 키보드 OLED 번인 방지를 위한 QMK 펌웨어 타임아웃 코딩 설정법

최근 커스텀 키보드 씬에서는 코르네(Corne), 릴리58(Lily58) 같은 분리형 키보드나, 75% 배열의 노브 키보드에 0.91인치 또는 0.96인치 OLED 디스플레이를 장착하는 것이 큰 유행입니다. 이 작은 화면은 현재 레이어 상태를 보여주거나, 귀여운 ‘봉고 캣’ 애니메이션을 띄워 키보드의 심미적 완성도를 높여주는 핵심 부품입니다. 하지만 OLED(유기 발광 다이오드) 패널에는 치명적인 약점이 하나 있습니다. 바로 ‘번인(Burn-in)’ 현상입니다.

키보드를 PC에 연결해 둔 채로 장시간 같은 로고나 글자를 화면에 띄워두면, 해당 소자가 영구적으로 타버려 잔상이 남게 됩니다. 한 번 생긴 번인은 절대 되돌릴 수 없기에 예방만이 유일한 해결책입니다. 오늘은 QMK 펌웨어의 코드를 직접 수정하여, 키보드를 사용하지 않을 때 자동으로 화면을 꺼주는 ‘타임아웃’ 기능을 설정하고 소중한 디스플레이를 보호하는 방법을 전문가의 시선으로 상세히 알려드립니다.

1. OLED 번인 현상의 원리와 타임아웃의 필요성

OLED는 백라이트가 있는 LCD와 달리 소자 하나하나가 스스로 빛을 내는 유기물로 이루어져 있습니다. 이 유기물은 수명이 있어서 빛을 내는 시간이 길어질수록 서서히 밝기가 줄어듭니다. 문제는 화면 전체가 골고루 닳는 것이 아니라, 글자나 로고가 표시된 특정 부분의 소자만 집중적으로 닳는다는 점입니다.

키보드는 특성상 사용자가 입력을 멈추더라도 전원은 계속 연결되어 있습니다. 만약 별도의 설정 없이 기본 펌웨어를 그대로 사용한다면, 여러분이 잠든 사이에도, 출근한 사이에도 키보드의 OLED는 24시간 내내 같은 이미지를 출력하며 스스로를 태우고 있는 셈입니다. 불과 몇 달 만에 화면에 흉한 잔상이 생기는 이유가 바로 이것입니다. 따라서 일정 시간 키 입력이 없으면 자동으로 화면의 전원을 차단하거나, 픽셀을 계속 움직여주는 스크린세이버 기능이 필수적입니다.

2. config h 파일 수정을 통한 가장 쉬운 타임아웃 설정

QMK 펌웨어에서 타임아웃을 설정하는 가장 기초적이면서도 확실한 방법은 config.h 파일을 수정하는 것입니다. 여러분이 사용하는 키맵 폴더(주로 keymaps/default 또는 사용자명 폴더) 안에 있는 config.h 파일을 텍스트 에디터(VS Code 등)로 엽니다. 만약 파일이 없다면 새로 생성하면 됩니다.

이 파일 안에 다음의 코드를 추가합니다. #define OLED_TIMEOUT 30000

여기서 숫자 30000은 밀리초(ms) 단위의 시간을 의미합니다. 즉, 30000은 30초를 뜻합니다. 이 코드를 넣고 펌웨어를 컴파일(Compile)하여 키보드에 플래싱하면, 마지막 키 입력 후 30초 동안 아무런 입력이 없을 경우 OLED 화면이 자동으로 꺼지게 됩니다. 시간은 본인의 사용 패턴에 맞춰 60000(1분), 120000(2분) 등으로 자유롭게 조절할 수 있습니다. 단 한 줄의 코드로 디스플레이 수명을 비약적으로 늘릴 수 있는 가장 효율적인 방법입니다.

3. keymap c 파일에서 타임아웃 로직 제어하기

만약 단순히 시간이 지나면 꺼지는 것 이상으로, 특정 조건에서만 꺼지게 하거나 꺼질 때 특별한 동작을 수행하게 하고 싶다면 keymap.c 파일에서 로직을 직접 제어해야 합니다. QMK는 oled_task_user() 함수를 통해 매 순간 OLED의 상태를 관리합니다.

예를 들어 다음과 같은 코드를 활용할 수 있습니다.

C

bool oled_task_user(void) {
    if (timer_elapsed(last_input_timer) > 30000) {
        oled_off();
        return false;
    } else {
        oled_on();
    }
    // ... OLED 그리기 코드 ...
    return false;
}

이 방식은 개발자가 직접 타이머 변수(last_input_timer)를 선언하고 키 입력이 발생할 때마다 타이머를 리셋해 주는 추가 코딩이 필요하지만, 더욱 정교한 제어가 가능하다는 장점이 있습니다. 예를 들어 특정 레이어(Layer 1)에 있을 때는 타임아웃을 비활성화하는 등의 응용이 가능합니다. 하지만 초보자라면 앞서 소개한 config.h 수정 방식만으로도 충분합니다.

4. 화면 보호기 스크롤 효과로 번인 예방하기

화면을 아예 끄는 것이 싫다면, 화면의 내용을 계속 움직이게 만드는 ‘스크롤링(Scrolling)’ 기능을 활용할 수 있습니다. 픽셀이 한 자리에 고정되지 않고 계속 이동하면 특정 소자만 타는 것을 막을 수 있기 때문입니다.

QMK는 기본적으로 OLED 스크롤 API를 제공합니다. oled_scroll_right(), oled_scroll_left() 등의 함수를 사용하거나, 펌웨어 단계에서 스크롤 속도와 방향을 설정할 수 있습니다. 다만, 스크롤 기능은 화면을 끄는 것보다는 번인 방지 효과가 떨어지며, 지속적으로 움직이는 화면이 시야를 방해할 수도 있습니다. 따라서 가장 추천하는 방식은 ’30초~1분 후 화면 꺼짐(OLED Off)’ 설정입니다.

5. 무선 키보드 사용자를 위한 배터리 관리 팁과 결론

나이스나노(Nice!Nano) 등을 이용한 무선 커스텀 키보드 사용자에게 OLED 타임아웃은 번인 방지뿐만 아니라 ‘배터리 절약’을 위해서도 필수입니다. OLED는 작지만 배터리를 꽤 많이 소모하는 부품입니다. ZMK 펌웨어를 사용하는 무선 키보드의 경우 CONFIG_ZMK_DISPLAY_BLANK_ON_IDLE=y 설정과 함께 타임아웃 시간(CONFIG_ZMK_IDLE_TIMEOUT)을 짧게(예: 15초) 잡아주는 것이 사용 시간을 늘리는 지름길입니다.

결론적으로, OLED가 장착된 키보드를 사용한다면 펌웨어 수정은 선택이 아닌 필수 유지보수 과정입니다. 하드웨어는 소프트웨어의 관리 없이는 그 성능을 온전히 발휘할 수 없습니다. 오늘 알려드린 OLED_TIMEOUT 코드 한 줄을 여러분의 키맵에 적용함으로써, 선명하고 깨끗한 디스플레이를 오랫동안 유지하고 커스텀 키보드의 가치를 지켜내시길 바랍니다.

QMK OLED 설정 관련 자주 묻는 질문 (FAQ)

Q1 화면이 꺼진 상태에서 키를 누르면 바로 입력이 되나요? A 네, 입력됩니다. 타임아웃으로 화면이 꺼진 상태는 키보드 자체가 절전 모드로 들어간 것이 아니라 디스플레이만 끈 상태입니다. 따라서 키를 누르면 그 즉시 입력 신호가 PC로 전달됨과 동시에 화면이 다시 켜집니다. 딜레이는 없습니다.

Q2 30초는 너무 짧은 것 같은데 적정 시간은 얼마인가요? A 사용 환경에 따라 다르지만, 보통 1분(60000ms)에서 5분(300000ms) 사이를 권장합니다. 너무 짧으면 글을 읽거나 생각할 때 자꾸 화면이 꺼져서 신경 쓰일 수 있고, 너무 길면 자리를 비웠을 때 번인 위험에 노출됩니다.

Q3 OLED 수명은 보통 얼마나 되나요? A 저가형 0.91인치 OLED 모듈의 경우, 최대 밝기로 고정된 이미지를 24시간 켜두면 불과 2~3개월 만에도 눈에 띄는 번인이 발생할 수 있습니다. 타임아웃 설정을 통해 필요할 때만 켜지게 한다면 수년 이상 문제없이 사용할 수 있습니다.

Q4 이미 번인이 생긴 화면을 고칠 수 있나요? A 불가능합니다. OLED 번인은 유기물 소자가 물리적으로 손상(열화)된 것이라 소프트웨어적으로 복구할 수 없습니다. 모듈 가격이 저렴한 편(알리익스프레스 기준 몇 천 원)이므로, 납땜 제거 후 새 모듈로 교체하는 것이 유일한 수리 방법입니다.

Q5 QMK 툴박스가 아닌 VIA에서도 설정할 수 있나요? A 일반적인 VIA 인터페이스에서는 OLED 타임아웃 시간을 조절하는 메뉴가 없습니다. VIA를 지원하는 키보드라도, 타임아웃 시간을 변경하려면 QMK 소스 코드를 수정한 뒤 펌웨어를 새로 빌드해서 덮어씌워야 합니다. 단, 최신 VIAL 펌웨어를 지원하는 기판이라면 VIAL 프로그램 내에서 설정 가능한 경우도 있습니다.

댓글 남기기