키보드 클릭 사운드 내는 파이썬 프로그램
애플2 에뮬레이터를 가지고 놀면서 화면은 CRT VGA 로 그럭저럭 추억의 화면을 얻을 수 있었고, 디스크 드라이브가 디스크를 엑세스 하는 소리는 에뮬레이터 중에서 MAME 최신 버전을 사용하여 얻을 수 있었다.
그런데 이 아저씨의 유튜브 쇼츠를 보면 실기의 경우 기계식 키보드의 경쾌한 클릭킹 소리가 역시 큰 추억의 한 부분으로 느껴졌다.
https://www.youtube.com/shorts/THNj1nqEEhE
그래서 키보드 클릭킹 소리를 내 주는 윈도우즈용 무료 앱들을 찾아 헤매다가 그런데로 맘에 드는 프로그램을 하나 찾았다. 한국분이 개발하신 것이다. (좋은 프로그램을 공개해 주셔서 감사합니다 ^^)
https://kagamine-rin.com/?p=339
기계식 키보드 종류별 소리를 WAV 파일로 여러개 준비해 두셔서 프로그램의 config.ini 에서 셋팅하여 사용할 수 있고, 몇몇 특정 키들에 대해서는 알파벳, 숫자키와 또 다른 소리로 셋팅할 수 있어서 매우 유용하다. 문제는 애플 에뮬레이터를 사용하면서 간혹 필요한 function key 나 다른 키들을 누를때 (예를 들면 메뉴를 호출해서 디스크 이미지를 바꾸거나 할때) 소리가 나지 않아야 하는 경우까지 소리가 다 나버린다는 사실... 결국 내가 원하는 키에서만 소리가 나게 하는 프로그램이 필요한데 무료로 그런걸 찾기 매우 힘들다. 때문에 직접 파이썬으로 만들어 보기로 했다. 어짜피 나야 늘상 파이썬을 쓸 수 있는 환경에서 노니까...
필요한 기술은 위의 프로그램에서 제공해 주는 멋진 키보드 타입별 사운드 파일로 소리를 내는 방법과, 백그라운드로 키를 훅킹해서 키 종류에 따라 선별적으로 원하는 작업을 하게 하는 코드이다.
ChatGPT 와 구글신의 힘을 빌어서 간단한 프로그램을 만들어봤다. 잘 작동한다. 소리가 나길 원하는 키도, 키 별 소리 종류도 내 맘대로 고칠 수 있다. 그리고 같은 키를 계속 누르고 있으면 (릴리즈를 안하면) 반복적인 소리가 나는 것도 막을 수 있다. ^^
백그라운드로 돌리는 핵심은 pynput 라이브러리. 그리고 윈도우즈에서 WAV 파일 소리를 내 주는 것은 winsound. 일단 나는 윈도우즈만 사용하기에 winsound를 쓰는데, 다른 OS라면 적당히 다른 라이브러리를 사용해야 할 듯.
코드는 생각보다 단순하다. prevkey 를 체크해서 같은키를 계속 누르고 있으면 소리를 안내고, 키 릴리즈를 할때 prevkey 를 초기화한다.
위의 소스 스크린샷은 ESC 를 누를때 이 프로그램이 끝나게 되어 있다. 첨부한 파일은 그 부분을 막아놓아서 ESC 키도 제대로 사용할 수 있도록 한 것임.