cht電腦資訊gcingcin wish
adm Find login register

關於「Ctrl + Alt + , 的符號表」的配置與使用~

winlin
1 關於「Ctrl + Alt + , 的符號表」的配置與使用~
Promote 1 Bookmark 12010-10-19quote  

大家好~

最近聊天室有聊到「Ctrl + Alt + , 的符號表」,小弟依據使用經驗提出一些心得和建議。

「Ctrl + Alt + , 的符號表」是靠右側的2個小按鍵在換頁,也可以用滑鼠滾輪換頁。
不過右側2個小按鍵會隨著符號按版面的變大變小而移動位置,
使用者若要連續換好幾頁,就得不停地移動滑鼠去點那個一直變換位置的換頁按鈕,
雖然滑鼠滾鼠的控制相對方便許多,但若是使用NB觸控板的使用者,其實不易控制滾輪要滾幾下,很容易滾過頭。

另外,符號表有非常多頁,如果要在某頁和某頁之間來點切換,
由於上述的問題,可能會相當麻煩。

所以小弟想提個點子,看能不能改善「Ctrl + Alt + , 的符號表」在切換使用者的便利性。
我覺得「Ctrl + Alt + , 的符號表 」可以考慮在左上角增加一個像gtab輸入法版面上的「輸入法名稱」那個區塊,

點了「輸入法名稱」會出現輸入法清單,讓使用者去選擇跳到哪一個輸入法。


讓使用者點一下「符號表名稱」,就可以秀出「符號表」清單,讓使用者決定要立即切換到哪一張符號表。

(↑只是舉例)

不過,要這麼做的話,
前提是得為符號表重新歸類,並為每1頁都加上分類名稱才行。Laughing

eliu
2
Promote 0 Bookmark 02010-10-20quote  
winlin
3
Promote 0 Bookmark 02010-10-20quote  

感謝eliu兄!相當方便,連win32的gcin也可以了!

不知道這個新的技術能不能讓符號表也可以用↑↓←→來移動符號表左上角那個虛線框框,並按空白鍵或Enter來輸出那個符號

如果是可以做到的話,符號表的使用就可以完全靠鍵盤了!不必再動手去移滑鼠 Laughing

感謝~

coolcd
4
Promote 0 Bookmark 02010-10-21quote  

winlin
不知道這個新的技術能不能讓符號表也可以用↑↓←→來移動符號表左上角那個虛線框框,並按空白鍵或Enter來輸出那個符號

如果是可以做到的話,符號表的使用就可以完全靠鍵盤了!不必再動手去移滑鼠 Laughing

我也超期待可以做到這樣,不過好像有點困難。

在 Lilyterm/mlterm 中測試 1.5.7.pre4,發覺「Ctrl + Alt + , 開關符號表」與「PageDown/Up 切換符號表各頁」這兩個功能似乎不是很穩定。

mlterm 「Ctrl + Alt + , 開關符號表」沒問題,但「PageDown/Up 切換符號表各頁」,有時成功,有時失敗,失敗的幾次,之前 gcin 有當掉過。如想測試,可以執行 mlterm,killall gcin,gcin 會自動自己再生,之後叫出符號表就無法用 PageDown/Up 翻頁了。

Lilyterm「Ctrl + Alt + , 開關符號表」不太穩定,有時可以,有時不行。如果從英文輸入剛切換到中文輸入時,直接按 Ctrl + Alt + , 會叫不出符號表與輸入框,必需隨便輸入一個注音或按 PageDown/Up 才會出現,出現後,無法再用 Ctrl + Alt + , 開關符號表,PageDown/Up 符號表翻頁測試時雖然ok,但之前出現過無法翻頁的情形,還在找看看是不是能找出重現的方法。

在 iceweasel 3.5.13 測試,目前沒遇到什麼問題。

coolcd
5
Promote 0 Bookmark 02010-10-22quote  

coolcd
Lilyterm「Ctrl + Alt + , 開關符號表」不太穩定,有時可以,有時不行。如果從英文輸入剛切換到中文輸入時,直接按 Ctrl + Alt + , 會叫不出符號表與輸入框,必需隨便輸入一個注音或按 PageDown/Up 才會出現,出現後,無法再用 Ctrl + Alt + , 開關符號表,PageDown/Up 符號表翻頁測試時雖然ok,但之前出現過無法翻頁的情形,還在找看看是不是能找出重現的方法。

1.5.7.pre5 從英文剛按 Ctrl + Space 切到中文輸入後,按 Ctrl + Alt + , 仍叫不出符號表與輸入框,輸入一個注音,按 Ctrl + Alt + , 仍叫不出符號表,要在輸入注音後按空白鍵,讓編輯區內的字出現藍色底線,才可用 Ctrl + Alt + , 叫出符號表。

PageDown/Up 翻頁在 pre5 沒遇到什麼問題。

eliu
6
Promote 0 Bookmark 02010-10-22quote  
coolcd
7
Promote 0 Bookmark 02010-10-22quote  

Lilyterm 的命令列與 vim 有問題。

如果在 mlterm 的命令列與 vim 就比較沒問題。

eliu
8
Promote 0 Bookmark 02010-10-22quote  
coolcd
9
Promote 0 Bookmark 02010-10-28quote  

eliu

有些程式會沒有送出按鍵給 gcin 處理就會造成這種情形。

更新到 lilyterm 0.9.9 RC6,似乎沒問題了,可能是新版的改善

  • Defensive programming, making LilyTerm behave in a predictable manner despite unexpected inputs.

感謝 tetralet 的幫忙

Tetralet
10
Promote 0 Bookmark 02010-10-29quote  

coolcd
更新到 lilyterm 0.9.9 RC6,似乎沒問題了,可能是新版的改善

  • Defensive programming, making LilyTerm behave in a predictable manner despite unexpected inputs.

感謝 tetralet 的幫忙

我想應該不是... LilyTerm 0.9.9 RC6 並沒有嘗試修正您所說的問題

要判別是不是 LilyTerm 的問題很簡單 - 試著按下 <Ctrl><`> 來關閉 LilyTerm 所有的功能鍵,若還是有問題,那大概不是 LilyTerm 的問題了。

coolcd
11
Promote 0 Bookmark 02010-10-29quote  

後來才發現,還沒有修好  Embarassed

不好意思,誤導別人

Tetralet
12
Promote 0 Bookmark 02010-10-29quote  

coolcd
後來才發現,還沒有修好  Embarassed

不好意思,誤導別人

我發現,只要輸入法視窗有出來,就叫得出符號表;

反之則怎麼按都不會有。

但 <Shift><Alt><?> 快捷鍵則無此限制。

eliu
13
Promote 0 Bookmark 02010-10-29quote  

Tetralet
我發現,只要輸入法視窗有出來,就叫得出符號表;
目前的確是這樣設計的,這樣是為了避免真的有程式需要用 ctrl-alt-, ,關掉中文輸入,程式就可以使用 ctrl-alt-,

coolcd
14
Promote 0 Bookmark 02010-10-30quote  

Tetralet

我發現,只要輸入法視窗有出來,就叫得出符號表;

反之則怎麼按都不會有。

據我多次測試的結果,並不是這麼簡單,有時候多測幾次,結果會不太一樣

所以我想 gcin 跟 lilyterm 可能有些相衝到的地方,當然也不排除我自己系統有問題的可能

有興趣的人可以試試看,新開一個 lilyterm (在命令列測試),以下三種情況時,按 Ctrl+Alt+, 是否可叫出符號表:

  1. 剛從英文按 Ctrl+Space 轉成中文輸入狀態,gcin 視窗尚未出現
  2. 剛從英文按 Ctrl+Space 轉成中文輸入狀態,輸入一個注音
  3. 剛從英文按 Ctrl+Space 轉成中文輸入狀態,輸入幾個國字,讓編輯區內有國字

在這個 lilyterm 上多測幾次,看看是否每次結果都一致

然後再新開一個 lilyterm 來測,在重覆測試以上三種情況

我的結果是,狀況1 與狀況2 在一個新開的 lilyterm 測試,第一次都肯定會失敗,但測試過幾輪以後就不一定。有時符號表會關不掉,但 pre5 之後比較少遇到了。狀況 3 幾乎都成功。(如果老大希望狀況一不要出現符號表,那 pre5 應該有 bug)

實際使用上,後來才發覺這些其實只是小 bug,不太影響日常使用,所以不修也無所謂。

edited: 3
Tetralet
15
Promote 0 Bookmark 02010-10-30quote  

coolcd
據我多次測試的結果,並不是這麼簡單,有時候多測幾次,結果會不太一樣

個人一貫的態度是,有 bug 就得修,除非真的沒辨法。

以下為一個極簡版的 vte term:

#include <vte/vte.h>

int main( int argc,
char *argv[])
{
gtk_init (&argc, &argv);

GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (G_OBJECT(window), "delete_event",
G_CALLBACK(gtk_main_quit), NULL);
GtkWidget *vte = vte_terminal_new();
vte_terminal_fork_command(VTE_TERMINAL(vte), NULL, NULL,
NULL, NULL, TRUE, TRUE, TRUE);
g_signal_connect(G_OBJECT(vte), "child_exited",
G_CALLBACK(gtk_main_quit), NULL);
vte_terminal_set_font_from_string(VTE_TERMINAL(vte),
"Monospace 12");
gtk_container_add(GTK_CONTAINER(window), vte);
gtk_widget_show_all(window);
gtk_main();
return 0;
}

gcc vte.c -o vte `pkg-config --cflags --libs gtk+-2.0 vte` 來編譯,

之後執行 ./vte,看看是不是也有相同的狀況?

若是 vte 正常但 LilyTerm 有問題,請您到  #gcin@irc.freenode.net 來詳談。謝謝!

#include <vte/vte.h>

int main( int   argc,
      char *argv[])
{
    gtk_init (&argc, &argv);

    GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    g_signal_connect (G_OBJECT(window), "delete_event",
              G_CALLBACK(gtk_main_quit), NULL);
    GtkWidget *vte = vte_terminal_new();
    vte_terminal_fork_command(VTE_TERMINAL(vte), NULL, NULL,
                  NULL, NULL, TRUE, TRUE, TRUE);
    g_signal_connect(G_OBJECT(vte), "child_exited",
             G_CALLBACK(gtk_main_quit), NULL);
    vte_terminal_set_font_from_string(VTE_TERMINAL(vte),
                      "Monospace 12");
    gtk_container_add(GTK_CONTAINER(window), vte);
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
coolcd
16
Promote 0 Bookmark 02010-10-30quote  
Tetralet

之後執行 ./vte,看看是不是也有相同的狀況?

是的,所以算是 vte 與 gcin 之間的問題?
eliu
17
Promote 0 Bookmark 02010-10-30quote  

我想起來了,當初是有人說按 ctlr-space 把中文輸入關閉,符號輸入也應該關閉,所以設計成這樣。

其實如果常用到某些符號,然後自己用的 gtab 輸入法沒有或不方便,就自己外加字詞吧。

cht電腦資訊gcingcin wish
adm Find login register
views:54138