- 論壇徽章:
- 1
|
作者:legendfan 出處:Unix愛好者家園unix-cd.com
一、 鎖\開鍵盤代碼
代碼定義:
鎖鍵盤:ESC[2h
開鍵盤:ESC[2l
應用:
1.直接在鍵盤上順序敲入Esc+[+2+h四鍵,鍵盤即被鎖住。
2.在C語言程序顯示字符串中包含鎖代碼:printf(″%c[2h字串″,'\033')。
3.在shell程序中用echo命令:echo″^[[2h字串″.注Esc鍵在vi編輯器中輸入方法為:Ctrl+v,然后按一下Esc鍵,在屏幕上顯示^[表示已輸入。
同樣顯示開鎖代碼則鍵盤被解鎖。
二、 刪除字符代碼
代碼定義:
ESC[nX:清除光標右邊n個字符,光標不動。
ESC[K或ESC[OK;清除光標右邊全部字符,光標不動。
ESC[1K:清除光標左邊全部字符,光標不動。
ESC[2K:清除整行,光標不動。
ESC[J或ESC[OJ:清除光標右下屏所有字符,光標不動。
ESC[1J:清除光標左上屏所有字符,光標不動。
ESC[2J或ESCc:清屏,光標移到左上角。
ESC[nM:刪除光標之下n行,剩下行往上移,光標不動。
ESC[nP:刪除光標右邊n個字符,剩下部分左移,光標不動。
應用:
一般用于自己開發(fā)的編輯器中或涉及行編輯的應用程序中。
三、 插入字符代碼
代碼定義:
ESC[n@:在當前光標處插入n個字符。
ESC[nL:在當前光標下插入n行。
應用:
一般用于自己開發(fā)的編輯器中或涉及行編輯的應用程序中。
四、 移動光標
代碼定義:
ESC[nA:光標上移n行。
ESC[nB:光標下移n行。
ESC[nC:光標右移n個字符。
ESC[nD:光標左移n個字符。
ESC[n;mH :光標定位到第n行m列(類似代碼ESC[n;mf)。
應用:
1.一般用于自己開發(fā)的編輯器中或涉及行編輯的應用程序中。
2.用shell編輯的菜單程序中定位光標,如:
echo″^[[10;30H請選擇:[ ]^[[9C\c″,則先把光標定位到10行30列,然后顯示″請選擇[ ]″,最后光標右移9個符定位到中括號內(nèi)等待用戶響應。
五、 定義字符顯示屬性代碼
代碼定義:
ESC[p;p;p;……m 其中屬性值p可以是一個或多個,具體定義如下:
p 含義
0 清除所有屬性
1 高亮度顯示
4 下劃線(如果硬件支持的話)
5 閃爍(如果硬件支持的話)
25 無閃爍
7 反場(前背景交換)
27 無反場
8 隱藏(不顯示)
10 選擇基本字體
11 選擇第一替代字體;讓ASCII值小于32的字符顯示時直接取自ROM芯片內(nèi)
12 選擇第二替代字體;在作為ROM字符顯示之前先壓縮擴展高位ASCII碼值
30 前景黑色
31 前景紅色
32 前景綠色
33 前景褐色
34 前景藍色
35 前景紫色
36 前景藍綠色
37 前景白色
38 開啟下劃線標志;白色前景用白色下劃線
39 關閉下劃線標志
40 背景黑色
41 背景紅色
42 背景綠色
43 背景褐色
44 背景藍色
45 背景紫色
46 背景藍綠色
47 背景白色
應用:
unix系統(tǒng)提供的setcolor命令是以行為單位改變顏色,在實際運用中有它的局限性,上面提到的控制代碼在日常生活中用得最多,尤其適合于彩色彈出式立體菜單的設計。如我設計的中心機房值班程序,由于用了這些控制代碼,界面非常友好。
六、其它代碼
代碼定義:
ESC7:保存當前光標位置參數(shù)及字符屬性。
ESC8:恢復保存的光標位置參數(shù)及字符屬性。
\n :插入換行符
\t :插入一個Tab鍵。
\r :插入回車符。
^G :插入響鈴符(pc嗽叭鳴叫一次),在vi中按Ctrl+g即可輸入。
\c :用于shell程序中,不換行。
應用:
1.用戶界面設計。
2.用于中心機房向儲蓄柜面發(fā)通知的程序中(結合實達終端屏幕保存代碼ESC[/n;mr__保存從n行到m行的內(nèi)容,恢復代碼ESC[/11)
七、應用舉例
1.彩色立體菜單(shell語言):
setcolor-b white
clear
while true
do
echo″
^[[8;20H^[[34;43m┍—————————┒^[[47m
^[[9;20H^[[34;43m | 1 日 間 業(yè) 務 | ^[[40m ^[[47m
^[[10;20H^[[34;43m| 2 環(huán) 境 維 護 | ^[[40m ^[[47m
^[[11;20H^[[34;43m| 請 選 擇 [ ]| ^[[40m^[[47m
^[[12;20H^[[34;43m┕ ┛^[[40m^[[47m
^[[13;22H^[[40m ^[[47m
echo″ ^[[11;40H\c″
read acc
done
2.向儲蓄所發(fā)通知(C語言):
#include
main()
{
printf(″%c7%c[/2;4r″,'\033',\033');
printf(″%c[2;5H%c[2K 緊急通知 ″,' \033','\033');
printf(″%c[3;5H%c[2K由于線路問題,今天不辦XXXX市通存通兌業(yè)務“,'[033','\033');
printf(″%c[4;5H%c[2K 中心機房 1998.11.20%c8″,'\033','033','\033');
fflush(stdout);
sleep(10);
printf “%c[/11″,'\033');
fflush(stdout);
}
說明:該程序首先保存光標位置,同時保存2至4行內(nèi)容 ,接著定位光標到2行5列,清除該行原先內(nèi)容,然后顯示“緊急通知”字樣,通知顯示完后立即恢復光標位置,然后等待10秒鐘后恢復屏幕原先內(nèi)容 。
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/31/showart_515559.html |
|