当前位置:  技术问答>linux和unix

Linux下的GTK widget为什么能找到输入法

    来源: 互联网  发布时间:2017-01-02

    本文导语:  问题: 在嵌入式平台上开发一个输入法程序,但是GTK程序找不到这个输入法。 -------------- 在Ubuntu上,GTK程序会根据系统变量 GTK_IM_MODULE 的值,到/etc/X11/xinit/xinput.d/ 目录下去找输入法的配置文件,从而找到输入法的...

问题: 在嵌入式平台上开发一个输入法程序,但是GTK程序找不到这个输入法。
--------------
在Ubuntu上,GTK程序会根据系统变量 GTK_IM_MODULE 的值,到/etc/X11/xinit/xinput.d/ 目录下去找输入法的配置文件,从而找到输入法的应用程序。
请问,我想把输入法移植到一个嵌入式平台上,没有对应的/etc/X11/xinit/xinput.d/ 目录。
1. 我需要做些什么,才能让GTK程序找到输入法的配置文件/和IME进行通讯? 
2. Ubuntu系统为什么能找到/etc/X11/xinit/xinput.d/ 目录?
多谢!

PS: 在[嵌入式开发]板块发了两天都没人理我,所以在这里重新发一次。

|


大概看了一下gtk的代码,实现很简单。

gtk 自己维护一个hashtable,管理所有的输入法, 输入法加载后拿到“类指针”保存起来


gtkentry的实现, “类” 里面有一个成员是用来保存 这个 输入法指针的, gtkentry建立的时候,初始化这个指针为 指定的输入法,

然后gtkentry有 按键消息的时候, 就使用这个指针去调用 输入法的注册的回调函数就处理就可以了。






static gint
gtk_entry_key_press (GtkWidget   *widget,
     GdkEventKey *event)
{
  GtkEntry *entry = GTK_ENTRY (widget);
  GtkEntryPrivate *priv = entry->priv;

  gtk_entry_reset_blink_time (entry);
  gtk_entry_pend_cursor_blink (entry);

  if (priv->editable)
    {
      if (gtk_im_context_filter_keypress (priv->im_context, event))  ///这里调用输入发注册的回调函数
{
  gtk_entry_obscure_mouse_cursor (entry);
  priv->need_im_reset = TRUE;
  return TRUE;
}
    }
  

|
你这个输入法应该是GTK接口的?  还有好像也可以 XIM 接口的。


启动应用程序之前应该设置 这变量吧,默认应该也是有个 gtk.immodules这样的配置文件,自己找下看看

http://www.gtk.org/api/2.6/gtk/gtk-running.html


GTK_IM_MODULE.� Specifies an IM module to use in preference to the one determined from the locale.

GTK_IM_MODULE_FILE.� Specifies the file listing the IM modules to load. This environment variable overrides the im_module_file specified in the RC files, which in turn overrides the default value sysconfdir/gtk-2.0/gtk.immodules (sysconfdir is the sysconfdir specified when GTK+ was configured, usually /usr/local/etc.) 



|
因为输入法框架支持gtk接口

linux下的scim、ibus并不相当于windows下的搜狗、智能abc,而相当于Windows语言栏,是个框架,这个框架负责和桌面交互

|


im都有自己的守护进程,进程既然存在,那无论是gtk找im,还是im自己就能找你的鼠标什么的都是可以实现的,具体的细节我是不太清楚

|
自己去看下gtk的代码就知道了
http://git.gnome.org/browse/gtk+/tree/gtk/gtkentry.c

    
 
 

您可能感兴趣的文章:

  • linux 繁体 汉字输入法 问题 linux 繁体 汉字输入法 问题
  • Virtul PC下的linux如何启动输入法?每次按ctr+space总是出现的是ms windows的输入法。
  • linux怎么输入中文? 有没有中文输入法阿?
  • 谁知道什么软件能在linux下输入中文, 和下载中文输入法网址, 急,急,急!!!
  • 【新手请教】关于linux下的中文输入法?
  • 刚接触linux,遇到输入法问题
  • 关于linux下中文输入法的一些问题(在线等待)
  • LINUX下默认有中文输入法吗?如何调用?
  • 为什么我linux没有中文输入法
  • linux下用ctrl+space怎么调不出输入法,我的系统也不能输入汉字
  • 在linux使用中文输入法问题
  • 请问linux9下哪种拼音输入法好??
  • 我安装好了Linux后,用OpenOffice来写文档,不能输入汉字(有输入法,可是显示不出来!)
  • Linux怎么删掉多余的输入法
  • 谁能介绍Linux下有五笔输入法,在哪儿可以找到,是挂在什么汉字系统下的。
  • linux下的fcitx输入法
  • 关于RedHat linux中中文输入法的问题???
  • linux下如何用输入法?
  • redhat linux7.3 中有集成中文输入法吗????
  • linux下的输入法?
  • 在linux下如何用c实现类似于Linux登陆时输入密码的场景: 即输入密码时不在屏幕上显示所输入的内容
  • 在linux下终端C编程做登陆时界面时,怎么在输入密码时让它不显示输入内容,或者输入一个字符是*
  • SSH登陆linux,明明输入对的密码,还是弹出来要我输入密码?
  • linux的命令包含有版本信息都很长,怎么样才能在Shell下输入的时候,只需要输入一部分,就可以出现整个命令!
  • 我装了中软Linux3.1,启动时要求输入用户名和口令,但安装时并没有提示指定用户名,所以现在输入用户名老是错误,不能进入系统,请问该怎
  • 急急,为什么装上智能陈桥for linux以后按CTRL+空格键不能调出输入法了,现在只能用输入英文了,希望大家给于帮助(redhat9),谢谢!
  • 求教,Linux下键盘输入的所有数据都会经过Linux内核吗???
  • --********-- linux下如何模拟键盘的输入 --************---
  • 很高兴加入LINUX。请问一个简单的问题:REDHAT LINUX7.3下的中文输入?怎么办?
  • linux终端下输入文件名的前几个字母,按下tab键就会被全。假如有两个以ab开头的文件,我输入ab,按下tab被全的是第一个文件,但我想要的是第二个文件可以怎
  • RedHat linux8.0为什么不能输入中文?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 都说Linux是开源的,在哪可以找到Linux的源码?
  • 在装LINUX时出现未找到创建新文件的有效设备
  • 我想用Linux的串口和S3c2410x连接,请问在Linux里面怎么找到那个超级终端?
  • 我在linux下安装了linux版的realone,但却没法找到如何运行。
  • 请问:哪里能找到linux的源代码
  • linux xchat 怎样找到国内的群
  • 我在Linux上没有找到gcc,等待指点……
  • linux 下怎么才能找到想要的文件?
  • 在哪里可以找到linux源文件?
  • 机器上直接装 linux 驱动程序哪里可以找到
  • 怎么在linux里面找到其他分区
  • 我安装了Winamp for Linux,可是在哪里能够找到它.
  • 怎么确定LINUX GATEWAY用的是什么防火墙????怎么找到配置文件???
  • 请教:linux下如何找到windows xp下面的文件
  • 安装共创桌面Linux 2005后windows xp无法找到 了
  • 请问在哪里可以找到linux的cp命令的源代码
  • 在哪里找到linux下的c++编译器?
  • 哪里可以找到linux下的TCP/UDP/IP编程教程和例子?
  • Linux下TCP/Ip开发资料和源代码什么地方可以找到?
  • linux 下如何找到磁盘阵列
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3