Discourse가 가상 키보드를 어떻게 감지/추론하나요?

Discourse와 무관한 프로젝트에서 모바일 브라우저의 가상 키보드가 활성화되어 있는지 감지하는 기능을 꼭 넣고 싶습니다. 며칠 동안 고민하고 해결책을 찾아보다가, 매일 방문하는 Discourse 포럼이 모바일 가상 키보드에 대해 매우 매끄러운 인터페이스를 갖추고 있다는 사실을 최근에야 깨달았습니다. 키보드를 감지하는 것이 얼마나 신뢰할 수 있는지, 그리고 키보드를 닫으면 다시 정상 모드로 전환되면서 답글 입력창이 나머지 공간을 채우도록 변경되는 점이 정말 훌륭합니다.

가상 키보드를 감지하는 다른 쉬운 해결책은 찾지 못했습니다(대부분의 Stack Overflow 답변은 시도하지 말라고만 하니까요). 하지만 Discourse가 사용하는 방식은 잘 작동하는 것 같습니다. 다만 코드베이스가 크고 복잡해서 관련 코드가 어디에 있는지 모르겠습니다. 따라서 Discourse의 모바일 인터페이스에 익숙한 분이 관련 코드를 알려주거나, Discourse가 사용하는 휴리스틱에 대해 설명해 주시면 좋겠습니다.

Visual Viewport API를 사용합니다: VisualViewport - Web APIs | MDN.

저장소 코드에서 JS 파일들을 visualViewport로 검색해 볼 수 있습니다. iOS에서는 컴포저(composer)의 배치 때문에 몇 가지 특이한 동작이 있어, 해당 부분에는 더 복잡한 오버라이드를 사용하고 있습니다. 관련 파일은 app/assets/javascripts/discourse/app/lib/safari-hacks.js입니다.

그런 조언을 주셔서 감사합니다!