hamonikr / nimf

다국어 입력기 프레임워크 Nimf is a lightweight, fast and extensible input method framework
GNU Lesser General Public License v3.0
143 stars 24 forks source link

GtkInputPurpose나 Qt의 inputMethodHints 를 입력기에 반영할 계획이 있나요? #68

Closed hajiyoooon closed 9 months ago

hajiyoooon commented 10 months ago

안녕하세요.

현재 ibus-hangul 같은 경우 텍스트 필드의 input hint가 PASSWORD 이면 한글을 입력하지 못하도록 제한하는 기능이 있는 것으로 알고 있습니다. https://github.com/libhangul/ibus-hangul/blob/main/src/engine.c#L1396

하지만 nimf 에는 이러한 기능이 없는 것으로 보입니다.

혹시 유사한 기능을 반영할 계획이 있으시거나, 반대로 반영하지 않는 이유가 있는지 궁금합니다.

감사합니다. 즐거운 하루 보내세요!

hodong-kim commented 9 months ago

GtkImContext 에는 input-hints 및 input-purpose 라는 속성(properties)이 있습니다.

hodong-kim commented 9 months ago

GtkImContext 에는 input-hints 및 input-purpose 라는 속성(properties)이 있습니다.

https://docs.gtk.org/gtk3/property.IMContext.input-hints.html https://docs.gtk.org/gtk3/property.IMContext.input-purpose.html

InputPurpose 의 API 설명은 다음과 같습니다.

(구글 번역 시작) 입력 위젯의 주요 목적을 설명합니다. 이 정보는 화면 키보드 및 유사한 입력 방법에서 사용자에게 표시할 키를 결정하는 데 유용합니다.

이 목적은 허용되는 문자에 대해 완전히 엄격한 규칙을 적용하려는 것이 아니며 입력 유효성 검사를 대체하지 않습니다. 사용자가 목적에 따라 표현되는 문자 세트 제한을 무시할 수 있도록 온스크린 키보드를 사용하는 것이 좋습니다. 애플리케이션은 목적을 지정했더라도 항목 내용의 유효성을 검사해야 합니다.

GTK_INPUT_PURPOSE_DIGITS와 GTK_INPUT_PURPOSE_NUMBER의 차이점은 전자는 숫자만 허용하는 반면 후자는 3.14E+000에서와 같이 일부 구두점(쉼표나 점, 더하기, 빼기)과 "e" 또는 "E"도 허용한다는 점입니다.

이 열거는 향후 확장될 수 있습니다. 입력 방법은 알 수 없는 값을 "자유 형식"으로 해석해야 합니다. (구글 번역 끝)

말씀하신 GTK_INPUT_PURPOSE_PASSWORD는 input purpose 에 나오는데 이는 패스워드 입력을 영문 아스키 문자(독일어 및 스페인어 제외, 미국 영문)로 제한하기 위해 있는 것이 아닙니다.

현재 현실에서 소프트웨어를 사용할 때 패스워드 입력할 때 영문 아스키 문자를 입력 받는 곳이 대부분일텐데, 사용자분께서 패스워드를 입력할 때 영문으로 입력되어야 하는데 실수로 한글로 입력되어 불편한 점이 있는 것은 저도 공감하고 있습니다. 그러나 패스워드를 입력할 때 입력기에서 영어(아스키문자)로만 입력할 수 있도록 제한하는 것은 매우 부적절해 보입니다. 입력기에서 패스워드를 영문, 한글, 일본어 등의 다양한 언어로 입력할 수 있는 원래의 기능을 제공해야 합니다. 패스워드를 영문으로 제한하기 위해서는 응용 어플리케이션에서 키 이벤트를 입력기로 보내지 않고 처리해야할 것입니다.

hodong-kim commented 9 months ago

우리가 안드로이드 폰을 사용하면서 입력해보면, 전화번호를 입력받는 란에서는 스크린 키보드가 숫자 위주(영문 입력도 가능)로 변경되는 것을 보신적 있을텐데요. GTK의 input-hints 및 input-purpose 또는 Qt 에 있는 input method hints 는 그러한 용도로 있는 것입니다. 패스워드 입력을 영문으로 제한하기 위해 있는 것이 아닙니다. 다만, input-hints, input-purpose 또는 input method hints 는 데스크탑에서 키보드로 입력할 때 유용성이 떨어져서 nimf 에 구현을 하지 않았을 뿐입니다.

hajiyoooon commented 9 months ago

친절한 답변 감사합니다! 제가 GTK_INPUT_PURPOSE_PASSWORD 의 역할에 대해 오해하고 있었군요. 덕분에 보다 확실히 이해할 수 있었습니다 ㅎㅎ! 이슈 close 하겠습니다.