歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> X Window 系統使用指南--8

X Window 系統使用指南--8

日期:2017/2/28 11:27:00   编辑:關於Unix


第8章 終端機模擬器 - 細說 xterm
xterm 是終端機模擬器 - 它是一個可以使X應用程式視窗看起來像普通
終端機一樣的程式, 而無需知道有關視窗系統的功能. 我們已經使用過 xterm
的一小部分, 在本章中將更深入地探討它所提供的特殊額外功能. 並且說明許
多X程式共通的一些應用程式介面的面貌.
xterm 模擬一個 "啞終端機 (dumb terminal)", 但它也提供許多一般終
端機沒有的功能 :
. 設定終端機模式與特性的突現式 (pop-up) 選單
. 可以上下移動螢幕影像的卷動棒 (scrollbar) - 當文字列因螢幕卷動
   而消失時, 可以將它拉回.
. 模擬 Tektronix 4014 終端機.
. 可選擇性地記錄螢幕列到一個使用記錄檔 (log file).
. "剪"(cut)"貼"(paste)文字區塊.
. 可選擇文字顏色, 視窗背景等...
. 可選擇 VT100 與 Tek 視窗字型.
. 可設定( 程式化(programmable))鍵盤.
我們首先描述選擇功能的選單結構, 接著描述如何使用選擇功能.
8.1 選擇 xterm 功能 - 選單與命令列選項
xterm 有它自己的內建選單結構, 可在使用期間改變設定. 有三個選單可
供利用, 見圖 8 - 1 :
┌————————————————┐
│ p84. fig 8 - 1 │
│ │
│ │
│ │
│ 圖 8 - 1 xterm 的三個選單 │
└————————————————┘
xterm X11 : 這裡的大多數選擇項目為程式控制功能, 例如 : continue pro-
gram (程式繼續) 或 kill program (殺掉程式). 欲突現此選單,
必需同時按住 CONTROL 鍵與滑鼠左按鈕.
modes : 設定大多數終端機的特性與選擇 Tektronix 模擬功能. 欲突現此
選單, 須同時按住 CONTROL 鍵與滑鼠中間按鈕 (當處於VT102 視
窗時).
Tektronix : 控制 Tektronix 視窗的外表. 當處於 Tektronix 視窗時, 須同時
按住CONTROL 鍵與滑鼠中間按鈕即可突現此選單.
選單的操作類似 uwm, 藉著按滑鼠按鈕可突現選單, 不放松按鈕移動指標至想
選的項目上; 放松按鈕後即選定該項. 然而, 有一點不同的地方是, 不能被選擇的
選單項目 (因為此時選擇將無意義) 是以較淡的型式顯示. 例如: 因為尚未開啟一
個 Tektronix 視窗, 所以Hide VT Window 項目的顏色較淡.
許多選單的功能也能以啟動 xterm 的命令列選項來設定.(事實上有某些功能僅
能以命令列選項的型式去選擇). 下面幾節我們將告訴你可以設定不同功能的選單選
擇與命令列選項的選擇方式.
8.2 卷動 xterm 的螢幕
突現 xterm X11 選單並選擇 Scrollbar 項目, 如圖 8 - 2. 高亮度的部分告訴
你兩件事:
1. 螢幕上的列數與儲存在卷動棒緩沖區 (scrollbar's buffer) 的列數之比率.
2. 緩沖區的哪個部份目前顯示在螢幕上.
例如在圖 8 - 2 中 : 約有 20 列在螢幕上; 高亮度部分約為總列數的 5 分之 1,
所以緩沖區包含有約 100 列, 且目前顯示的部分是緩沖區的最底部 (因為高亮度區
在卷動區的最底部).
┌—————————————————┐
│ p85. fig 8 - 2 │
│ │
│ │
│ │
│ 圖 8 - 2 具有卷動棒的 xterm 視窗 │
└—————————————————┘
你可以利用滑鼠按鈕移動卷動區的高亮度部分, 以改變顯示在螢幕上的文字.
下面的小節將會解釋; 為簡化說明我們假設卷動緩沖區包含 100 列文字.
注意 : xterm 采用異於其他視窗系統的卷動棒用法, 特別是 Apple Macintosh.
8.2.1 移動卷動棒到指定點
假如你想移動本文到某一指定位置, 例如 : 想看第 50 列之後的內容 :
1. 移動指標到卷動棒. 游標變成垂直雙箭頭. (圖 8 - 3a)
2. 按滑鼠中間按鈕 : 游標變成水平箭頭 (圖 8 - 3b), 且高亮度的頂端跳至游
標處.(例如 : 假如你想看的部分從 50 列開始, 你應該將游標移到卷動區
的中央)
3. 假如視窗顯示你所要的部分, 則可以放開按鈕. 否則 ...
4. ... 保持按住按鈕, 移動指標 : 高亮度部分跟隨著指標移動 (而視窗內的
本文也隨著高亮度區而卷動), 直到放松按鈕.
┌————————————————┐
│ p86. fig 8 - 3 │
│ │
│ │
│ │
│ 圖 8 - 3 游標在卷動區的不同形狀│
└————————————————┘
8.2.2 向前卷動本文
卷動視窗內的本文使文字列往上移出螢幕頂端 : 高亮度區向卷動棒底部移動,
視窗內並顯示最近打入的本文. 上卷的步驟如下 :
1. 移動指標到卷動棒. 和前面一樣游標變成垂直雙箭頭.
2. 按下滑鼠左按鈕 : 游標變成向上箭頭. (圖 8 - 3c)
3. 放開按鈕 : 與箭頭在同一列的文字移到螢幕頂端, 且高亮度區也隨著調整.
( 以圖形來表示,如圖 8 - 4. 注意到移動量的多少與你放開按鈕時的位置
有關 : 若接近頂端, 你可以獲得的移動量小, 接近底部則當然可以獲得較
大的卷動量).
┌————————————————┐
│ p87. fig 8 - 4 │
│ │
│ │
│ │
│ │
│ 圖 8 - 4 在一個視窗內卷動本文 │
└————————————————┘
8.2.3 向後卷動本文
向後卷動視窗本文, 文字列由螢幕底部移出, 使你得以看見先前打入的文字列
. 操作程序類似向前卷動, 但方向相反, 此時使用滑鼠右按鈕, 出現向下箭頭 (圖
8 - 3d).
8.2.4 其他卷動選項
只要你已經啟動卷動功能, 有兩個Modes選單的選項可供利用.
Scroll to bottom on tty output (若有 TTY 輸出將輸出自動卷到底) :
若你目前不在卷動區的底部, 稍後某些終端機的輸出到達視窗時會自動
地移動到卷動區的尾端. 此功能為預設的. 若此功能被關閉, 你要看最
新的輸出必須自行卷動視窗.
Scroll to bottom on key press (按鍵才卷到底) : 若你不在卷動區的底部,
稍後你按一個鍵, 視窗會自動移動至卷動區的尾端. 此功能不預設, 但通常你
的終端機設定成當你鍵入時回應一個字元 : 這些字元為TTY 輸出, 且將引起
視窗被卷到底部.
8.2.5 以命令列選項控制卷動
-sb : 允許使用卷動棒. (預設 : 禁能(disable))
-sl num : 儲存被卷離螢幕的若干列本文. (預設為 64)
-sk : 致能(enable)當按鍵才卷到底. (預設 : 禁能)
-si : 致能當終端機輸出時卷到底. (預設 : 致能)
8.3 記錄你與終端機的交談過程 - 寫記錄 (logging)
突現 xterm X11 選單, 並選擇 logging 選項. (假如你現在是第二次叫同樣的
選單,在 logging 選項旁邊, 你會看到一個沙漏標志 (tick-mark) , 表示它是啟動
的) 從此以後, 所有終端機輸出除了被送到螢幕以外, 也會被送至一個檔案. 你可
以獲得一個使用過程的永久記錄. 預設的狀況是將輸出寫到 xtermlog.pid 檔案.
其中 pid 為xterm 處理識別碼. 此檔案被建於啟動 xterm 時的目錄 (你也可以利用
下面介紹的命令列選項去改變登錄檔名).
你可以藉著 xterm X11選單停止或再度logging,反覆的停止和開始logging,你
可以作選擇性的記錄,logging 的輸出永遠附加在登錄檔案(log-file)之後,每一次
都不會覆寫(overwrite)登錄檔。
8.3.1 以命令列選項控制登錄使用過程
-l : 致能登錄使用過程
-lf file : 將登錄檔寫入指定檔, 以取代預設檔 (指定登錄檔僅設定登錄檔
名而不致能登錄功能; 必需另外使用 -l 來致能登錄)
使用一個導管 (Pipeline) 作為登錄 "檔"
-lf 選擇項有一個特殊功能 : 假如 file 引數以導管記號 (|) 開頭, 則其馀
部分視為登錄輸出的一個管路. 例如 : 假設你的系統 (shell) 提示是 venus%,
使用下列命令去啟動 xterm 並記錄於 cmdlog 檔, 只需鍵入
xterm -l -lf '| grep "^venus% " > cmdlog'
8.4 剪與貼本文
你可以從 xterm 視窗 "剪" (cutting) 部分本文, 亦即拷貝本文到一個 "剪
緩沖區" (cut buffer), 稍後可被 "貼" (pasting) 回, 亦即取回 (retrieve).
你可以將本文貼回同一個視窗, 或任何提供相同結構的視窗. 你可以現在或稍後
"貼" 回, 但你只有一個緩沖區, 後來所 "剪" 的資料將蓋掉先前的. 目前被選擇
的部分是以高亮度反白影像顯示; 一個有兩列文字被選到的xterm視窗顯示於
圖 8 - 5。
┌—————————————————┐
│ p87. fig 8 - 5 │
│ │
│ │
│ │
│ │
│圖 8 - 5 "剪" 操作中被選擇的文字列│
└—————————————————┘
8.4.1 剪 (cutting)
"剪" 一段文字 :
1. 移動游標至你想要 "剪" 的那一段文字的一端.
2. 按下滑鼠左按鈕, 並保持按住.
3. 拖拽游標至該段文字的另一端 : 在你移動的時候介於啟始位置與游標位置
間的文字會以高亮度顯示.
4. 放開按鈕 : 被選到的文字維持高亮度, 任何先前所選擇的高亮度本文 (甚
至在別的視窗中) 變為非高亮度.
8.4.2 貼 (pasting)
"貼" 一段本文 :
1. 移動游標至你想要插入一段文字的位置.
2. 碰觸滑鼠中間按鈕 : 先前被選定的文字被插入. (目前的選擇仍保持高亮
度)
當你將本文 "貼" 入一個視窗, 它真的就像你用鍵盤打入的一樣 -- 你可以使
用正常的列編輯鍵去消除字元, 單字, 或整列 (當然假如 "貼" 了許多列, 你
只能編輯最後一列, 就像你只能編輯最後敲入的一列一樣).
注意 : 假如你試圖 "貼" 太多文字到一個 xterm 視窗, xterm 可能永遠懸(hang)
在那裡. (我們試"貼" 過多到 4000 個字元沒有問題, 但這個值並不保證永
遠不發生問題.)
8.4.3 剪一個字或一列
假如你想剪一個字或一列, 你可以直接選擇它而不需拖拽過它.
"剪" 一個字 : 指標移到一個字的任何位置, 並碰觸兩次滑鼠左按鈕 : 該字
即被選擇.
"剪" 一列 : 指標移到一列的任何位置, 並碰觸三次滑鼠左按鈕 : 該列即被
選擇.
碰觸滑鼠按鈕兩次與三次是所有以滑鼠基礎(mouse-based) 的系統之共同用法,
但在這個例子有特殊的功能: 連續而獨立的幾次碰觸與一個多次碰觸是不同的,其
差異取決於介於按下按鈕(button-down)與松開按鈕(button-up)的期間內有沒有其
他的事發生. 所以下列算作碰觸三次 :
DOWN ... pause for a few seconds ... UP DOWN ... another
pause ... UP DOWN ... pause
這是很有用的 : 因為在碰觸後只要你保持按下, 只要更進一步藉著使用 up/down,
你可以改變選擇模式 (字元, 字, 列)。
8.4.4 擴大一個選定區塊或 "剪"
只要你有一個選定區塊, 你可以擴大它 (或縮減它), 如下 :
1. 移動指標至你想選擇的新端點, 它可以是在已存在的一個區域□面 (當你
想縮減它時) 或外面 (當你想擴大它時)
2a. 碰觸滑鼠左按鈕 : 選擇區的端點調整為目前指標位置. 或 ...
2b. ... 若以按下、拖拽和放開按鈕來取代碰觸. 在這個狀況下, 選擇區跟隨
游標變動, 且為高亮度.
有一個方便的技巧可以選定文字區塊, 首先標定你想選定的本文之一端, 碰觸
滑鼠左按鈕, 然後移至另一端碰觸滑鼠右按鈕 : 中間的文字即被選定. (這是擴大
選定區的變相方法. 開始時選擇區是空的 - 即你已碰觸滑鼠左按鈕, 但沒拖拽通
過任何文字 - 然後你碰觸滑鼠右按鈕來擴大這個空選定區.)
8.4.5 字或文字列邊界的選擇
假如你想選擇一些字或文字列, 你可以藉著在碰觸按鈕之前小心地定位指標來
完成.但這裡有一個簡捷的方式 - 再次利用多次碰觸按鈕. 選擇文字或文字列 :
1. 將游標移到你想 "剪" 的文字之一端.
2. 按下滑鼠左按鈕, 並保持按著 ...
3. ... 拖拽游標至你想要 "剪" 的文字之另一端 : 啟始點至游標間的本文為
高亮度. (如圖 8 - 6 上圖)
4. 放開並迅速連續地再按下按鈕 : 高亮度區擴展至最接近單字的邊界. (圖
8 - 6 中圖)
5. 放開並迅速連續地再按下按鈕 : 高亮度區擴展至已選定列的尾端. (圖
8 - 6 下圖)
6. 放開並迅速連續地再按下按鈕 : 高亮度區回復至原來的大小, 亦即選定區
回到字元邊界. (圖 8 - 6 最上面)
相同的技巧可應用於以右按鈕擴展已選擇的區塊.
┌—————————————————┐
│ p92. fig 8 - 6 │
│ │
│ │
│ │
│ │
│ 圖 8 - 6 以字元, 字與列 "剪" 文字│
└—————————————————┘
8.5 使用 Tektronix 模擬功能
xterm 可以模擬一個 Tektronix 4014 終端機和一個 VT102 終端機, 使你可
以用它來顯示圖形. 當你在一個遠方機器執行 非-X應用程式而想在你的顯示器
上看圖時, 特別有用.
  xterm 為每一個 "終端機" 使用一個不同的視窗, 所以你可以將所有文字顯
示於一個視窗, 而另一個視窗顯示圖形, 如圖 8 - 7. 某個時間只有一個視窗活
動(active)著, 亦即所有的鍵盤輸入或被 "貼" 入的本文 -- 被導引至活動視窗
, 甚至當指標在別的視窗時也一樣.
你可以使用終端機的逃脫序碼 (escape sequence) 或使用 modes 選單選擇你需
要的視窗.你可以使用你的視窗管理器完全分開地處理兩個視窗. 例如 : 你可以
表徵圖化 VT 視窗,然而保留一個開啟的 Tek, 等. 你也可以使用適當的 xterm
選單選項 (Tek Window Showing, Hide VT Window, 等) 去隱藏或顯現一個視窗
因而顯現或隱藏其他視窗.
注意 : 隱藏不是將它送到堆疊的底部, 或表徵圖化. 假如你使用選單 "隱藏"一
個視窗, 當下次你要求再出現時你必須像開啟一個新的應用視窗一樣地安
置 (position) 它.
┌—————————————————————┐
│ p93. fig 8 - 7 │
│ │
│ │
│ │
│ │
│ 圖 8 - 7 xterm 的正常視窗與Tektronix視窗 │
└—————————————————————┘
8.5.1 Tektronix 的特殊功能
Tektronix 選單 (同時按下 CONTROL 與滑鼠中間按鈕可得到) 提供你一些類
似 Modes控制 xterm 視窗的功能. 但它僅提供用於 Tektronix 視窗的(功能)項目.
改變字元的大小 : 你可以從四個不同的大小選擇, □圍從 Large Characters
(預設值) 到 Small Characters. 你可以在任何時刻改變它, 甚至在一
列中間. 在改變之前已出現在螢幕上的字元不受影響.
清除螢幕 : Tektronix 的一個特性是它的螢幕不卷動. 在螢幕上有兩行
(column) (左與右) 為本文, 當其中之一已寫滿, 輸出切換到另一端, 然
而, 已顯示的字元不清除 (erased), 因此螢幕不久會變混亂, 除非你下
命令清除它. 想這樣做的話需於 Tektronix 選單選擇 PAGE : 螢幕會被
清除, 且游標被移至左上角.
重置 "終端機" : 於 Tektronix 選單選擇 RESET. 字元的大小與線的型式 (
可能因一個程式輸出至視窗而改變) 被設回預設值, 且 PAGE 的螢幕清除
功能會被執行.
拷貝視窗內容至一個檔案 : 於 Tektronix 選單選擇 COPY, 自從最近一次的
PAGE功能後任何寫到螢幕的內容都會被拷貝到名為 COPYyy-mm-dd-hh.mm.ss 的
檔案. yy-mm...... 為當時時刻. 該檔被建於啟動 xterm 時的目錄下.
重繪 Tek 視窗會花一些時間 : 當它發生時, Tek 視窗內的游標變成一個鬧鐘
(見圖 8 - 8)
┌——————————————————┐
│ p94. fig 8 - 8 │
│ │
│ │
│ │
│ 圖 8 - 8 被用於 xterm 的 Tektronix │
│ 視窗內的鬧鐘形指標 │
└——————————————————┘
8.6 使用不同字型
xterm 可以讓你從正常的文字與粗體文字選擇不同的字型, 字型選擇必須有固
定的寬度且彼此大小相同. 你目前尚不知道如何找到可以利用的字型, 但它的應用
□圍很廣, 下面的例子我們將只用兩種, 這兩種是 core 版本提供字型的一部分:
8x13 (一個字元大小為 8 像素寬, 13 像素高) 與 8x13b (一個粗體變體)
欲指定特殊字型必須使用命令列選項 :
-fn font : 使用 font 的正常字型, 取代預設的 "fixed" 字型.
-fb font : 使用 font 的粗體字型, 取代預設的 "fixed" 字型; 預設狀態下
xterm 不區分粗體字的本文.
圖 8 - 9 所顯示的是執行下列命令
xterm -fn 8x13 -fb 8x13b
明確地指定正常與粗體字型的結果. 我們將在 "使用X的字型與色彩" 一章
中 (第13章) 進一步說明視窗字型與顏色.
┌—————————————————┐
│ p94. fig 8 - 9 │
│ │
│ │
│ │
│ 圖 8 - 9 具有粗體與正常字型的 │
│ xterm 視窗 │
└—————————————————┘
8.7 使用色彩 (colour)
假如你有彩色顯示器, 你可以用命令列選項設定一組 (些) 視窗元素去指定
  色彩: 
-fg colour : 以 colour 顏色印出前景, 亦即文字.
-bg colour : 以 colour 顏色作視窗背景.
-bd colour : 以 colour 顏色畫視窗邊界.
-ms colour : 以 colour 顏色為滑鼠指標顏色.
-cr colour : 以 colour 顏色為游標顏色.
參照連接在網路上的機器對視窗設定的色彩碼, 你可以發現非常有用. 設定滑
鼠與游標為顯眼的顏色也是有幫助的, 使你在紛雜的視窗中較容易看得到它們.
8.8 其他 xterm 選項
有許多其他的選項可以被 xterm 接受. 有些是設定終端機的特性, 例如 :
-display與 -geometry 前面已經討論過. 所有的這些都描述於 xterm 指南頁
(manpage), 中,但下面是一些有用的雜項 :
-iconic : xterm 應該以表徵圖啟動的方式取代由正常方式 "開啟" 視窗.(當
使用uwm 為你的視窗管理器, 表徵圖的初始位置將決定於表徵圖被產生
當時的游標位置. 我們將在 "定義應用程式的預設選項 -- Resources"
這章 (第15章) 裡教你如何明確地指定一個表徵圖位置)
-title string : 使用 string 為視窗標頭 (抬頭), 這個標頭就像圖 6 - 8 在
新開啟視窗所看到的一樣, 且某些視窗管理器可能將它包含在視窗標頭棒
(title bar).
-C : 這個視窗應該將接收的輸出送到系統控制台 (例如 : 磁碟已滿訊息, 裝
置錯誤 (device error), 等) 若你沒有一個視窗具有這個選項指定, 控
制台訊息可能直接出現在你的螢幕 (亦即不在一個固定視窗中) 並擾亂
顯示; 若發生時, 只要使用 uwm 的選單選擇 RefreshScreen 去恢復正常
顯示即可.
-e prog [args] : 在視窗中執行具有選擇性引數的 prog 程式, 取代啟動一
個 shell.(此選項必須在命令列的最後, 所有在它後面的視為 args 的
部分). 你經常需要使用 -e 去 rlogin 到一個不支援X的遠方系統, 例
如 :
xterm -title saturn -e rlogin saturn -l root
8.9 設定終端機鍵盤
X 本身可讓你改變鍵盤對照表, 所以你可以為針對不同的情況改變它以適合一
個國家的使用習慣. 但這個對照表僅決定那個 "字元碼" 聯結到一個給定的鍵.
client 程式 (像 xterm 但更進步) 則可指定任意的字串給任何鍵或鍵組 (組合
鍵). 使用這個結構你可以設定一個 xterm 特別適用於郵件程式, 或一個除錯器,
你只要指定一般命令給功能鍵, 或控制字元, 甚至單一字元。這個結構的詳細部
分相當的復雜,所以我們將延緩到 "訂制你的鍵盤和滑鼠 -- 轉譯" 一章(第18
章)中再介紹.
8.10 結論
xterm 是一個具有許多選項與功能的復雜的程式, 幸運地是大多數的時間你不
需要使用它們, 而當你使用時通常是在你開始啟動 xterm 時將它設定成你喜歡的
架構. xterm的指南頁 (manpage) 是一個很長的程式功能參考文件. 在詳讀它之前
, 你盡可能在一般的操作時不使用它, 較專門特別的地方才查考它.
注意 : 指南頁提到文件 "Xterm Control Sequence " (控制順序)這文件目前還在
准備中, 並不是發行版本的一部份.
許多介面特性 (功能) 例如 : 卷動棒與如何以指標選擇本文等, 是藉由標准軟
體 widget (小工具)寫在程式裡 (在第15章的 toolkit 那節有較多的介紹). 你
將發現許多由其它X應用程式提供的介面都是相同的, 例如: 第10章的 xman 與
xedit. 在繼續探討它們之前我們先在下一章看看一些雖然小但有用的程式.
Copyright © Linux教程網 All Rights Reserved