Giter Site home page Giter Site logo

Comments (4)

 avatar commented on June 27, 2024

말씀하신 기능은 매우 유용한 기능입니다.
조간만 구현하겠습니다.

from dasom.

 avatar commented on June 27, 2024
  1. 오작동의 소지가 있습니다.
    GTK의 경우 GDK_SELECTION_PRIMARY, Xlib 의 경우 XA_PRIMARY 이런 걸로 구현은 가능하지만,
    GDK_SELECTION_PRIMARY, XA_PRIMARY 이 둘의 동작이 약간 다릅니다.
    GDK_SELECTION_PRIMARY 는 마우스로 선택한 것이 출력되고,
    XA_PRIMARY 는 마우스로 선택 후 복사한 것이 출력됩니다.
    Qt 쪽은 어떻게 되는지 시험해보지 않았습니다.
    일단, GTK 쪽과 Xlib 의 경우 다르게 작동할 것 같습니다.
  2. 부하가 많이 걸립니다.
    한자창에서 SELECTION 을 감지하여 작동시킬 경우, 오작동의 소지가 큽니다.
    어플1에서 선택1하고, 어플2에서 선택2한 경우, 선택1이 리셋되지 않은 상태에서 선택2가 선택됩니다. 다른 창을 클릭할 경우(focus out / focus in), 선택에 대한 어플 동작이 통일되어 있지 않습니다. 그리고 조합 중인 문자(preedit) 체크해야 하고, GDK_SELECTION_PRIMARY 체크해야 하는데 부하가 약간 걸립니다. 따라서 한자창(candidate)에서 구현하기는 곤란하고,
    언어 모듈 dasom-jeongeum 에서 구현하게 되면, dasom-jeongeum 이 GDK, Qt, X 에 종속되는 결과를 초래합니다.
    이를 피하려면 dasom-gtk, dasom-qt 모듈(클라이언트)에서 서버로 선택 문자열을 전송하는 api 를 만들면 되겠지만, 이 경우 선택할 때마다 부하가 약간 걸리는 정도가 아니라 많이 걸립니다.

from dasom.

 avatar commented on June 27, 2024

dasom-candidate.c 에서 이 기능을 구현하기는 곤란하고, 한글 엔진에 특화된 별도의 한자창(예; dasom-jeongeum-candidate.c) 만들면 가능할 것 같습니다.

from dasom.

 avatar commented on June 27, 2024

MS윈도XP 에 있는 한글 입력기를 살펴보았는데,
메모장이나 워드패드에서

|가나다라 입력이 되어 있다고 할 때,

| 을 커서라고 합시다. 그때 한자키를 누르면 가 푸른색으로 선택되고 한자목록이 나옵니다.
한자키를 다시 누르면 한자창이 사라지고 선택이 해제되고 커서가 오른쪽으로 이동합니다.

가|나다라
이렇게 되고... 한자키를 누를 때마다 이러한 동작이 오른쪽으로 반복됩니다.

그런데 특이한 사항이 있는데 크롬에서는 안 그럽니다.
크롬에서는 마우스로 글자를 선택하고 한자키를 눌러도 한자가 뜨지 않습니다.
이게 무엇을 의미하냐면, 말씀하신 동작을 위해...
그 동작과 관련된 API 가 응용 프로그램와 입력기에 구현되어 있다는 의미입니다.
리눅스에는 그러한 API가 없습니다.
따라서 이러한 기능을 구현하기 위해서는
XIM 따로, Qt 따로, GTK 따로.. 이렇게 구현해야 가능할 것 같고,
어떤 어플은 작동될 수도 있고, 안 될 수도 있습니다.
그게 단순히 클립보드를 다루면 가능할 것으로 보이긴 하지만,
팝업 사전 기능이라면 충분히 가능하지만, 선택된 부분(버퍼겠죠...)이 editable 편집 가능한 부분인지 확인을 해야 오류를 피할 수 있습니다만, 그러한 일을 수행할 수 있는 IM API 가 없습니다.
조금이라도 가능하게 하려면 이벤트를 후킹해서... API 문서에 나와 있지 않은 방법을 사용하면 가능할 수도 있겠지만, 이는 안정성을 저해하는 매우 나쁜 방법입니다.

현재의 GTK IM, Qt IM, XIM API 로는 구현이 불가능하고 후킹 및 해킹(gdk_window_get_user_data)을 하여 구현하더라도 불완전하거나 불안하게 작동하게 됩니다. 따라서 구현하지 않겠습니다.

그리고, 말씀하신 기능을 위한 어떤 API를 설계하여 전세계에 보급하는 것이 바람직해 보입니다.
wayland 프로젝트에 Wayland Input Protocol 에 문의해보세요.

감사합니다.

from dasom.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.