个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证윈도우에서 왼쪽 시프트키를 통해 한영 전환을 할 수있게 도와주는 유틸리티
翻译准备中
正在加载完整 README。 以下为已保存的摘录。
왼쪽 Shift 키를 단독으로 눌렀다 떼면 한/영 입력 상태를 전환하는 Windows 유틸리티입니다. 릴리스 빌드는 관리자 권한을 요구하는 manifest를 포함하며, 콘솔 창 없이 백그라운드에서 동작합니다. 디버그 빌드는 cargo run으로 실행할 수 있으며, 콘솔 로그로 동작을 확인할 수 있습니다. • Rust 2024 edition • windows crate 기반 Win32 API 호출 • embed-resource를 통한 Windows 리소스 포함 • Rust toolchain • Visual Studio 2022 C++ Build Tools • Windows SDK SetWindowsHookExW(WH_KEYBOARD_LL, ...)로 시스템 전역 저수준 키보드 훅을 설치합니다. 모든 프로세스의 키 입력을 감시하지만, 실제 판정과 전환 요청은 현재 프로세스 내부에서 처리합니다. 왼쪽 Shift가 단독으로 눌렸다가 떼어졌는지를 AtomicBool로 추적합니다.查看完整 README ↗
왼쪽 Shift 키를 단독으로 눌렀다 떼면 한/영 입력 상태를 전환하는 Windows 유틸리티입니다.
릴리스 빌드는 관리자 권한을 요구하는 manifest를 포함하며, 콘솔 창 없이 백그라운드에서 동작합니다. 디버그 빌드는 cargo run으로 실행할 수 있으며, 콘솔 로그로 동작을 확인할 수 있습니다.
windows crate 기반 Win32 API 호출embed-resource를 통한 Windows 리소스 포함src/main.rs 훅 설치, 단독 입력 판정, 메시지 루프, 로그/패닉 처리
src/bin/prepare-release-version.rs 릴리즈 태그 기준 Cargo.toml 버전 갱신
build.rs 릴리스 빌드에 리소스 포함
app.manifest 관리자 권한(requireAdministrator) 선언
app.rc manifest를 실행 파일 리소스로 포함
.github/workflows/release.yml Windows 릴리즈 빌드 및 GitHub Release 생성
필수 환경:
디버그 실행:
cargo run
릴리스 빌드:
cargo build --release
SetWindowsHookExW(WH_KEYBOARD_LL, ...)로 시스템 전역 저수준 키보드 훅을 설치합니다. 모든 프로세스의 키 입력을 감시하지만, 실제 판정과 전환 요청은 현재 프로세스 내부에서 처리합니다.
왼쪽 Shift가 단독으로 눌렸다가 떼어졌는지를 AtomicBool로 추적합니다.
LShift가 눌리면 상태를 true로 설정 (이때 Ctrl, Alt, Win 등 다른 수정키가 눌려있지 않아야 함)false로 변경LShift가 올라올 때 상태가 아직 true면 한/영 전환 요청이 방식은 Shift + A 같은 일반 조합 입력과 충돌하지 않습니다.
특정 창에서 왼쪽 Shift 단독 입력을 한/영 전환으로 사용하고 싶지 않은 경우(예: 게임, 특정 그래픽 툴), LShift + RShift 단축키를 눌러 해당 창에 대해 기능을 켜고 끌 수 있습니다. 이 설정은 창마다 개별적으로 적용되며, 현재 프로세스가 살아있는 동안 유지됩니다.
Bypass 상태가 변경될 때, 화면 중앙 하단에 반투명한 OSD 창을 띄워 현재 상태를 시각적으로 알립니다.
키보드 훅 콜백 안에서는 직접 SendInput를 호출하지 않습니다. 대신 PostThreadMessageW로 메인 스레드 메시지 루프에 사용자 정의 메시지(WM_USER)를 보낸 뒤, 그곳에서 toggle_ime()를 실행합니다.
전환 자체는 SendInput으로 VK_HANGUL 키의 down/up 이벤트를 주입하는 방식입니다. 이 경로는 Windows의 일반 입력 처리 체인을 타므로 TSF(Text Services Framework) 환경과 레거시 IMM32 기반 환경에서 모두 동작하도록 의도되어 있습니다.
실행 경로는 아래처럼 나뉩니다.
cargo runtarget\\release\\oshit.exeoshit.exe 실행(관리자 권한)SendInput으로 넣은 입력은 훅으로 다시 들어오기 때문에, KBDLLHOOKSTRUCT.flags의 LLKHF_INJECTED 비트를 확인해 재귀 처리와 오동작을 막습니다.
메인 스레드는 GetMessageW 루프를 돌며 두 가지 역할을 맡습니다.
WM_TOGGLE_IME 메시지를 받으면 실제 한/영 전환 실행%USERPROFILE%/oshit.logGetMessageW 실패 기록릴리스 빌드는 콘솔 창이 없기 때문에, 비정상 종료나 초기화 문제를 확인할 때는 이 로그 파일이 가장 직접적인 수단입니다.
requireAdministrator manifest를 포함합니다.