看板 EE_DSnP 關於我們 聯絡資訊
首先,單獨的 ESC 不用支援,所以大家可以左轉出去了。 但你如果好奇 testAsc 發生什麼事的話,可以往下看一下。 ※ 引述《victoret (戲言~)》之銘言: : 在執行修改過之後的 testAsc : 按下 ESC 鍵後,螢幕上顯示如下 : 27 ^ (^ 代表游標所在位置) : 這個時候假如輸入一些基本的符號鍵像是 abcd、@#$%、453 等等的 : 就會變成... : 27 92 口 <--- 一個奇怪的框框,裡面寫著 0 0 (以 \ 為例) : 這個數字不一定 1 0 : 假如輸入的是一些 functional 的按鍵像是 Ctrl + A、PgUp、Tab 等等 : 則會顯示出 : 27 27 91 68 Arrow left (以向左鍵為例) : 這種形式的狀況... : 後來又試著按一些其他的鍵...好像還有支援組合的樣子... : 像是連續鍵入 Esc [ D : 則會出現 : 27 91 68 Arrow left : 請問這個問題要如何修正??? 當 ESC 被按下之後,charDef.cpp 中的 checkChar() 就會進入 "case ESC:", 等待你再按另外一個鍵。 這是不論你案什麼鍵,像是 'a', 他就會被 "mygetc()" 吃掉 (note: 沒有東西在螢幕上哦), 但是他的 ASCII code 仍然會被存到 "char combo" 裏頭, 然後在接下來的檢查 "if (combo == char(MOD_KEY_INT))" 不成立,進入 else 之後就會 B 一聲, 然後重新呼叫 "checkChar('a', cin)", 最後進入 "default" return "returnCh('a')", 但回到外面的 main() 之後,問題就來啦... 原先在呼叫 chechChar() 之前,line 30 的 ch = mygetc() ==> 27 (ESC), 但 line 31 的 pch = checkChar() 卻會是 97 ('a'), 所以到 53 行印出的是 "沒有東西的 ESC (27)", 而不是 'a' (pch). 但以上是 testAsc() 的問題, 我也懶得改,但是在 cmdReader 裏頭就不會有這種問題, 如果你在 cmdReader-ref 按下 ESC 後再按 'a', 那麼會先聽到一聲 B, 然後在螢幕上看見 'a'. 很正常啊! 多了一聲 B 而以嗎!? (但美中不足的是是在按 'a' 之後才 B, 不是按 ESC 的時候) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.160.25.115
wmin0:我的寫法是beep後return undefine 所以是要照這篇改嗎 10/10 00:36
ric2k1:沒有關係啦!! 單獨的 ESC 不用支援,也不會測。 10/10 00:38
ric2k1:你要支援也是 OK 的!! 10/10 00:38
ric2k1:但你這樣寫會吃掉 ESC 後的第一個 char 吧!? 10/10 00:38
wmin0:就ESC當成 combo key起點...@@ 所以全視為combo key了... 10/10 00:40
ric2k1:我的寫法的話,在按下 ESC 後,在按任何鑑應該都會正常執行 10/10 00:42
ric2k1:只是 B 聲是在後來才出現就是了... (而不是在按 ESC 時) 10/10 00:42
wmin0:反正不會測嘛...(望 10/10 00:43