首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QB64中的控制中断

QB64中的控制中断
EN

Stack Overflow用户
提问于 2020-12-09 07:08:54
回答 2查看 138关注 0票数 0

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

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

代码语言:javascript
复制
1)Invokes interrupt trap 1Bh
2)Places 00:00 into keyboard buffer
3)Sets flag 80h at memory 40:71h

检测“控制中断”(已编译)的示例:

代码语言:javascript
复制
DO
   X$=INKEY$
   IF X$=CHR$(0)+CHR$(0) THEN
      PRINT "*break*"
      END
   END IF
LOOP

另一个检测“控制中断”(已编译)的示例:

代码语言:javascript
复制
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

我遗漏了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-23 05:53:35

我在qb64中找到了以下代码来捕获ctrl中断:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-12-10 10:20:29

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

在我的Linux操作系统上,这个程序运行,但它不拦截键压或密钥释放的中断键。

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

代码语言:javascript
复制
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."
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65212126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档