作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [问题] testAsc 中的 ESC
时间Mon Oct 10 00:32:20 2011
首先,单独的 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
1F:→ wmin0:我的写法是beep後return undefine 所以是要照这篇改吗 10/10 00:36
2F:→ ric2k1:没有关系啦!! 单独的 ESC 不用支援,也不会测。 10/10 00:38
3F:→ ric2k1:你要支援也是 OK 的!! 10/10 00:38
4F:→ ric2k1:但你这样写会吃掉 ESC 後的第一个 char 吧!? 10/10 00:38
5F:→ wmin0:就ESC当成 combo key起点...@@ 所以全视为combo key了... 10/10 00:40
6F:→ ric2k1:我的写法的话,在按下 ESC 後,在按任何监应该都会正常执行 10/10 00:42
7F:→ ric2k1:只是 B 声是在後来才出现就是了... (而不是在按 ESC 时) 10/10 00:42
8F:→ wmin0:反正不会测嘛...(望 10/10 00:43