Comments (2)
기록: 속 입력기만 사용하고 기본 영문 입력기를 없애고 싶어요.
macOS는 기본적으로 로마자 입력 소스1를 1개 이상 반드시 추가하여 사용하도록 강제하고 있습니다. 이는 암호를 입력해야 하는 경우 반드시 로마자를 사용해야 하는 점, 기본적으로 macOS는 단일 입력 소스가 단일 문자 체계만 입력할 수 있다고 가정된 점 등에서 기인한 것으로 보입니다.
시스템 레벨에서는 잠금 화면이나 암호 입력 필드가 나타나는 경우 로마자 입력기 외에 다른 입력기를 선택할 수 없도록 하며, 이때 사용 가능한 로마자 입력기가 자동으로 선택됩니다. 일반적으로 암호 입력이 완료되거나 필드에서 포커스가 해제될 때 직전에 사용했던 입력기로 다시 선택이 복원됩니다. 앱 레벨에서도 동일한 작동을 구현할 수 있습니다. 대표적으로 웹 브라우저에서 <input type="password">
에 포커스 되는 경우, EnableSecureEventInput
API (Carbon)를 호출하여 키보드 입력을 독점한 후 NSTextInputContext
API (Cocoa) 또는 TextInputSources
API (Carbon)를 사용하여 로마자 입력기를 자동으로 선택합니다2.
![](https://private-user-images.githubusercontent.com/1336881/299346294-3d79015c-3a01-41ee-a17c-4f97aa72a34f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgxMzg1NTIsIm5iZiI6MTcxODEzODI1MiwicGF0aCI6Ii8xMzM2ODgxLzI5OTM0NjI5NC0zZDc5MDE1Yy0zYTAxLTQxZWUtYTE3Yy00Zjk3YWE3MmEzNGYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDYxMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA2MTFUMjAzNzMyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NTdlMmRjMTQ2ODU2MTc5Y2ZhNTRkZmU1YWZlNGJhM2RkM2U1MDA1ZDIwYzczMTZhZGMyZmUzMGZkNGZmODhkZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.ksbBcZPyYw-ljbfWflbqmHLAnXPIZV-Bdwdvr85cMSk)
macOS에서 서드파티 입력기는 InputMethodKit
API를 사용하여 개발할 수 있습니다. 속 입력기는 개발 초기부터 로마자 입력기로 시스템에 등록되도록 하였습니다3. 단일 입력 소스면서 영문과 한글 두가지 문자 체계를 입력할 수 있도록 설계되었기 때문에 암호 입력 시에도 문제가 없을 것이라는 판단이었습니다. 그러나 IntelliJ IDE 등에서 Command+Shift+[,] 등 단축키가 macOS 내장 영어 ABC 입력기와 다르게 인식되어 기본 설정을 모두 변경해야 하는 불편함(#13)이 있었습니다. 여러가지 실험을 해보니 macOS 내장 입력기라도 InputMethodKit
을 사용하면서4 로마자로 등록된 경우5 동일한 증상이 나타나고, 그 외의 입력 체계로 등록된 경우6 증상이 사라지는 것을 확인했습니다. 이 때문에 속 입력기에서 해결할 수 없는 문제로 판단하고 ed8d653 에서 로마자 대신 한글로 등록되도록 변경하였습니다.
그러다보니 위에서 서술한 것처럼 암호 입력 필드에서 속 입력기를 사용할 수 없게 되었지만, 시스템 레벨의 경우 속 입력기를 사용하다가 암호 입력 필드를 만나더라도 이후 다시 입력기 선택이 원래대로 돌아오기에 큰 문제가 없었습니다. 그러나 앱 레벨의 경우, 특히 Chrome과 Firefox의 경우 포커스가 해제되더라도 입력기 선택이 돌아오지 않아, "그냥 사용하다보니/1Password를 켜니 입력기가 영어 ABC로 바뀌어 있다"는 불편함(#20)이 있었습니다. 이 때문에 d5a38cb 에서 "ABC 입력기 제한" 기능을 추가하게 되었습니다. 이 기능은 keyboardSelectionDidChangeNotification
을 사용하여 입력 소스가 변경되었음을 감지했을 때 새로운 입력 소스가 영어 ABC7라면 일정 딜레이 후에 TextInputSources
API (Carbon)를 사용하여 속 입력기를 자동으로 선택합니다.
1 macOS 내장 입력기 중에서는 영어 ABC, 베트남어 Simple Telex 등
2 관련 소스 코드: Safari/WebKit, Chrome/Chromium, Firefox/Gecko
3 등록 가능한 입력 체계 종류: CarbonCore
API, Unicode
4 macOS 내장 입력기는 기본적으로 InputMethodKit
을 사용하지 않는 것으로 보입니다. InputMethodKit
을 사용하는 입력기는 /System/Library/Input Methods
에서 찾을 수 있으며, Sonoma 14.2 기준 총 18개입니다.
5 베트남어 Simple Telex 등
6 한국어 두벌식 등
7 입력 소스 ID: com.apple.keylayout.ABC
from sokim.
"ABC 입력기 제한" 기능을 추가하여 대응한 v1.1.1을 선공개하였습니다.
from sokim.
Related Issues (20)
- 블루투스 키보드에서 '\|' 키가 '#~'로 입력 HOT 8
- 한영 전환키를 다른 키로 변경하였을 때 한영상태 미반영 HOT 2
- 여러개의 한영전환 단축키 부여
- 기본 입력기에서 세팅한 단축키가 동작 안함 HOT 2
- Webstorm에서 꺽쇠, 따옴표 치환 동작이 다름 HOT 2
- 한영전환 할수 있는 키할당을 사용자가 따로 설정할 수 있으면 좋겠습니다.
- 갑자기 특정앱에서 영어로만 입력 HOT 2
- 유니버셜 컨트롤을 이용해 다른 맥에서 속 입력기가 선택된 맥으로 입력이 안되는 문제
- Catalina 지원은 생각 없으신가요?
- 속입력기를 오직 한글입력기로만 활용할 수 있는 옵션 문의
- 입력기 설정이 나오지 않습니다. HOT 2
- 입력이 안 되는 버그 HOT 2
- 신세벌식 P2 지원
- 보조 키 없는 단축키 기능을 사용하는 경우 단축키가 글자로 입력되는 문제 HOT 1
- 카라비너 이용중 슬립모드에서 제대로된 키입력을 할 수 없는 문제 HOT 7
- 특정 페이지에서 한글 상태임에도 불구하고 영문으로만 입력되는 문제 HOT 1
- Credential Field에서 이용할 수 없는 문제 HOT 2
- Safari 등 검색어 입력 중 Top Hit이 자동 완성 되면 한글 조합이 중단되는 문제
- 모아치기 지원
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sokim.