QB64中的控制中断

  • 本文关键字:中断 控制 QB64 qb64
  • 更新时间 :
  • 英文 :


我一直在使用以下代码来捕获控制中断,但我没有得到任何回报:

程序执行期间的控制中断会导致以下情况发生:

1)Invokes interrupt trap 1Bh
2)Places 00:00 into keyboard buffer
3)Sets flag 80h at memory 40:71h

检测Control Break的示例(已编译(:

DO
X$=INKEY$
IF X$=CHR$(0)+CHR$(0) THEN
PRINT "*break*"
END
END IF
LOOP

检测Control Break的另一个示例(已编译(:

DEF SEG = &H40
POKE &H71, 0
DEF SEG
DO
DEF SEG = &H40
X = PEEK(&H71)
DEF SEG
IF X = 128 THEN
PRINT "*break*"
END
END IF
LOOP

我缺什么了吗?

我已经编写了下面的代码(QB64(,用于拦截按键和按键释放。

在我的Linux操作系统上,这个程序运行,但它不会拦截按键,也不会拦截break键的释放。

我不知道上述行为是由于我的操作系统、操作系统配置还是键盘(罗技无线(。我认为这是由于QB64函数_KEYHIT的行为。

PRINT "Hit Esc to exit"
DO
_LIMIT 20
x& = _KEYHIT
IF x& <> x1& THEN
IF x& < 0 THEN
PRINT "-"; HEX$(-x&)
ELSE
PRINT "+"; HEX$(x&); " [";
y& = x&
WHILE y& > 256
PRINT CHR$(y& MOD 256); "] [";
y& = y&  256
WEND
PRINT CHR$(y&); "]"
END IF
x1& = x&
END IF
IF x = 27 THEN EXIT DO
LOOP
PRINT "Escape pressed."

我发现了以下代码来捕获qb64中的ctrl break:

ON TIMER(1) GOSUB breaktrap
TIMER ON
x = _EXIT ' disable break
DO
_LIMIT 50
x$ = INKEY$
LOOP
breaktrap:
v = _EXIT
IF v THEN
PRINT "*break*"
SLEEP 5
SYSTEM
END IF
RETURN

最新更新