• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      空管系統(tǒng)中鍵盤快捷功能的研究與實(shí)現(xiàn)

      2012-09-17 09:43:46白紅利
      關(guān)鍵詞:鍵值空管區(qū)分

      白紅利

      中國電子科技集團(tuán)公司第二十八研究所 江蘇 210007

      0 引言

      在空管系統(tǒng)當(dāng)中管制員對人機(jī)界面的操作要求形象、簡潔、實(shí)用,在界面設(shè)計(jì)中,鍵盤的快捷鍵功能可以很好的滿足管制這方面的需求。當(dāng)前空管系統(tǒng)的操作系統(tǒng)主要有UNIX、LINUX等幾種,最常用的是UNIX系統(tǒng),包括引進(jìn)的雷神系統(tǒng)、馬丁系統(tǒng)、THALES系統(tǒng)、TELEPHONICS系統(tǒng)、SkyLine系統(tǒng)使用的都是Solaris UNIX系統(tǒng)。LINUX操作系統(tǒng)在空管系統(tǒng)的應(yīng)用也在逐步增加當(dāng)中,而不同的操作系統(tǒng)對鍵盤快捷功能的開發(fā)都會(huì)產(chǎn)生影響。因此,設(shè)計(jì)一種在多個(gè)平臺(tái)公用的鍵盤快捷功能的應(yīng)用就很有必要。

      1 鍵盤快捷功能使用的現(xiàn)狀

      現(xiàn)有國內(nèi)外空管系統(tǒng)在鍵盤快捷功能方面各有不同。

      雷神系統(tǒng)使用定制鍵盤,功能快捷鍵包括雙排鍵盤支持,且鍵盤支持二級(jí)菜單、三級(jí)菜單鍵盤功能。因?yàn)槔咨裣到y(tǒng)使用的鼠標(biāo)是軌跡球,定位沒有鼠標(biāo)方便,所以主要依賴鍵盤的快捷功能。

      馬丁系統(tǒng)使用的是普通鍵盤,在功能設(shè)置使用人機(jī)界面代替,在管制操作和命令輸入時(shí)依賴鍵盤。

      TELEPHONICS系統(tǒng)使用的硬件平臺(tái)是 SUN公司的工作站,配置的是 SUN鍵盤,與普通鍵盤存在差異。該系統(tǒng)主要依賴鼠標(biāo)操作,鍵盤只提供文本輸入功能,涉及鍵盤快捷功能少。

      THALES系統(tǒng)使用定制鍵盤,比普通鍵盤多六個(gè)鍵,使用的是定制的鍵盤驅(qū)動(dòng)。管制操作必須依賴鍵盤和鼠標(biāo)配合操作才能完成功能。因此THALES系統(tǒng)在使用時(shí)不能脫離鍵盤的操作。

      國產(chǎn)系統(tǒng)主要采用通用鍵盤,鍵盤快捷按照用戶需求設(shè)置,有各地的風(fēng)格。

      2 鍵盤事件的加載

      目前空管系統(tǒng)中,在UNIX平臺(tái)上的人機(jī)界面是基于Xt開發(fā)的應(yīng)用程序。Xt開發(fā)的應(yīng)用程序是由事件驅(qū)動(dòng)進(jìn)行的,需要給目標(biāo)組件注冊回調(diào)函數(shù)或者給目標(biāo)組件注冊動(dòng)作函數(shù),執(zhí)行用戶定義的函數(shù)功能。注冊回調(diào)函數(shù)一般用XtAddCallbacks將做好的功能函數(shù)注冊到目標(biāo)組件上,但注冊回調(diào)函數(shù)局限于目標(biāo)組件本身支持的特定的組件事件,不能滿足鍵盤快捷功能,如果采用注冊動(dòng)作函數(shù),則可以定義事件類型和修飾,實(shí)現(xiàn)鍵盤的快捷功能。

      注冊動(dòng)作函數(shù)首先定義翻譯表和動(dòng)作函數(shù),翻譯表是一個(gè)對象元資源的值,指出當(dāng)某一事件或者一系列事件發(fā)生時(shí)調(diào)用什么動(dòng)作函數(shù),它是一個(gè)由多個(gè)翻譯項(xiàng)組成的字符串,翻譯項(xiàng)把一個(gè)事件序列映射為一個(gè)或多個(gè)動(dòng)作函數(shù)名,由于翻譯表是一個(gè)字符串,所以 Xt需要將它轉(zhuǎn)換成為自己的內(nèi)部形式。翻譯表的第一行可以有三種指令,它告訴轉(zhuǎn)換函數(shù)如何處理現(xiàn)有的翻譯表,三個(gè)指令是:#replace、#augment和#override。#replace指示用當(dāng)前的翻譯表代替舊的翻譯表。#augment是合并新舊兩個(gè)翻譯表,當(dāng)如何處理同時(shí)出現(xiàn)在兩個(gè)翻譯表中的事件時(shí)舊的翻譯項(xiàng)優(yōu)先。#override也是合并新舊兩個(gè)翻譯表,當(dāng)如何處理同時(shí)出現(xiàn)在兩個(gè)翻譯表中的事件時(shí)新的翻譯項(xiàng)優(yōu)先。

      翻譯項(xiàng)的語法:

      <修飾詞表><事件>[,<事件>…]<記數(shù)>[<細(xì)節(jié)>]:<動(dòng)作函數(shù)名>(<參數(shù)>)[<動(dòng)作函數(shù)名>…]每個(gè)翻譯表項(xiàng)中至少有一個(gè)<事件>,一個(gè)冒號(hào)分隔符和至少一個(gè)<動(dòng)作函數(shù)名>。翻譯項(xiàng)語法格式可以應(yīng)用到資源文件、程序定義中。表1列出主要使用的鍵盤修飾狀態(tài)。

      表1 翻譯表中使用的修飾詞

      在翻譯項(xiàng)中還可以使用幾種對事件起修飾作用的符號(hào),表2列出修飾符號(hào)。

      表2 修飾符號(hào)

      翻譯項(xiàng)中事件可以用實(shí)際名字描述,也可以使用縮寫描述。表3列出與鍵盤快捷功能有關(guān)的事件類型。

      表3 鍵盤事件類型

      Xt沒有專門提供事件縮寫描述鍵盤哪個(gè)鍵按下或釋放,但可以使用翻譯項(xiàng)中<細(xì)節(jié)>描述鍵盤事件,鍵符號(hào)用來描述鍵盤事件<細(xì)節(jié)>,在系統(tǒng)頭文件中定義。

      3 分析多種鍵盤事件加載方法

      鍵盤事件加載可以根據(jù)使用資源文件和程序控制分成四種。

      使用資源文件和編程配合加載:

      (1) 一類鍵盤符號(hào)使用一個(gè)函數(shù)接口;

      (2) 一個(gè)鍵盤鍵使用一個(gè)函數(shù)接口。

      完全程序控制:

      (3) 所有鍵盤鍵使用一個(gè)函數(shù)接口;

      (4) 一個(gè)鍵盤鍵使用一個(gè)函數(shù)接口。

      3.1 使用資源文件和編程配合加載鍵盤事件方法

      (1) 定義一個(gè)函數(shù)接口方法

      在資源文件中配置:

      在程序中定義3個(gè)函數(shù):onekey(),shiftkey(),Cakey()。要在定義的函數(shù)中區(qū)分點(diǎn)擊的鍵盤是哪個(gè)鍵??梢允褂面I值區(qū)分,也可以使用鍵符值區(qū)分。

      定義的函數(shù)需要4個(gè)參數(shù),例如:onekey(widget,event,string,cardinal)。

      使用鍵值區(qū)分方法:在定義的函數(shù)參數(shù)中使用 event參數(shù)。Event參數(shù)是XKeyEvent結(jié)構(gòu),該結(jié)構(gòu)中的keycode可以區(qū)分事件驅(qū)動(dòng)的鍵盤鍵。

      使用鍵符值區(qū)分方法:使用函數(shù)參數(shù) event參數(shù)和XlookupKeysym函數(shù)獲取驅(qū)動(dòng)鍵盤事件的鍵盤鍵的鍵符值。

      (2) 定義多個(gè)函數(shù)接口方法

      在資源文件中配置

      在程序中定義多個(gè)函數(shù),在定義的函數(shù)中不需要區(qū)分點(diǎn)擊的鍵盤是哪個(gè)鍵。關(guān)鍵字后必須是系統(tǒng)定義的字符。

      3.2 完全程序控制加載鍵盤事件方法

      (1) 定義一個(gè)函數(shù)接口方法

      在需要加載鍵盤事件的組建上加載:

      應(yīng)用程序?qū)Ψg表進(jìn)行解析,解析過程由資源類型轉(zhuǎn)換函數(shù)完成:

      為目標(biāo)組件增加翻譯表項(xiàng):

      XtAppAddActions(app,keypress,XtNumber(keypress));

      4 鍵盤事件加載的區(qū)別

      當(dāng)程序區(qū)別鍵盤鍵時(shí)在不同的平臺(tái)或環(huán)境時(shí)需要特定處理。因?yàn)樵诓煌钠脚_(tái)和環(huán)境表現(xiàn)出不同的鍵值,在表 4列表顯示。

      表4 鍵盤鍵值的比較

      在不同的系統(tǒng)中keycode是不同的,根據(jù)不同的keycode處理快捷事件。因此這種鍵盤事件處理具有局限性,是針對固定的操作系統(tǒng)。

      鍵符值在不同的平臺(tái)表現(xiàn)相同,表5舉例列出鍵盤對應(yīng)的鍵符值。

      表5 鍵盤鍵符值對應(yīng)關(guān)系

      在所有系統(tǒng)平臺(tái)上鍵符值是固定的??梢允褂貌煌南到y(tǒng)版本。

      鍵盤加載最終目的是鍵盤事件盡可能少或不依賴平臺(tái)和環(huán)境,增加程序的可移植性和適應(yīng)性。在資源文件中設(shè)置目標(biāo)對象的翻譯表資源,與設(shè)置其他資源類似,但是一旦資源文件中翻譯表或被刪除或發(fā)生錯(cuò)誤,應(yīng)用程序就不能使用,導(dǎo)致程序無法運(yùn)行。上一節(jié)討論的鍵盤快捷加載方法特點(diǎn)如下:

      (1) 使用資源文件和程序定義單個(gè)函數(shù)入口方法:必須依賴資源文件,單個(gè)函數(shù)入口決定了程序需要控制鍵盤事件的分支;

      (2) 使用資源文件和程序定義多個(gè)函數(shù)入口方法:必須依賴資源文件,多個(gè)函數(shù)入口需要增加代碼,不需要區(qū)分鍵盤鍵。但是配置靈活;

      (3) 完全程序控制定義單個(gè)函數(shù)入口方法:單個(gè)函數(shù)入口決定了程序需要控制鍵盤事件的分支;

      (4) 完全程序控制定義多個(gè)函數(shù)入口方法:函數(shù)入口決定了程序需要控制鍵盤事件不需要區(qū)分鍵盤鍵,需要增加部分代碼。

      在區(qū)分鍵盤鍵時(shí)就要選擇使用鍵符值的方法區(qū)分,可以解決操作系統(tǒng)和軟件環(huán)境的變化。

      5 結(jié)論

      空管自動(dòng)化系統(tǒng)在正式運(yùn)行后,基本不會(huì)調(diào)整鍵盤的快捷鍵操作功能,但隨著系統(tǒng)的硬件和操作系統(tǒng)版本的升級(jí),會(huì)出現(xiàn)鍵盤鍵值不一致的情況,從而引起界面軟件版本的不同。本文提供的鍵盤快捷功能的實(shí)現(xiàn)方法,解決了鍵盤鍵值的不同引起的界面軟件版本不一致的情況,該技術(shù)在現(xiàn)有國產(chǎn)空管自動(dòng)化系統(tǒng)中得到了很好的應(yīng)用。

      [1]張倪,莫斌.Motif與圖形用戶界面開發(fā)工具.清華大學(xué)出版社.1995.

      [2]張軍.現(xiàn)代空中交通管理.北京航空航天大學(xué)出版社.2005.

      猜你喜歡
      鍵值空管區(qū)分
      區(qū)分“旁”“榜”“傍”
      你能區(qū)分平衡力與相互作用力嗎
      非請勿進(jìn) 為注冊表的重要鍵值上把“鎖”
      民航空管2018年運(yùn)行統(tǒng)計(jì)公報(bào)
      民航管理(2019年2期)2019-06-04 03:50:22
      乙醇蒸氣放空管設(shè)置室內(nèi)引發(fā)爆炸
      教你區(qū)分功和功率
      一鍵直達(dá) Windows 10注冊表編輯高招
      電腦愛好者(2017年9期)2017-06-01 21:38:08
      罪數(shù)區(qū)分的實(shí)踐判定
      如何做好空管質(zhì)量安全管理體系(QSMS)內(nèi)部審核的幾點(diǎn)思考
      河南科技(2014年22期)2014-02-27 14:18:31
      空管自動(dòng)化系統(tǒng)GPS時(shí)鐘同步方式
      河南科技(2014年10期)2014-02-27 14:09:23
      柘城县| 康保县| 句容市| 隆德县| 嘉荫县| 甘谷县| 平度市| 丹凤县| 本溪| 五华县| 陇西县| 垣曲县| 宜春市| 海林市| 阿拉善右旗| 广汉市| 抚州市| 嘉禾县| 景洪市| 托克逊县| 沁水县| 基隆市| 黑水县| 罗江县| 乌兰察布市| 宁陕县| 工布江达县| 绥芬河市| 罗平县| 会泽县| 西安市| 松江区| 麻栗坡县| 古丈县| 柯坪县| 当雄县| 阜康市| 小金县| 宿松县| 葫芦岛市| 枝江市|