/gcin

Primary LanguageC++GNU Lesser General Public License v2.1LGPL-2.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.2.7" />
<style type="text/css">
/* Debug borders */
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
/*
  border: 1px solid red;
*/
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

tt {
  color: navy;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  font-family: sans-serif;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}

div.sectionbody {
  font-family: serif;
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}

pre {
  padding: 0;
  margin: 0;
}

span#author {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  font-size: 1.1em;
}
span#email {
}
span#revision {
  font-family: sans-serif;
}

div#footer {
  font-family: sans-serif;
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
div#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
div#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

div#preamble,
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-right: 10%;
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.5em;
  margin-bottom: 2.5em;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid silver;
  padding: 0.5em;
}

div.listingblock {
  margin-right: 0%;
}
div.listingblock > div.content {
  border: 1px solid silver;
  background: #f4f4f4;
  padding: 0.5em;
}

div.quoteblock {
  padding-left: 2.0em;
}
div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock {
  padding-left: 2.0em;
}
div.verseblock > div.content {
  white-space: pre;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 2px solid silver;
}

div.exampleblock > div.content {
  border-left: 2px solid silver;
  padding: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
div.imageblock img { border: 1px solid silver; }
span.image img { border-style: none; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
div.olist > ol {
  list-style-type: decimal;
}
div.olist2 > ol {
  list-style-type: lower-alpha;
}

div.tableblock > table {
  border: 3px solid #527bbd;
}
thead {
  font-family: sans-serif;
  font-weight: bold;
}
tfoot {
  font-weight: bold;
}

div.hlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hlist td {
  padding-bottom: 15px;
}
td.hlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
}
td.hlist2 {
  vertical-align: top;
}

@media print {
  div#footer-badges { display: none; }
}

div#toctitle {
  color: #527bbd;
  font-family: sans-serif;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}
/* Workarounds for IE6's broken and incomplete CSS2. */

div.sidebar-content {
  background: #ffffee;
  border: 1px solid silver;
  padding: 0.5em;
}
div.sidebar-title, div.image-title {
  color: #527bbd;
  font-family: sans-serif;
  font-weight: bold;
  margin-top: 0.0em;
  margin-bottom: 0.5em;
}

div.listingblock div.content {
  border: 1px solid silver;
  background: #f4f4f4;
  padding: 0.5em;
}

div.quoteblock-attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock-content {
  white-space: pre;
}
div.verseblock-attribution {
  padding-top: 0.75em;
  text-align: left;
}

div.exampleblock-content {
  border-left: 2px solid silver;
  padding-left: 0.5em;
}

/* IE6 sets dynamically generated links as visited. */
div#toc a:visited { color: blue; }

/* Because IE6 child selector is broken. */
div.olist2 ol {
  list-style-type: lower-alpha;
}
div.olist2 div.olist ol {
  list-style-type: decimal;
}
</style>
<script type="text/javascript">
/*<![CDATA[*/
window.onload = function(){generateToc(2)}
/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, October 2006. License: GPL */

function getText(el) {
  var text = "";
  for (var i = el.firstChild; i != null; i = i.nextSibling) {
    if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
      text += i.data;
    else if (i.firstChild != null)
      text += getText(i);
  }
  return text;
}

function TocEntry(el, text, toclevel) {
  this.element = el;
  this.text = text;
  this.toclevel = toclevel;
}

function tocEntries(el, toclevels) {
  var result = new Array;
  var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
  // Function that scans the DOM tree for header elements (the DOM2
  // nodeIterator API would be a better technique but not supported by all
  // browsers).
  var iterate = function (el) {
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
        var mo = re.exec(i.tagName)
        if (mo)
          result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
        iterate(i);
      }
    }
  }
  iterate(el);
  return result;
}

// This function does the work. toclevels = 1..4.
function generateToc(toclevels) {
  var toc = document.getElementById("toc");
  var entries = tocEntries(document.getElementsByTagName("body")[0], toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "toc" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    document.getElementById("header").removeChild(toc);
}
/*]]>*/
</script>
<title>gcin 使用手冊</title>
</head>
<body>
<div id="header">
<h1>gcin 使用手冊</h1>
<span id="author">eliu</span><br />
2009-02-03
<div id="toc">
  <div id="toctitle">Table of Contents</div>
  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
</div>
</div>
<div id="preamble">
<div class="sectionbody">
<div class="para"><p>本文使用 UTF-8 編碼,請使用支援 UTF-8 編碼的編輯器,例如:gedit。</p></div>
</div>
</div>
<h2 id="_">1. 各平台上的安裝方式</h2>
<div class="sectionbody">
<h3 id="_mandriva">1.1. Mandriva</h3><div style="clear:left"></div>
<div class="listingblock">
<div class="content">
<pre><tt># urpmi gcin-X.X.X-liu_mdk.i586.rpm</tt></pre>
</div></div>
<div class="para"><p>或</p></div>
<div class="listingblock">
<div class="content">
<pre><tt># rpm -i gcin-X.X.X-liu_mdk.i586.rpm</tt></pre>
</div></div>
<h3 id="_debian">1.2. Debian</h3><div style="clear:left"></div>
<h4 id="_gcin">1.2.1. gcin 的安裝方式</h4>
<div class="listingblock">
<div class="content">
<pre><tt># aptitude install gcin</tt></pre>
</div></div>
<div class="para"><p>或</p></div>
<div class="listingblock">
<div class="content">
<pre><tt># dpkg -i gcin_X.X.X-X~X_iX86.deb gcin-qt3-immodule_X.X.X-1~X_iX86.deb</tt></pre>
</div></div>
<h3 id="_fedora">1.3. Fedora</h3><div style="clear:left"></div>
<div class="listingblock">
<div class="content">
<pre><tt># yum install gcin</tt></pre>
</div></div>
<h3 id="_tarball_gcin">1.4. 下載 tarball 自行編譯 gcin</h3><div style="clear:left"></div>
<div class="para"><p>如果使用 .tar.bz2 安裝者, table path 是 <em>/usr/local/share/gcin/table</em> ,而不是 <em>/usr/share/gcin/table</em> ,預設的 compile flags 是 -g,這樣如果 gcin 如果有 coredump 時可以方便 debug 且回報給作者 (gcin 的 source code 不要 remove 掉),不過 compile 出來的可執行檔的大小大很多,如果不喜歡,可以在 <em>./configure</em> 後修改 <em>config.mak</em> ,把 <em>OPTFLAGS=-g</em> 改成 <em>OPTFLAGS=-O</em> 。</p></div>
<h4 id="_gcin_x_x_x_tar_bz2">1.4.1. gcin-x.x.x.tar.bz2 的安裝步驟 (適用於各平台)</h4>
<div class="listingblock">
<div class="content">
<pre><tt>$ tar xvfj gcin-x.x.x.tar.bz2
$ cd gcin-x.x.x
$ ./configure
$ make
su as root
# make install
logout &amp; login</tt></pre>
</div></div>
<div class="para"><p>由 gcin-x.x.x.tar.bz2 自行編譯需要 GTK+ devel、Qt3 devel、Qt4 devel。</p></div>
<h4 id="_mandriva_gcin">1.4.2. 在 Mandriva 自行編譯 gcin</h4>
<div class="para"><p>在 Mandriva 需要 install libgtk+2.0_0-devel &amp; libqt3-devel &amp; libqt4-devel 這三個 .rpm,不過各家的名字可能不太一樣,可能要找一下。另外,你還需要 install pkgconfig 這個 .rpm 。</p></div>
<h4 id="_debian_gcin">1.4.3. 在 Debian 自行編譯 gcin</h4>
<div class="listingblock">
<div class="content">
<pre><tt># apt-get update
# apt-get build-dep gcin
# apt-get source gcin
# cd gcin-X.X.X(此處填入 gcin 的版本號)
# dpkg-buildpackage -b</tt></pre>
</div></div>
<h4 id="_gcin_rpm">1.4.4. 編譯自己的 gcin rpm</h4>
<div class="olist"><ol>
<li>
<p>
安裝 libgtk+2.0_0-devel 這個 rpm。
</p>
</li>
<li>
<p>
$ tar jxvf gcin-x.x.x.tar.bz2 建立編譯目錄/檔案
</p>
</li>
<li>
<p>
執行 .tar.bz2 內的 gcin-0.x.x/setup-rpm,這個 shell script 會幫你把 environment 設定好。
</p>
</li>
<li>
<p>
$ cp gcin-x.x.x.tar.bz2 ~/rpm/SOURCES
</p>
</li>
<li>
<p>
在 gcin-x.x.x 裏面執行./configure 完後,會有一個 gcin.spec
(這是給 Mandriva 用的,其它的 distribution 可能要稍微修改一下。)
</p>
</li>
<li>
<p>
# rpmbuild -ba gcin.spec
(等 compile 完,就可以在 ~/rpm/RPMS/i586 看到你的 .rpm)
</p>
</li>
</ol></div>
</div>
<h2 id="_gcin_2">2. 使用 gcin</h2>
<div class="sectionbody">
<h3 id="__2">2.1. 介面簡介</h3><div style="clear:left"></div>
<div class="para"><p>按 ctrl-Space 叫出 gcin 視窗後,在第一排的注音輸入的按鈕 (button) 按滑鼠右鍵
右鍵可以叫出 gcin-tools window 設定視窗; 按 mouse 左鍵可以叫出符號輸入視窗。</p></div>
<h3 id="__3">2.2. 詞音輸入法</h3><div style="clear:left"></div>
<div class="ilist"><ul>
<li>
<p>
由於 <em>一</em> 與 <em>不</em> 同音字詞過多,輸入此兩字的注音應該以口語發音為主。
譬如,輸入 <em>不會</em> , <em>不</em> 應該輸入第2聲。
</p>
</li>
<li>
<p>
在詞音中按向上鍵可以查詢近音字,如 ㄥㄣ ㄓㄗ
</p>
</li>
<li>
<p>
當輸入一個詞的前兩個字的注音,就會跳出選詞的視窗,此時可以按 shift + 數字來
選詞,也可以不予理會,當輸入下一個字時,視窗會自動關閉。 你可以在 gcin 設定中
把這項功能關掉。
</p>
</li>
<li>
<p>
如何加入新詞?把 cursor (游標) 移至要存的詞句的開頭,按下 shift-Enter,則會自 cursor 所在位置存到編輯區的結尾,cursor 也會自動跳到結尾,方便繼續輸入。
</p>
</li>
<li>
<p>
標點符號與特殊符號可不可以存成詞?只要字有在注音表內就可以存成詞,請參考前面的說明,支援半型字。
</p>
</li>
<li>
<p>
在詞音中按 control-u 可以把整個編輯區的內容清除。
</p>
</li>
<li>
<p>
如果加錯詞怎麼辦?按滑鼠右鍵叫出設定視窗後,使用「詞庫編輯」的功能,你剛才加的詞在檔案最後。修改或刪除成正確的,輕聲是 '1'。在 gedit 中要用 UTF-8 儲存,不要弄成 Big5 了。
</p>
</li>
<li>
<p>
你可以在注音表中自己加入或刪除想要的符號或字
</p>
<div class="listingblock">
<div class="content">
<pre><tt>$ cd ~/.gcin
$ phod2a pho.tab &gt; pho.tab.src  (轉成文字檔)
$ gedit pho.tab.src
$ phoa2d pho.tab.src            (轉成 gcin 的 pho.tab)</tt></pre>
</div></div>
</li>
</ul></div>
<h3 id="__4">2.3. 詞音標點符號輸入</h3><div style="clear:left"></div>
<div class="para"><p>取發音的第一個注音符號 + 輕聲(‧) or 1/2/3/輕 聲
如果要輸入注音符號, 就按向下鍵或空白鍵去選</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>  ㄐ   。  (句點)
  ㄉ   ,  (逗號)
  ㄇ   :  (冒號)
  ㄨ‧        ?  (問號)
  ㄈ   ;  (分號)
  ㄊ   !  (驚嘆號)
  ㄊ   他
  ㄊ   她
  ㄊ‧        他 (由於!的注音是ㄊ,如果不想造成困擾,就用這一個。)
  ㄊ‧        她
  ㄋ   你
  ㄋ   妳
  ㄉˋ 、  (頓號)
  ㄉˊ ‧  (點)
  ㄑ‧        $  (錢)
  ㄒ‧        *  (星)
  [     『
  ]     』
  [     「  (直接按中括號 '[' ,這個最容易使用)
  ]     」  (直接按中括號 '[' ,這個最容易使用)
  ㄌ‧        了
  ㄌ2  –  (連接號)
  ㄌ    …  (省'略'號)
  ㄌ   了
  ㄇ3  《  (書'名'號)
  ㄇ4  》
  ㄆ4  —  (破折號)
  ㄒ   ℃  (攝氏 Celsius)
  ㄒ2  ㏄  (毫升)
  ㄉ˙ 的
  ㄍ   個
  ㄍ‧        ♂  (公)
  ㄇ‧        ♀  (母)
  ㄇ‧        嗎
  ㄇ‧        麼</tt></pre>
</div></div>
<div class="para"><p>酷音輸入 的 shift + ",./;'" 也可以用
現在滑鼠的指標移到符號視窗的按鈕,約一秒鐘會顯示對應的注音按鍵提示,方便學習。
使用許氏鍵盤者某些符號會不能用,例如 '。' ,這是許氏鍵盤先天的問題。</p></div>
<div class="para"><p>要輸入<em>「」『』《》</em> 還有一種方法就是,用 <em>[ ]</em> 兩個鍵,輸入以後可以用空白鍵選擇。
在詞音中可以輸入中括號 <em>[]</em> ,由於詞庫中 <em>[]</em> 有定義各種括號、引號及書名號的組合,這邊就可以用預選詞的方式來選擇你要的括號。</p></div>
<div class="para"><p>gcin 0.8.8 後的版本可以用注音輸入半/全形 數字 <em>(0..9 及減(-))</em> 及 用 <em>[]</em> 鍵輸入 '()[]{}',現在也可以加入含有數字的詞,譬如:「7月, 5點, 3個」。你也可以用這來儲存電話號碼,只要用注音輸入姓名,然後用 shift 選就可以了。例如:可以加入「周潔輪:0935-123456」。</p></div>
<div class="para"><p>gcin 1.4.0 後的版本,可用類似微軟新注音前導字元的方式輸入符號,用法為:在詞音輸入法中文輸入的狀態下,按一下 ` (grave,位於鍵盤左上方,與 <em>~</em> 同鍵),再按鍵盤上任何可輸入實體字元的按鍵,就可以輸入各種不同的符號,若想知道可輸入哪些符號,可參考 <a href="http://hyperrate.com/thread.php?tid=3613">Hyperrate: 整理新注音前導字元 ` 可以輸入的符號</a>。</p></div>
<h3 id="__5">2.4. 自訂符號表</h3><div style="clear:left"></div>
<div class="para"><p>如果要修改符號輸入視窗,編輯 <em>~/.gcin/symbol-table</em> , gcin 會偵測檔案是否有改變,
如有變動就自動重新載入 <em>symbol-table</em> 這個檔。</p></div>
<div class="para"><p>如要修改 Alt-Shift-key 送出的字串,修改  <em>~/.gcin/phrase.table</em> 即可。</p></div>
<h3 id="_gtab">2.5. gtab 輸入法</h3><div style="clear:left"></div>
<h4 id="__6">2.5.1. 行列輸入法說明</h4>
<div class="para"><p>葉光哲(老刀)先生根據行列輸入法發明人–廖明德先生提供的對照檔,整理了支援 CJK 七萬餘字的行列輸入法表格 (包含 Unicode 前 20902 字、一些特殊符號、與 Extension A &amp; B), gcin 1.4.3 pre9 以後的版本已加入此表格。相關討論可見 <a href="http://hyperrate.com/thread.php?tid=7757">Hyperrate| 新版 OpenVanilla 行列輸入法表格</a>。</p></div>
<div class="para"><p>如要使用此表格,請編輯 gtab.list (位於 <em>/usr/share/gcin/table/gtab.list</em> 或 <em>$HOME/.gcin</em> ),將:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>行列 8 ar30.gtab ar30.png</tt></pre>
</div></div>
<div class="para"><p>改成</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>行列 8 ar30-big.gtab ar30.png</tt></pre>
</div></div>
<div class="para"><p>退出 X window 再重新進入後,執行 gcin 即可。</p></div>
<h4 id="_gcin_amp_gtab">2.5.2. gcin 的行列 &amp; 倉頡(.gtab) 可不可以輸入詞 ?</h4>
<div class="para"><p>倉頡、行列輸入法中,現在可以直接輸入 linux,就可以跑出 linux,其餘的輸入法可以自己加到 .cin 後重新執行 gcin2tab。還有 (gnome kde gaim gcin xmms xine gedit kate kedit adsl hbo tvbs dvd vcd lcd)</p></div>
<div class="para"><p>新加入的 keys 最好不要與原有的重複,如果原有的本來就重複,那就沒關係。</p></div>
<div class="para"><p>只要把詞定義在 .cin 後面即可,然後執行上述的步驟,以下是幾行 examples</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>...
tw 台灣
down 下載
talk 聊天
net 上網</tt></pre>
</div></div>
<h4 id="__7">2.5.3. 那可不可以與單字重覆定義按鍵呢?</h4>
<div class="para"><p>可以的,在按空白鍵後就可以選字 or 詞。</p></div>
<h4 id="_gcin_3">2.5.4. gcin 有嘸蝦米輸入法可用嗎?</h4>
<div class="para"><p>以下的 嘸蝦米 table 僅供測試用,如果有長期使用,請購買合法版權。</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ /usr/share/gcin/script/noseeing-inst</tt></pre>
</div></div>
<div class="para"><p>logout &amp; login 按 ctrl-alt-9 就可以開始用。
可以用 gcin-tools 把嘸蝦米設定成內定的輸入法。</p></div>
<h4 id="_gcin_4">2.5.5. gcin 的拼音輸入法可以不打音調嗎?</h4>
<div class="para"><p>pinyin 輸入法必需打音調。輸入拼音後,按 <em>1/2/3/4/5/空白鍵</em> 會進入選字狀態,其中,按 1 或空白鍵時,都只會顯示第一聲的字。</p></div>
<div class="para"><p>gcin 另有一個 <em>通用拼音輸入法</em> ,可以不必打音調,可於 <a href="http://hyperrate.com/thread.php?tid=7692">Hyperrate: 通用拼音</a> 找到 cin 檔與相關討論。這個通用拼音輸入法的改編版,輸入拼音後,按 <em>空白鍵</em> 會顯示 <em>1/2/3/4/5</em> 聲的字,且支援以前導字元的方式輸入符號。</p></div>
<h3 id="__8">2.6. 按鍵功能一覽表</h3><div style="clear:left"></div>
<div class="para"><p>部份按鍵在某些 Window Manager 或 Application 中可能無法作用。本頁沒有「剪貼區管理視窗(gcb)」的用法。</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>*                               gtab輸入法拆碼中代表任意數量字元 非gtab輸入法中輸出*或*
?                               gtab輸入法拆碼中代表任意單一字元 輸出?或?
`                               gtab輸入法中開啟同音字選擇視窗
&lt;                               注音輸入法顯示上一頁重覆字
'                               詞音中輸出全形、符號
h                               詞音 vi 編輯模式遊標左移一個字元
l                               詞音 vi 編輯模式遊標右移一個字元
Q                               詞音許氏鍵盤排列時可選擇同音字(跟向下鍵一樣)
q                               詞音許氏鍵盤排列時可選擇同音字(跟向下鍵一樣)
x                               詞音 vi 編輯模式刪除一個字元
Alt+Shift+按鍵                        輸出phrase.table定義的字串
Alt+Space                       可設定為輸入法狀態切換開關
BackSpace                       清除一個拆碼 清除緩衝區的一個字元
CapsLock                        詞音/日本anthy 切換中英文狀態
Ctrl+Alt+Space                  在輸入視窗畫紅色的 X 用以協助除錯
Ctrl+Alt+,                      符號視窗開關切換
Ctrl+Alt+0                      切換為內碼輸入法
Ctrl+Alt+3                      切換為注音輸入法
Ctrl+Alt+6                      切換為詞音輸入法
Ctrl+Alt+=                      切換為日本anthy輸入法
Ctrl+Alt+g                      輸出前一次的字串
Ctrl+Alt+r                      輸出前一次的字串
Ctrl+Alt+【-1245789=[\]`】    切換為gtab輸入法
Ctrl+Shift                      循環切換輸入法
Ctrl+Shift+;                    在非XIM模式輸出全形:符號
Ctrl+Space                      輸入法狀態切換開關
Ctrl+e                          詞音切換 vi 編輯模式
Ctrl+u                          清除詞音緩衝區
Ctrl+按鍵                     輸出phrase-ctrl.table定義的字串
Delete                          刪除緩衝區遊標所在的字 刪除內碼輸入法的一個拆碼
Down                            詞音中選擇同音字
End                             關閉選擇視窗並移動到緩衝區末端
Enter                           輸出緩衝區內容
Escape                          清除所有拆碼 關閉gtab同音字選擇視窗
F11                             日本anthy輸入法中呼叫 kasumi 管理模式
F12                             日本anthy輸入法中呼叫 kasumi 加詞模式(先圈選想加的詞再按 F12)
Home                            關閉選擇視窗並移動到緩衝區最前端
Left                            關閉選擇視窗並在緩衝區左移一個字元
PageDown                        gtab/日本anthy 輸入法顯示下一頁重覆字(若在末頁則回到第一頁)
PageUp                          gtab/日本anthy 輸入法顯示上一頁重覆字(到第一頁為止)
數字盤的+鍵                        gtab輸入法顯示下一頁重覆字(若在末頁則回到第一頁)
數字盤的-鍵                        gtab輸入法顯示上一頁重覆字(到第一頁為止)
Right                           關閉選擇視窗並在緩衝區右移一個字元
Shift                           可設定為 詞音/日本anthy 切換中英文狀態
Shift+Enter                     詞音新增詞(從遊標所在位置到緩衝區末端)
Shift+Space                     全形狀態切換開關 可設定為輸入法狀態切換開關
Shift+按鍵                    可設定在gtab狀態中取代「Alt+Shift+按鍵」
Shift+數字                    詞音中選擇候選詞
Shift+標點                    詞音中輸出全形標點符號
Space                           拆碼輸入完成顯示候選字 翻頁顯示重覆字 輸出第一個候選字 輸出半形或全形空白 注音及詞音狀態下表示音調的一聲
Tab                             可在詞音中代替Enter鍵輸出緩衝區內容 可設定為詞音切換中英文狀態
Up                              詞音中選擇近音字
Windows+Space                   可設定為輸入法狀態切換開關
滑鼠左鍵                            符號視窗開關切換 系統列繁體轉簡體開關切換
滑鼠中鍵                            選擇輸入法
滑鼠右鍵                            執行gcin-tools 系統列顯示選單
滑鼠滾輪往上                      符號視窗循環切換成上一組符號表(滑鼠遊標須在符號視窗範圍內)
滑鼠滾輪往下                      符號視窗循環切換成下一組符號表(滑鼠遊標須在符號視窗範圍內)</tt></pre>
</div></div>
</div>
<h2 id="_gcin_faq">3. gcin FAQ</h2>
<div class="sectionbody">
<h3 id="_gcin_5">3.1. 為什麼有時候gcin的輸入視窗不會跟著程式的游標 ?</h3><div style="clear:left"></div>
<div class="para"><p>如果是 GTK(gnome) 的程式,可能你沒有設定 GTK_IM_MODULE=gcin, QT 的程式必須在在 qtconfig 設定 XIM over-the-spot。如果你的 QT 支援 QT_IM_MODULE,只要設定 QT_IM_MODULE=gcin就可以了。</p></div>
<h3 id="_gnome_environment_kde_gcin_button">3.2. 如何在非 gnome environment(如 KDE) 修改 gcin 顯示的 button 外觀?</h3><div style="clear:left"></div>
<div class="para"><p>執行  gnome-theme-manager 可以選擇主題, 修改外觀. 但是必須在 KDE startup
script 中執行 gnome-settings-daemon.</p></div>
<h3 id="_gcin_6">3.3. 可以啟動多個 gcin 嗎?</h3><div style="clear:left"></div>
<div class="para"><p>XIM name 是由環境變數中 XMODIFIERS=@im=XXXX 裏面的 XXXX自動設定
export XMODIFIERS=@im=gcin_test</p></div>
<div class="para"><p>一般程式就可以用 以下方式來控制要連接到那一個 XIM server</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>export XMODIFIERS=@im=gcin_test</tt></pre>
</div></div>
<h3 id="_gcin_7">3.4. 可以在遠端使用 gcin 嗎?</h3><div style="clear:left"></div>
<div class="para"><p>gcin 有支援遠端的功能。</p></div>
<div class="para"><p>勾選 <em>設定</em> (<em>gcin-tools</em>) → <em>內定輸入法&amp;開啟/關閉</em> → <em>遠端 client 程式支援</em> 這個選項,內定是 port 9999,如果9999 被佔用,會自動往下尋找 10000、10001……。gcin im client 會從 XMODIFIERS 自動去找對應的 port。只是如果你有用 IP table,就必須打開對應的 port。</p></div>
<div class="para"><p>那如果 gcin server 在 firewall/NAT 裡面,client 在 firwall 外面,然後是用 ssh X11 forward 方式,有兩種解決方式:</p></div>
<div class="ilist"><ul>
<li>
<p>
一種方式是用 XIM
</p>
<div class="listingblock">
<div class="content">
<pre><tt>$ export GTK_IM_MODULE=xim
$ export QT_IM_MODULE=xim</tt></pre>
</div></div>
</li>
<li>
<p>
也可以用在 remote 另外執行一個 gcin 的方式,變成直接 local 的 connection
</p>
<div class="listingblock">
<div class="content">
<pre><tt>$ export  XMODIFIERS=@im=gcin2
$ gcin &amp;
$ gedit .......</tt></pre>
</div></div>
</li>
</ul></div>
<div class="para"><p>未來 gcin 有可能會用 X11 ipc 的方式再弄一個傳輸方式,由於遠端的需求很少,而且有替代方式,可能會等到真的閒到無聊的時候才可能去弄。目前 XIM 一個嚴重的缺陷是XIM server 結束時,某些情況會造成 client 跟著結束或鎖死的情況,不知道是 XIM 設計的問題還是 X11 的問題。XIM 的另外一個缺陷是不支援 KeyRelease 的 event,造成沒辦法在詞音中使用 Shift 切換中/英。</p></div>
<h3 id="_gcin_gcin">3.5. 使用者的 gcin 資料毀損,要如何還原成 gcin 原來的設定?</h3><div style="clear:left"></div>
<div class="para"><p>執行</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ rm -fr ~/.gcin</tt></pre>
</div></div>
<div class="para"><p>當然了,使用者自己的詞庫也跟著不見。使用者可以 copy 此目錄來複製 gcin 的設定。</p></div>
<h3 id="_xxx_cin">3.6. 如何利用 xxx.cin 新增中文輸入的方式?</h3><div style="clear:left"></div>
<div class="olist"><ol>
<li>
<p>
如果你的 .cin file 仍然是 big5 編碼,請先將檔案的編碼轉換成 utf-8
</p>
<div class="listingblock">
<div class="content">
<pre><tt>$ mv file.cin file.cin.big5
$ iconv -f big5 -t utf-8 file.cin.big5 &gt; file.cin</tt></pre>
</div></div>
</li>
<li>
<p>
將 cin 檔轉換成 gtab 檔
</p>
<div class="listingblock">
<div class="content">
<pre><tt>$ gcin2tab file
# cp *.gtab /usr/share/gcin/table</tt></pre>
</div></div>
</li>
<li>
<p>
編輯 <em>/usr/share/gcin/table/gtab.list</em> ,依其他輸入法的格式加入設定:
</p>
<div class="listingblock">
<div class="content">
<pre><tt> 輸入法 數字 gtab檔 Icon檔</tt></pre>
</div></div>
<div class="para"><p>例如:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt> 行列 8 ar30.gtab ar30.png</tt></pre>
</div></div>
</li>
<li>
<p>
按 control-alt-數字鍵,切換到你在 gtab.list 中定的數字鍵。注音與詞音是固定在 3 &amp; 6 鍵上,不能更改的。執行 gcin-tools 可以設定內定的輸入法。
</p>
</li>
</ol></div>
<h3 id="_gnome_terminal_ctrl_atl">3.7. 在 gnome-terminal 等軟體無法用 ctrl-atl-???? 切換輸入法,該怎麼辨?</h3><div style="clear:left"></div>
<div class="para"><p>其實有更好的切換方法,就是用 Ctrl-Shift。</p></div>
<div class="para"><p>譬如你是用行列輸入法,想要與注音循環切換:</p></div>
<div class="para"><p>gcin-tools → 輸入法開啟關閉→使用 (選 注音 &amp; 行列) ,   第一次內定選行列
設定完成之後,就可以用 Ctrl-Shift 循環切換 注音/行列</p></div>
<h3 id="_gaim_gqview_enter">3.8. gaim 及 gqview 內使用詞音時按 enter 無法送出編輯區內容?</h3><div style="clear:left"></div>
<div class="para"><p>這是因為某些程式會把 enter 吃掉,沒有送給 gcin 處理,可能解決辦法有:</p></div>
<div class="olist"><ol>
<li>
<p>
使用 Tab key
</p>
</li>
<li>
<p>
中文輸入狀態可使用 shift-space
</p>
</li>
</ol></div>
<div class="para"><p>gaim 裏面有選項可以設定成用 ctrl-Enter 送出內容,這樣就可以在 gcin 內用 Enter。</p></div>
<h3 id="_utf8_encoding">3.9. 如何使用 utf8 encoding?</h3><div style="clear:left"></div>
<div class="listingblock">
<div class="content">
<pre><tt>export XMODIFIERS=@im=gcin_utf8
export LC_ALL=zh_TW.UTF-8
gcin &amp;
gedit</tt></pre>
</div></div>
<div class="para"><p>這個 gedit 就可以以注音輸入(方方土)</p></div>
<h3 id="__9">3.10. 我想使用倉頡行列的重複字選擇鈴聲,但是嫌聲音太長,有辨法解決嗎?</h3><div style="clear:left"></div>
<div class="para"><p>gcin 的嗶聲是呼叫 X 的 XBell() 函式,你可以用 <em>xset b 30 1000 100</em> 設定鈴聲音量、頻率、與長短,但這個方法會影響到整個系統的鈴聲。</p></div>
<div class="para"><p>如果只想設定 gcin 的鈴聲音量,可升級到 gcin 1.4.4 以後的版本。gcin 1.4.4 以後的版本支援在 <em>~/.gcin/config/gcin-bell-volume</em> 內自訂鈴聲音量,值必需介於 -100 至 100 之間 (內定值是 -97)。例如:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>echo 50 &gt; ~/.gcin/config/gcin-bell-volume</tt></pre>
</div></div>
<div class="para"><p><a href="http://hyperrate.com/thread.php?tid=8462">hyperrate 上關於鈴聲的相關討論</a></p></div>
<h3 id="_gcin_8">3.11. gcin 可以在使用某種輸入法時,顯示另一種輸入法的拆碼,以幫助使用者學習輸入法嗎?</h3><div style="clear:left"></div>
<div class="para"><p>有人反應:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>&gt;  關於嘸蝦米打字時,底下會出來所有的拆碼
&gt;  這點實在是好啊,(因為小弟雖然用嘸蝦米用了一段時間了,不過很多字都還不是
&gt;  最簡碼,所以非常感謝這個設計,也因為這個設計讓小弟的嘸蝦米可以再進步
&gt;  所以,想問,有沒有可能像 MS 那樣,
&gt;  打注音字出來 嘸蝦米的拆碼參照?
&gt;  如…
&gt;  打:ㄅㄛ/ 出來 「嘸 PPD」這樣?</tt></pre>
</div></div>
<div class="para"><p>有啊,按 ctrl-alt-3 輸入注音 &amp; 選字,就會顯示 <em>設定</em> (<em>gcin-tools</em>) → <em>內定輸入法 &amp; 開啟/關閉</em> → <em>第一次內定</em> 的所有的可能拆字。如果沒有指定內定的 .gtab 輸入法,則顯示最近一次的 gtab 輸入法。</p></div>
<div class="para"><p>gcin 和 windows 的不一樣, 是直接顯示你內定使用的輸入法,不需要另外去設定。所以,你也可以用 gtab 的拼音輸入法去查詢倉頡等 gtab 輸入法。</p></div>
<div class="para"><p>另外,如果字的某部份忘了如何拆,你可以用 <em>*</em> or <em>?</em> 萬用字元 (wildcard) 來幫助你選字。</p></div>
<div class="para"><p>gcin 0.6.2 後的版本有類似嘸蝦米的同音字查詢,按 <em>`</em> (backquote) 後就會出現注音的視窗,輸入要查詢的同音字就可以了。</p></div>
<div class="para"><p>如果需要查詢許多字的讀音,可使用 <em>設定</em> (<em>gcin-tools</em>) → <em>剪貼區 注音查詢</em> 來大量查詢。從網頁或文章中直接選取整段文字,開啟 <em>剪貼區 注音查詢</em> 後即可標示注音,也可在裡面輸入字,用滑鼠選取後,按 <em>自剪貼區更新</em> 。</p></div>
<h3 id="__10">3.12. 為什麼倉頡按第二鍵後會跑出一些字,選字視窗中數字的順序還會跳?</h3><div style="clear:left"></div>
<div class="para"><p>譬如:按 AA日日後</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>   1昌 2昍   5曝 6暻 7暘   0暍</tt></pre>
</div></div>
<div class="para"><p>這是引導初學者按鍵的功能,5曝代表'曝'是在5這個行(TGB廿土月)上。 34 是空白,表示沒有任何字。</p></div>
<div class="para"><p>如果不喜歡,有選項可以關掉 ( <em>gcin-tools</em> → <em>倉頡/行列…</em> → <em>顯示部份符合的字</em> )。</p></div>
<div class="para"><p>如果是嘸蝦米,則顯示的號碼必須加一。</p></div>
<h3 id="_gtab_2">3.13. gtab(倉頡、行列) 輸入法中要如何加入新詞?</h3><div style="clear:left"></div>
<div class="para"><p>用詞音輸入法加入。在中文輸入的狀態下,把 cursor (游標) 移至要存的詞句的開頭,按下 shift-Enter,則會自 cursor 所在位置存到編輯區的結尾,cursor 也會自動跳到結尾,方便繼續輸入。</p></div>
<h3 id="__11">3.14. 許氏鍵盤注意事項:</h3><div style="clear:left"></div>
<div class="para"><p>如果使用許氏鍵盤,<em>q</em> 是用來選字詞。</p></div>
<h3 id="_kde_gcin_window_cursor">3.15. KDE 中 gcin 的 window 為什麼不會跟著 cursor 移動?</h3><div style="clear:left"></div>
<div class="para"><p>你可以用 qtconfig 把 XIM input style 設定成 over-the-spot 就可以了。</p></div>
<h3 id="_gcin_gcin_2">3.16. gcin 的詞庫不夠多,想貢獻給 gcin 作者自己的詞庫,要怎麼做呢?</h3><div style="clear:left"></div>
<div class="para"><p>這樣就可以看到兩個 file 的差異:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>cd .gcin
tsd2a tsin &gt; your
diff your gcin-0.x.x/data/tsin.src &gt; diff.txt
gedit diff.txt</tt></pre>
</div></div>
<div class="para"><p>注意看你的詞庫是否有那些現代人用不到的詞,這些沒用的詞只會增加詞音錯誤的機率。</p></div>
<h3 id="__12">3.17. 詞音輸入的視窗在打滿注音後會縮回去,看起來有點討厭。</h3><div style="clear:left"></div>
<div class="para"><p>注音輸入的區域的字型必須比編輯區的小個幾點就沒有這個問題。如果你有安裝日文字型,且使用 12/23/2004 以前的 fonts.conf,則還是會有縮回去的問題,請下載最新的 fonts.conf。</p></div>
<h3 id="_gcin_coredump_debug">3.18. gcin coredump 如果要幫忙 debug,該怎麼做?</h3><div style="clear:left"></div>
<div class="olist"><ol>
<li>
<p>
首先先編譯 gcin
</p>
<div class="listingblock">
<div class="content">
<pre><tt>cd gcin-0.x.x
make clean
./configure
make</tt></pre>
</div></div>
</li>
<li>
<p>
make 完了之後,執行:
</p>
<div class="listingblock">
<div class="content">
<pre><tt>./tgdb</tt></pre>
</div></div>
</li>
<li>
<p>
執行 r
</p>
<div class="listingblock">
<div class="content">
<pre><tt>(gdb) r</tt></pre>
</div></div>
</li>
<li>
<p>
r 指令會開始執行 gcin, 在跑出來的 gedit 輸入一些字,gcin 掛了之後:
</p>
<div class="listingblock">
<div class="content">
<pre><tt>(gdb) bt</tt></pre>
</div></div>
</li>
<li>
<p>
下了 bt 以後會有類似以下的訊息,把這個 post 出來。
</p>
<div class="para"><p>看起來可能像這樣:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>#0  0xffffe410 in ?? ()
#1  0xbffff278 in ?? ()
#2  0xffffffff in ?? ()
#3  0x00000001 in ?? ()
#4  0x40548e5d in poll () from /lib/tls/libc.so.6
#5  0x404212e7 in g_main_loop_get_context () from /usr/lib/libglib-2.0.so.0</tt></pre>
</div></div>
</li>
</ol></div>
<h3 id="_gtk_im_module_qt_im_module_qt_4_0_or_mandriva_2006_gcin_so_xim">3.19. GTK_IM_MODULE/QT_IM_MODULE(qt 4.0 or Mandriva 2006) 使用 gcin 自己的 .so,和XIM相比,有何好處?</h3><div style="clear:left"></div>
<div class="olist"><ol>
<li>
<p>
gcin 掛掉重新執行時比較不會有程式跟著一起掛掉的情形,現在可以直接在 gnome-terminal 下, <em>pkill gcin</em> ,不用擔心 gnome-terminal 會停在那邊不動 (mozilla-gtk2 除外,這是因為如果你有安裝 flash player,flash 會 open XIM 的 sesseion,X11 裏面的 XIM close 時在 server當掉時也會跟著當掉。)。
</p>
</li>
<li>
<p>
GTK2/QT 的程式 locale 即使設定成 zh_TW.Big5 也還是可以輸入所有的 UTF-8 字。
</p>
</li>
<li>
<p>
詞音由於現在有了 key release event,現在也可以用 Shift 來切換中/英。
</p>
</li>
<li>
<p>
gcin 的協定對 input focus 的處理比 XIM 好。
</p>
</li>
<li>
<p>
client 直接 對 gcin server 互傳資料,不透過 X server,延遲會比較少。
</p>
</li>
<li>
<p>
如果發現 gcin server 沒有在執行,會自動執行 gcin。
</p>
</li>
</ol></div>
<h3 id="_mandrake_10_0_10_1_gcin">3.20. 大部份(Mandrake 10.0,10.1) 安裝 gcin 後即可直接使用,如果不行該怎麼辨?</h3><div style="clear:left"></div>
<div class="para"><p>執行</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>  export GTK_IM_MODULE=gcin</tt></pre>
</div></div>
<div class="para"><p>通常是設定在 <em>/etc/sysconfig/i18n</em> 。</p></div>
<div class="para"><p>gcin 會先使用 unix socket,如果不行,則使用 TCP port 9999 - 20000。</p></div>
<div class="para"><p>如果因為 firewall 的緣故無法使用, export GTK_IM_MODULE=xim 可以指定使用 XIM。</p></div>
<div class="para"><p>另外,如果你遠端也有 install gcin,可以 export XMODIFIERS=@im=gcin.remote,這樣就會在 remote 端自動執行一個新的 gcin。</p></div>
<div class="para"><p>目前支援很簡單的編碼以避免 plaintext 在傳送,未來可能會支援 SSL。</p></div>
<div class="para"><p>雖然目前是用很簡單的 encoding,如果 gcin 搭配 ssh X11 forwarding 應該是非常安全的,而且 data 不像 SSL 會變大,更適合在 low bandwidth 使用。</p></div>
<div class="para"><p>目前支援 GTK2 &amp; QT,gcin 有提供非常容易使用的 API 介面供其他 terminal 使用,歡迎來把這部份完成,詳細的介面,請看 <em>/usr/local/include/gcin-im-client.h</em> 。</p></div>
<h3 id="_gcin_im_module_em_export_gcin_connect_msg_on_tty_em_console">3.21. gcin 如果使用到自己的 IM_MODULE 時,且用 <em>export GCIN_CONNECT_MSG_ON=tty</em> (console) 會出現錯誤訊息:</h3><div style="clear:left"></div>
<div class="olist2"><ol>
<li>
<p>
connected to unix socket addr /tmp/gcin-????/socket-:0.0-xcin
或是
</p>
</li>
<li>
<p>
gcin client connected to server 172.x.x.x:9999
</p>
</li>
</ol></div>
<div class="para"><p>只需要一個 gcin 執行就可以,不需要為了同時支援 GTK_IM_MODULE/QT_IM_MODULE &amp; XIM 而執行兩個 gcin process。</p></div>
<div class="para"><p>目前 OpenOffice 1.1.x GTK2 的版本好像是使用 XIM,1.9.x &amp; 2.x 則是改成用 GTK_IM_MODULE。</p></div>
<div class="olist"><ol>
<li>
<p>
<a href="http://www.csie.nctu.edu.tw/~cp76/linux/mrxvt-gcin-0.4.1.tar.bz2">mrxvt-gcin-0.4.1.tar.bz2</a> 是一個使用 gcin IM client 的 mrxvt。
</p>
</li>
<li>
<p>
<a href="http://www.csie.nctu.edu.tw/~cp76/linux/rxvt-gcin.tbz">rxvvt-gcin.tbz</a> 是一個使用 gcin IM client 的 rxvt (crxvt)。
</p>
</li>
</ol></div>
<div class="para"><p>如果你因為 install 其他的輸入法把 gcin 的設定弄亂,可以用 root 執行看看
/usr/share/gcin/script/modify-XIM</p></div>
<div class="para"><p>tsd2a 新增 "-nousecount" 的參數。由於現在 gcin 會統計詞的使用頻率,dump出來的 file 會有 usecount,如果你要比較兩個詞庫時會造成困擾,這時候就可以用這個參數。</p></div>
<h3 id="_ctrl_space_gcin">3.22. Ctrl-Space 無法叫出 gcin 的視窗,檢查事項</h3><div style="clear:left"></div>
<div class="para"><p>一般看 environ variable 的內容可以用 printenv,由於可以設定 environ variable 的地方太多了,用開 terminal 的方式看,不見得一定符合應用程式用的實際值,所以還是直接用 proc file system 最準。</p></div>
<div class="olist"><ol>
<li>
<p>
pgrep gcin 是否可以看到 gcin 的 process Id (一個數字),如果可以,goto 3
</p>
</li>
<li>
<p>
直接在 terminal 執行 gcin,看有什麼錯誤訊息。 如果最後一行出現的訊息是
</p>
<div class="listingblock">
<div class="content">
<pre><tt>     IMOpenIM failed. Maybe another XIM server is running.</tt></pre>
</div></div>
<div class="para"><p>這表示 xcin 可能仍然在執行,試試 pkill xcin再執行 gcin 看看。當然,還是必須修改你的 X window 的 script把執行 xcin 的部份改成 gcin 才能把問題真正解決,也有可能你忘了 logout &amp; login。<br /></p></div>
</li>
<li>
<p>
檢查 XMODIFIERS 是否設定成一致的內容。
</p>
<div class="listingblock">
<div class="content">
<pre><tt>$ pgrep gcin
7438
$ vi /proc/7438/environ</tt></pre>
</div></div>
<div class="para"><p>這個 file 是這個 process 所有的 environ variables 的內容,檢查 XMODIFIERS 內容。你可以用同樣的方法檢查應用程式的內容,例如 firefox。</p></div>
<div class="para"><p>gcin 的XMODIFIERS 可以不設定,但應用程式的就必須設定成 <em>XMODIFIERS=@im=xcin</em> 如果有設定,就必須一致,例如都設定成 <em>XMODIFIERS=@im=gcin</em> 也可以。<br /></p></div>
</li>
<li>
<p>
gtk2 (gnome) 程式檢查事項。
</p>
<div class="listingblock">
<div class="content">
<pre><tt>$ gtk-query-immodules-2.0</tt></pre>
</div></div>
<div class="para"><p>是否有底下的內容,</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>"/usr/lib/gtk-2.0/immodules/im-gcin.so"
"gcin" "gcin Input Method" "gtk20" "/usr/share/locale" "*"</tt></pre>
</div></div>
<div class="para"><p>如果沒有,以 root 執行底下的 script 看看 <em>/usr/share/gcin/script/modify-XIM</em> 。<br /></p></div>
</li>
<li>
<p>
檢查是否有設定 <em>GTK_IM_MODULE=gcin</em> 這個 environ variable。設定成 <em>GTK_IM_MODULE=xim</em> 也是可以用,只是 over-the-spot 會有問題,gcin 視窗不會跟著程式的游標移動,除非有安裝 gtk2 xim over-the-spot 的 patch,還是用 <em>GTK_IM_MODULE=gcin</em> 最好。
</p>
</li>
<li>
<p>
如果是用 XIM,建議設定 <em>export LC_CTYPE=zh_TW.Big5</em> 。
</p>
</li>
</ol></div>
<h3 id="_gcin_9">3.23. 覺得 gcin 的釘子不好看,想要換掉。</h3><div style="clear:left"></div>
<div class="para"><p>有此需求的的人自己 替換 <em>/usr/share/icons/gcin</em> 。</p></div>
<h3 id="_gcin_0_9_8_cin_em_space_style_em">3.24. gcin 0.9.8 替 .cin 新增 <em>%space_style</em> 的選項,後面的數字代表的意義:</h3><div style="clear:left"></div>
<div class="listingblock">
<div class="content">
<pre><tt>1:      嘸蝦米、大易
2:      倉頡等
4:      行列輸入法</tt></pre>
</div></div>
<div class="para"><p>有了這個,且在 gcin-tools 中設定成「由 .gtab 指定」,就可以自動設定空白鍵的選項,而且用 ctrl-alt- 切換輸入法時也會自動切換。</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>%selkey 1234567890
%space_style 2
%keyname begin</tt></pre>
</div></div>
<h3 id="_gtab_em_keep_key_case_em">3.25. gtab 中 <em>%keep_key_case</em> 選項是做什麼用的?</h3><div style="clear:left"></div>
<div class="para"><p>gcin 0.9.8 替 gtab 新增 <em>%keep_key_case</em> 的選項。</p></div>
<div class="para"><p>用在需要分別大小寫的輸入法,例如舊版的日文輸入表格。</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>        %space_style 4
        %keep_key_case          &lt;---------------------------
        %keyname begin</tt></pre>
</div></div>
<h3 id="_gcin_gtk_qt_im_module">3.26. 如何確定目前是使用 gcin 自己的 gtk/qt im module?</h3><div style="clear:left"></div>
<div class="olist"><ol>
<li>
<p>
可以先用 gedit or kedit 測試,在編輯區按 mouse 右鍵,menu 裏選輸入法,會顯示出目前正在使用的輸入法,如果是 <em>gcin Input Method</em> 就是對的,其他的是錯的。
</p>
</li>
<li>
<p>
在terminal 用 export GCIN_CONNECT_MSG_ON=, 再執行自己要的測試程式, terminal (console) 會出現以下 message :
</p>
</li>
</ol></div>
<div class="listingblock">
<div class="content">
<pre><tt>   connected to unix socket addr /tmp/gcin-????/socket-:0.0-xcin</tt></pre>
</div></div>
<h3 id="_gcin_scim_memory">3.27. gcin 與 scim memory 使用比較</h3><div style="clear:left"></div>
<div class="para"><p>分別以 gcin 的詞音與 scim chewing 用 kedit/gedit/leafpad 輸入「測試」兩個字,
由於 scim 有數個 process,必須全部加起來。這個測試也比較 qt-im-module/gtk-im-module 的 memory 使用。</p></div>
<div class="literalblock">
<div class="content">
<pre><tt>      vsz    rss    kedit-vsz  kedit-rss
scim  80168  31312  47052      17368
gcin  29132  8568   41840      16144</tt></pre>
</div></div>
<div class="literalblock">
<div class="content">
<pre><tt>      gedit-vsz  gedit-rss  leafpad-vsz  leafpad-rss       (測試 gtk-im-module)
scim  67148      16444      34084        9756
gcin  61008      14924      26880        7884</tt></pre>
</div></div>
<div class="para"><p>kedit: 3.4.1
scim:  scim 1.4.2 + scim-chewing 0.2.1
gcin:  gcin 1.0.4</p></div>
<h3 id="_mozilla_firefox_coredump_gtk_im_module">3.28. Mozilla Firefox 中 coredump,想看是不是 gtk-im module 造成的。</h3><div style="clear:left"></div>
<div class="olist"><ol>
<li>
<p>
試著去 compile firefox,把 error 回報 mozilla,改成直接 coredump。Mandriva 中的firefox是改成直接 coredump。
</p>
</li>
<li>
<p>
在 make gcin 修改 config.mak
    設定 OPTFLAGS=-g 去 compile,這樣才有 debug 的 information。然後用 root make install。
</p>
</li>
<li>
<p>
當 coredump 發生時
    gdb /usr/lib/mozilla-firefox-1.0.7/mozilla-firefox-bin core.xxxx
    這邊這個可執行檔是要真正的那一個,不是 shell script。 core.xxxx 是 coredump 的 file。
    這樣就可以看到 coredump 在那邊發生。
</p>
</li>
</ol></div>
<div class="para"><p>與 caleb 討論,所想到如何避免 flash player plugin open XIM,由於 flash player XIM 寫的有問題,有時候會造成 firefox coredump。gcin 是可以 compile 成不支援 XIM,但有時候又需要用(wine, rxvt-unicode)</p></div>
<div class="para"><p>其實很簡單,修改 <em>/usr/bin/mozilla-firefox</em> or <em>/usr/bin/firefox</em> 執行的 script
加入 <em>unset XMODIFIERS</em> 。原理是 gcin 如果沒有設定 XMODIFIERS 內定的 XIM name 就是 gcin,
把 XMODIFIERS unset 後,gcin 用 <em>GTK_IM_MODULE=gcin</em> 仍然可以輸入,但是 XIM 需要 XMODIFIERS 才能,這樣就達到防止 flash player open XIM。</p></div>
<h3 id="__13">3.29. 請問一下內定輸入法,是由那個設定檔來決定的?</h3><div style="clear:left"></div>
<div class="para"><p><em>~/.gcin/config/default-input-method</em></p></div>
<h3 id="_su_sudo_gcin">3.30. 使用 su 或 sudo 後,無法使用 gcin,該怎麼辦?</h3><div style="clear:left"></div>
<div class="para"><p>如果使用的 gcin 是 1.4.3 pre7 之前的版本(含 1.4.3 pre7),可以這麼做:</p></div>
<div class="para"><p>設定 (<em>gcin-tools</em>) →  內定輸入法 &amp; 開啟/關閉 →  遠端 client 程式支援 (port 9999-)</p></div>
<div class="para"><p>完成這個動作後,重新登入 X Window System 試試看。</p></div>
<div class="para"><p>如果用的 gcin 是 1.4.3 pre8 後的版本(含 1.4.3 pre8),已支援 su root 的中文輸入,注意—要配合新的 libgcin-im-client.so.1.1.0 才可!</p></div>
<h3 id="_kde_gcin">3.31. 在 KDE 的系統管理頁面無法使用 gcin,該怎麼辦?</h3><div style="clear:left"></div>
<div class="para"><p>問題同上。開啟設定中的 <em>遠端 client 程式支援 (port 9999-)</em> 並重新登入 X Window System 試試看。</p></div>
<h3 id="_gcin_1_4_3">3.32. 升級到 gcin 1.4.3 後,桌面多出三個方格是什麼東西?</h3><div style="clear:left"></div>
<div class="para"><p>gcin 1.4.3 pre 8 後的版本,整合了 gcb,gcb 是一個管理剪貼簿 (clipboard) 的小工具。</p></div>
<div class="para"><p>一般 X Window 會自動複製選取的內容,但如果你不小心再次選取到其他內容,原本複製的東西就會被新選取的內容所覆蓋,gcb 可以避免這種狀況發生。</p></div>
<div class="para"><p>gcb 提供了三個儲存格,在 gcb 的任一個儲存格上按右鍵可以設定儲存按鈕,每5秒鐘從剪貼區更新。按左鍵把儲存格的內容存到剪貼區。按中鍵可以選擇之前的剪貼區內容的改變。如果不想用,可以在 gcin-tools 內關掉。</p></div>
<h3 id="_gcin_10">3.33. gcin 支援輸入日文嗎?</h3><div style="clear:left"></div>
<div class="para"><p>gcin 1.4.3 pre13 以後的版本支援使用 <a href="http://sourceforge.jp/projects/anthy/">anthy</a> 來輸入日文。</p></div>
<div class="para"><p><a href="http://hyperrate.com/thread.php?tid=8338#8338">使用方法</a>:</p></div>
<div class="olist"><ol>
<li>
<p>
切換到「日本anthy」(廢話)
</p>
</li>
<li>
<p>
開始打羅馬拼音
</p>
</li>
<li>
<p>
按 enter 可輸出 buffer 中的內容
</p>
</li>
<li>
<p>
按空白鍵可自動轉換「假名←→漢字」 「平假名←→片假名」「假名←→符號」(依 anthy dictionary 內容決定)
</p>
</li>
<li>
<p>
再按一次空白鍵可選擇其它想轉換的內容 (當可轉換內容不止一種時)
</p>
</li>
<li>
<p>
選字的選單設定與詞音的相同(可修改成用 1234 選詞)。
</p>
</li>
<li>
<p>
與 UIM 一樣,可以用 Shift-Left/Right 調整詞的範圍。
</p>
</li>
<li>
<p>
gcin 1.4.4 後支援以 shift 切換日/英文輸入模式。
</p>
</li>
</ol></div>
<div class="para"><p>加字加詞的方法:</p></div>
<div class="olist"><ol>
<li>
<p>
可手動編輯純文字檔 $HOME/.anthy/private_words_default 例如加入「としば #T35*500 東芝」
</p>
</li>
<li>
<p>
可用 <a href="http://sourceforge.jp/projects/kasumi/">kasumi</a> ,如 <a href="http://hyperrate.com/topic-files-dir/38/8338-eQTwr1J0qF/toshiba.gif">圖</a> 。
</p>
</li>
</ol></div>
<div class="para"><p>在 BBS 輸入日文時,請參考 <a href="http://cle.linux.org.tw/trac/wiki/GcinBBSHiragana">在 BBS 輸入日文</a>。</p></div>
<div class="para"><p>(如果不想使用 anthy,系統裡可完全不安裝 anthy 相關檔案。)</p></div>
</div>
<h2 id="__14">4. 注意事項</h2>
<div class="sectionbody">
<div class="para"><p>gcin 的 .cin format 與 .xcin 有些不同,並不支援 * 第三欄位,目前好像只有行列有使用,如果有需求時,可以加在 %quick 段落內。</p></div>
<div class="para"><p>把 gcin 一類的 XIM server kill 掉再重新啟動,容易造成 X window 底下程式運作不正常(特別是 mozilla),最好還是 logout 再 login。</p></div>
<div class="para"><p>gcin 1.3.0 後,使用者可以在 ~/.gcin 裏加自己的 gtab.list *.gtab,gcin 會優先使用這裡的 files。</p></div>
<div class="para"><p>gcin 0.9.8 的 .gtab format 有變動,如果你不是使用 gcin 內附的 .gtab file,一定要用 gcin2tab 重新產生新的 .gtab file,否則會 coredump。</p></div>
<div class="para"><p>gcin 0.6.5 新增關掉 gcin remote client 支援的選項 ,如果你是 su 成另外一個 user,這個選項仍然必須打開,否則無法輸入中文。</p></div>
</div>
<h2 id="_gcin_11">5. 更多 gcin 相關資源</h2>
<div class="sectionbody">
<div class="para"><div class="title">gcin 論壇<br /></div><p><a href="http://hyperrate.com/dir.php?eid=67">http://hyperrate.com/dir.php?eid=67</a></p></div>
<div class="para"><div class="title">gcin 原始碼<br /></div><p><a href="http://www.csie.nctu.edu.tw/~cp76/gcin/download/">http://www.csie.nctu.edu.tw/~cp76/gcin/download/</a></p></div>
<div class="para"><div class="title">各平台 gcin 套件下載區<br /></div><p><a href="http://cle.linux.org.tw/trac/wiki/GcinDistros">http://cle.linux.org.tw/trac/wiki/GcinDistros</a></p></div>
<div class="para"><div class="title">各種輸入法表格下載<br /></div><p><a href="http://cle.linux.org.tw/trac/wiki/GcinTables">http://cle.linux.org.tw/trac/wiki/GcinTables</a></p></div>
<div class="para"><div class="title">安裝額外的輸入法<br /></div><p><a href="http://cle.linux.org.tw/trac/wiki/GcinInstallTables">http://cle.linux.org.tw/trac/wiki/GcinInstallTables</a></p></div>
<div class="para"><div class="title">製作新的輸入法 cin 檔<br /></div><p><a href="http://cle.linux.org.tw/trac/wiki/GcinMakeCin">http://cle.linux.org.tw/trac/wiki/GcinMakeCin</a></p></div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2009-02-22 16:59:06 CST
</div>
</div>
</body>
</html>