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