eubnara / study

6 stars 2 forks source link

linux input method? #137

Open eubnara opened 5 years ago

eubnara commented 5 years ago

input method framework / input method engine https://blogs.gnome.org/happyaron/2011/01/15/linux-input-method-brief-summary/

eubnara commented 5 years ago

https://www.slideshare.net/changwoo/ss-114834048

https://www.x.org/releases/X11R7.7/doc/libX11/XIM/xim.html https://www.x.org/releases/X11R7.7/doc/libX11/libX11/libX11.html

eubnara commented 5 years ago

dbus?

https://12bme.tistory.com/282

eubnara commented 5 years ago

im-config ?

man im-config
cat ~/.xinputrc
systemctl status --user im-config.service
~/.config/environmentd.d/50-input.conf

다음 읽어보기

http://manpages.ubuntu.com/manpages/disco/en/man8/im-config.8.html
/usr/share/doc/im-config/README.Debian.gz
eubnara commented 5 years ago

libhangul?

https://github.com/libhangul/libhangul/wiki https://libhangul.github.io/libhangul-doc/0.1.0/ https://libhangul.github.io/libhangul-doc/git/group__hangulic.html#hangulicusage

eubnara commented 5 years ago

image

XKB 옵션을 눌렀을 때, 나오는 항목들의 한글은 소스코드에 들어있지 않다. 기본값으로 보인다.

pot file 이라는 것이 있어야 locale 을 바꿨을 때 한글이 잘나온다.

https://ubuntuforums.org/showthread.php?t=108879 를 참고해 보니, 로컬에는 *.mo 라는 바이너리 파일만 존재한다.

/usr/share/locale-langpack/ko/LC_MESSAGES/xkeyboard-config.mo

아마도 아래 링크? https://github.com/freedesktop/xkeyboard-config/blob/master/po/ko.po

이 소스가 어떻게 locale-langpack 으로 들어가는지는 아직 모르겠다.

gettext 명령으로 번역

$ gettext xkeyboard-config "Adding currency signs to certain keys"
화폐 기호를 특정 키에 추가
eubnara commented 5 years ago

https://stackoverflow.com/questions/10566109/fputs-what-does-the-underscore-stand-for https://ko.wikipedia.org/wiki/Gettext

gettext 는 종종 _ 으로 aliase 된다. 아래는 nimf 소스코드 예시

static void
append_xkb_menu_after_nimf_menu (GtkWidget *listbox)
{
  GtkWidget *label;
  GtkWidget *row;
  label = gtk_label_new (_("XKB Options"));
  row   = gtk_list_box_row_new ();
  gtk_widget_set_name (row, "xkb-options");
  gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE);
  gtk_container_add (GTK_CONTAINER (row), label);
  gtk_widget_set_halign (label, GTK_ALIGN_START);
  gtk_widget_set_margin_start  (label, 15);
  gtk_widget_set_margin_end    (label, 15);
  gtk_widget_set_margin_top    (label, 5);
  gtk_widget_set_margin_bottom (label, 5);
  gtk_list_box_insert (GTK_LIST_BOX (listbox), row, 1);
}