잡동사니

25. 키보드 문제(2/2) - Tasker를 이용한 해결 본문

Surface Duo

25. 키보드 문제(2/2) - Tasker를 이용한 해결

승이75 2021. 9. 21. 23:06

Tasker를 써서 내가 원하는 상황에서 원하는 키보드가 자동으로 바꿔지도록 하였다.

원하는 상황은 아래와 같다.
1. 세로 모드에서는 일반 앱에서건 앱 서랍에서건 항상 커키키보드를 사용
2. 가로 모드에서는 일반 앱에서는 커키키보드, 앱 서랍에서는 SwiftKey Beta가 사용되도록 함

SwiftKey 키보드 상태에서 블루투스 키보드로 기기를 연결하면 한영변환을 어찌해야할지 모르겠다. 방법이 없는건지 있는데 못찾은건지... 커키키보드는 블루투스 키보드로 연결시 shift space로 한영변환이 된다. 추후에 "블루투스가 연결된 조건일 때에는 어떤 상황에서건 커키키보드가 사용되도록 함"과 같은 내용을 추가할 수 있을것 같지만 일단은 위 내용만 반영하도록 하였다.

아래 url들은 참고한 자료들이다. App별로 사용될 키보드 설정을 달리 해주는 내용과 화면 Orientation을 검출해주는 java function으로 만들어진 Task이다.

https://www.reddit.com/r/tasker/comments/7ovdr9/setting_keyboard_per_app_via_tasker/

Setting Keyboard per App via Tasker

Hi, I'm new to Tasker, other than a brief stint in 2010. I'd like to have my current keyboard for every app except for Termux, which I'd prefer...

www.reddit.com

https://www.xda-developers.com/how-to-automatically-change-your-keyboard-on-a-per-app-basis/

How to Automatically Change your Keyboard on a Per-App Basis

A tutorial on how to automatically switch your keyboard on a per-app basis using Tasker and the AutoTools or SecureTask plugins.

www.xda-developers.com

https://taskerprofilecenter.blogspot.com/2020/01/task-check-device-screen-orientation-v10.html

[TASK] Check Device Screen Orientation v1.0

Tasker Profile Center, a blog site about tasker profiles, tasks and projects

taskerprofilecenter.blogspot.com


보통의 앱별로 키보드 설정을 달리 해주어야 하는 상황에서는 위 첫번째와 두번째 url의 내용대로 하면 되는데 앱 서랍의 경우는 조금 다르다. 앱 서랍의 경우는 Tasker에서 WIN 변수를 사용해서 지금 화면이 어떤 화면인지를 파악해야 된다. Tasker안에 있는 Tasks 중에 Popup이나 Flash를 이용해서 WIN 변수값을 확인해보니 앱 서랍에 들어갔을때는 WIN 변수값이 "앱"으로 뜨고, 앱 서랍을 닫을 때는 "홈 화면 4/7" 등과 같이 앞 부분에 "홈 화면" 이라는 문자가 붙는것을 알 수 있다.

앱 서랍에 들어갔을때 WIN 변수값을 Tasker의 Popup Task로 확인
앱 서랍에서 나올때 WIN 변수값을 Tasker의 Popup Task로 확인

이 내용을 이용하여 아래와 같이 Tasker에서 Profile과 Task를 만들었다.

테스트용으로 만들었던 것들과 함께 있는데 혹시 몰라서 지우지 않고 두었다. 실제로 쓰는것은 맨 아래쪽에 있는 "Variable Value %WIN eq 앱"과 "Variable Value %WIN ~R 홈 화면*" 이다. "Device Boot" 도 사용하는데 이건 최초 부팅시에 Parallel Space에 깔린 카카오톡 실행을 위한 것이다. 이 내용은 별도의 글로 추후에 작성할 생각이다.

먼저 "Variable Value %WIN eq 앱" Profile은 말그대로 %WIN 변수값을 확인해서 그 값이 "앱"이 되면 뒤에 있는 Task를 실행하라는 의미이다. Profile 작성은 그냥 +버튼 --> State --> Variables --> Variable Value로 하면 되고 Conditios 부분을 %WIN과 EQ 그리고 앱으로 바꾼다.

이 profile에 대한 Task는 위 URL의 3번째 것을 활용하여 아래와 같이 수정하였다. 원래 Tasker에서 제공되는 화면 방향 검출 방법이 Profile에서 있는것 같은데 잘 작동하지 않았다. (Profile --> State --> Display --> Display Orientation) 그래서 위 URL 3번째 것을 활용하여 이 자바 코드에서 쓰고 있는 변수 value가 0,2로 나오는지 1,3으로 나오는지에 따라 가로 모드에서 앱 서랍 진입인지, 세로 모드에서의 앱 서랍 진입인지를 구분하고 가로 일때는 SwiftKey 키보드로 설정하고 새로 일때는 커키 키보드로 설정되도록 키보드 설정을 하였다. 여기서 0은 0도, 1은 90도, 2는 180도, 3은 270도 회전이다. 키보드 설정에 대한 세부적인 방법은 위 URL 첫번째, 두번째를 참고하면 된다.


앱 서랍 진입 이후 앱서랍을 닫았을 때 다시 필요한 조치가 키보드 설정이 커키 키보드로 되어 있지 않은 경우 다시 커키 키보드로 바꾸어 주는 부분이다. "Variable Value %WIN ~R 홈 화면*" 부분을 보면 Profile로 아래와 같이 구성하여 "홈 화면"으로 시작하는 변수값이 들어오면 뒤의 Task를 실행하도록 하였다.

Task 부분은 별것 없다. Popup이나 Flash는 검증용으로 해둔것이고 실제 키보드 변경 부분은 AutoTools Secure Settings는 자세한 내용으로 URL 첫번째, 두번째 부분을 참고하여 진행하면 된다.


이런식으로 해두니 의도한대로 가로모드 앱 서랍 진행시에는 SwiftKey Beta가 잘 작동하고, 세로 모드에서는 앱 서랍 모드 또는 일반 앱 모드 구분없이 커키 키보드가 잘 작동한다. 물론 가로모드로 앱 서랍을 진입해서 SwiftKey Beta가 떠있는 상태에서 세로모드로 진입하거나 하면 의도한 것과 다르게 작동되지만, 이 정도 자동화로도 충분히 만족스럽다.

차후에 커키키보드가 앱서랍에서도 잘 작동할 수 있도록 업데이트 되면서 이런 Tasker 작업이 필요없게 되면 좋겠고, Microsoft Launcher 앱이 개선되어서 한쪽 스크린만 사용할때 키보드 사라짐 문제도 해결이 되었으면 좋겠다. 점뒤에 Space 자동삽입 문제가 3년동안 해결이 안되는 것을 보면 별로 기대는 안된다.