Common Lisp 鼠标位置与 ltk

2024-04-19

我正在 Common Lisp 中制作一个简单的小程序,我想使用鼠标移动来控制它。我用 LTK 作为窗口。我找不到任何可以检索鼠标位置的函数。例如,Emacs Lisp 有(鼠标像素位置)。我发现这在罗塞塔代码上 https://rosettacode.org/wiki/Mouse_position,但没有 Common Lisp 条目。我能做些什么?


这个SO答案的提示:鼠标位置 Python Tkinter https://stackoverflow.com/questions/22925599/mouse-position-python-tkinter

并查看 ltk 的文档:http://www.peter-herth.de/ltk/ltkdoc/node16.html http://www.peter-herth.de/ltk/ltkdoc/node16.html

我得到了以下示例来检索鼠标移动触发的任何事件:

(ql:quickload "ltk")
(in-package :ltk-user)

(defun motion (event)
    (format t "~a~&" event))

(with-ltk ()
    (bind *tk* "<Motion>" #'motion))

这会打开一个小窗口,里面什么也没有。一旦你把鼠标放进去,你就会得到很多事件:

#S(EVENT
   :X 0
   :Y 85
   :KEYCODE ??
   :CHAR ??
   :WIDTH ??
   :HEIGHT ??
   :ROOT-X 700
   :ROOT-Y 433
   :MOUSE-BUTTON ??)
…

The #S表示我们处理一个结构,名为EVENT,所以我们可以通过以下方式访问它的插槽(event-x event), event-mouse-button等参见https://lispcookbook.github.io/cl-cookbook/data-structs.html#slot-access https://lispcookbook.github.io/cl-cookbook/data-structures.html#slot-access

另外,您可能想加入 freenode 上的 CL 社区,那里有一些游戏开发人员。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Common Lisp 鼠标位置与 ltk 的相关文章

  • 为什么在 Common Lisp 中,当我运行参数为 1 的函数“acos”时,答案是错误的?

    当我运行 acos 1 来查找 1 emacs 的反余弦时 我得到了答案 而不是正确答案 0 6 125742f 17 为什么会这样以及如何得到 0 的正确答案 就像 Windows 计算器所说的那样 我在 Windows 8 上使用 SB
  • 如何在 Common Lisp 中编写宏定义宏

    我的代码库中有大约两个宏 和攀爬 如下所示 defmacro def stat method method name stat progn defmethod method name monster monster getf stats m
  • Common Lisp:为什么我的尾递归函数会导致堆栈溢出?

    我在理解 Common Lisp 函数的性能方面遇到了问题 我还是个新手 我有这个函数的两个版本 它只是计算给定的所有整数的总和n 非尾递归版本 defun addup3 n if n 0 0 n addup n 1 尾递归版本 defun
  • 学习一种 Lisp 有助于学习另一种 Lisp 吗?

    学习不同的 Lisp 语言之间有协同作用吗 我目前正在学习 Emacs Lisp 因为它在我的日常 Emacs 使用中立即有用 但是我对所有 Lisp 都很着迷 所以也许有一天我会学习和使用其他语言 当我开始深入研究 Common Lisp
  • 在 LISP 中是否可以访问函数的形式?

    假设我全局定义了一个函数 defun x y 1 y Edit my first example was too complicated 是否可以将函数 x 强制 到一个列表中 例如 x y 1 y 提前致谢 PS Danlei 的示例在
  • Common Lisp:编译与评估

    在带有 sbcl 的 Emacs Slime 上 一旦我在文件中定义了一个函数 或多个 我有两个选择 评估 例如与 C M x eval defun 汇编 例如使用 C c M k 编译文件 第二个也生成一个 fasl 文件 两者有何区别
  • 以列表作为参数的 defun

    我正在尝试选择 Lisp 作为我的新语言 但我在解决如何让函数的一部分作用于传递给它的列表的每个元素上时遇到了一些问题 为了学习如何解决这个问题 我试图编写一个相当基本的除法形式 当列表的一个元素为 0 时不会发出声音 而是只返回 0 de
  • 为什么 Common Lisp 中冒号位于变量之前

    Common Lisp 中变量前面的冒号语法是什么意思 我见过这样的程序 我将在这里从大量函数中展示一些示例代码 defun expand successorf node mapcar lambda action state cost le
  • 对 SBCL 中的“ql:quickload”和可执行脚本感到困惑

    我一直在尝试在我的可执行脚本中使用 Quicklisp 包 一个 简单的 工作示例是 usr bin sbcl script eval when compile toplevel load toplevel execute ql quick
  • Common Lisp 案例和引用元素

    我正在用 CL 编写一个地下城爬行游戏 但在处理案例表单时遇到了问题 两件事情 Common Lisp 抱怨Duplicate keyform QUOTE in CASE statement make instance cl rogue t
  • 在 OSX 上编译 clisp-2.49:未找到 LIBFFI

    TL DR Even if libffi似乎已安装 configure即使我给它添加 正确的 前缀 脚本也找不到它 这篇文章的最后一部分 是我陷入困境的地方 我仅提供其他信息来解释我如何到达那里 我对这篇长篇文章表示歉意 如果有些内容与您无
  • Common Lisp 中的属性列表是否引用某些全局状态?

    下面的代码有z作为局部变量 但它的行为就像全局变量一样 defun foo m let z stuff nil push m getf z stuff print z foo 1 foo 2 foo 3 我希望输出是 STUFF 1 STU
  • Clozure Common Lisp - TCP 套接字编程 - 发送回复

    我有一个非常小的程序 它打开一个套接字并接受一个连接 然后它会获取远程 IP 和端口 我想向远程计算机 telnet 发送一条短信并关闭连接 我无法确定哪个函数用于向 telnet 客户端发送消息 The Clozure手册 http cc
  • Common Lisp 类型声明未按预期工作

    当我在 Common Lisp 中定义一个函数时 如下所示 defun foo n declare type fixnum n n 42 我期待一个像这样的电话 foo a 立即失败 但在调用时失败 是个declareform 不保证静态类
  • Common Lisp 中的(随机)不那么随机?

    好的 最后一个问题 我将用 Common Lisp 完成我的猜数游戏 D 每当游戏开始 或者在第一个游戏之后开始新游戏 时 都会调用以下函数 Play the game defun play If it s their first time
  • 在 Parenscript 中使用 regex(正则表达式)

    我正在尝试 Parenscript 在尝试使用正则表达式函数时 我得到了意外的输出 例如 参考手册 https common lisp net project parenscript reference html shows regex f
  • LISP 中的变量和符号有什么区别?

    从范围上来说 内存中的实际实现 语法 例如 if let a 1 a 是变量还是符号 约尔格的回答指出了正确的方向 让我补充一点 我将讨论与 Common Lisp 类似的 Lisp 作为数据结构的符号 符号是 Lisp 中真实的数据结构
  • 将列表传播到父代 sexp 中

    在任何 lisp 中是否有一种形式可以在父 sexp 中 传播 列表 喜欢 spread 1 2 3 gt 1 2 3 有两种方法可以做到这一点 哪个更好取决于您最终想要什么 一般来说 您可以使用 inside 反引号 表格如下 被评估以生
  • 在我的 Linux 机器上安装 lisp

    我使用 Vim 作为我的编辑器 Practical common Lisp 建议安装 Lispbox 我不知道如何使用 emacs 不知道如何用那个 T T 运行 lisp 代码 之后我找到了一个名为 limp vim 的 vim lisp
  • 评估 Common Lisp 宏的参数

    我想制作一个宏 其行为取决于它的参数之一 例如 defclass myvar l initarg l reader l defparameter mv1 make instance myvar l 10 defmacro mac1 v pr

随机推荐

  • JScrollPane 中的 JTextArea 包裹单词但缺少字母

    我想做一个JOptionPane showOptionDialog和一些JTextArea and JLabel 问题是对话框太小 我没有找到任何解决方案 所以我决定将我的内容放在JScrollPane 我看到我必须把我所有的JTextAr
  • 删除 Google App Engine 中某种类型的所有数据

    我想清除 Google App Engine 中特定类型的所有数据 是什么 最好的方法来做到这一点 我写了一个删除脚本 hack 但是由于数据太多 几百条记录后超时 我目前正在通过密钥删除实体 而且似乎更快 from google appe
  • 有没有办法使用 GPU 调整图像大小?

    有没有办法使用可通过 NET 应用程序使用的 GPU 图形卡 调整图像大小 我正在寻找一种极其高效的方法来调整图像大小 并且听说 GPU 可以比 CPU 更快地完成此操作 使用 C 的 GDI 是否有已知的实现或示例代码使用 GPU 来调整
  • 无法安装 VS 2015 Update 3 [重复]

    这个问题在这里已经有答案了 所以我尝试安装 VS 2015 Update 3 顺便说一句 我有专业版 但我不断收到此屏幕 当然 现在 Update 2 已经安装 但它无法识别这一点 我需要做什么 Go to control panel gt
  • 使用 OpenCV 进行图像捕获 - 选择超时错误

    我想保存从连接 BeagleBone Black 的网络摄像头捕获的图像 但是当我运行以下代码时 出现错误 选择超时 include
  • JavaScript 不断返回 0

  • 单击时更改 TextView 的背景颜色

    我需要更改 TextView 的背景颜色 使用 ColorStateList 我可以更改字体颜色 但背景颜色不接受 ColorStateList lblEtiqueta setTextColor new ColorStateList new
  • 使用 HTTPS 回传 Paypal IPN 验证

    根据新的安全要求 2016 年 2017 年和 2018 年 在 IPN 期间 服务器和 Paypal 之间的交换似乎需要 HTTPS 这个问题与这个主题相关 https civicrm stackexchange com a 6374并且
  • wcf 错误:传入消息使用的令牌进行签名,该令牌与用于加密正文的令牌不同。这是没有预料到的

    我正在尝试使用 verisign 测试 x 509 证书调用第三方服务 当我收到响应消息时 它会生成以下错误 传入消息使用令牌进行签名 该令牌与用于加密正文的令牌不同 这是没有预料到的 我没有预料到会出现此错误 因为我只向服务提供了一个 x
  • 我们需要为每个子例程创建一个错误处理程序吗?

    我从SO中复制了一段代码作为示例 该子例程包含一个错误处理程序 是否应该为所有 Sub 制定一个错误处理程序 Public Sub SubA On Error Goto ProcError Connection Open Open File
  • 更新两个表的 SQL 触发器

    我是 SQL 新手 有人可以帮我修复下面的触发器吗 我有这 2 个表 评论和报价 我想更新评论表插入 更新和删除 从报价表中获取数据 如果更新成功 我想使用 ReviewId 和 ReviewDate 更新报价表 我使用的是Azure提供的
  • JQuery Ajax 火狐错误

    下面的代码在 Chrome 和 IE 中都可以正常工作 get ajax BTBookAppointment aspx dsl telNumberBox value date requiredDate value timeslot ddTi
  • 从连接到计算机并在成像设备中列出的相机捕获图像

    我有一台佳能 EOS 1000D 当我将其连接到计算机时 它列在 控制面板 gt 成像设备 下 我想以编程方式拍照 我猜想成像设备中列出的所有设备都具有相同的接口 可能是 TWAIN 并且具有向它们发送命令的标准方法 TWAIN可以做到吗
  • Rails 6 中是否必须手动将 ApplicationHelper 包含在 ApplicationController 中?

    控制器 class FooController lt ApplicationController def index bar method 应用程序助手 module ApplicationHelper def bar method 查看索
  • 如何禁止在Python中创建新的类属性?

    这可能看起来是一个非常基本的问题 但我在 SO 或其他地方找不到任何有用的东西 如果您参加内置课程 例如int or list 没有办法为它们创建额外的类属性 这显然是一个理想的行为 gt gt gt int x 0 Traceback m
  • 在 Django REST 框架中序列化内部方法字段

    例如 我有两个模型 Model1 and Model2 它们在模型级别上不通过任何关键字段直接相互关联 对于这两种模型 我都有序列化器 我正在寻找拥有的方式Model2查询集在Model1序列化器 例如 GET api model1 01
  • 无法在运行 apache 服务器上访问 http://localhost:80

    在 ubuntu 14 04 中运行 apache 服务器时我得到 This webpage is not available 在浏览器中或 curl 7 Failed to connect to localhost port 80 Con
  • 视图的高效“屏幕截图”?

    TL DR 自从getDrawingCache 似乎触发了一个完整的重绘View当启用硬件加速时 是否有其他方法获得Bitmap 或类似的东西 可以避免这种情况 也许是通过读取填充到 硬件 软件 层的数据View最后被抽到了 一些背景 自
  • 第一个 cURL 请求验证 GCM api 密钥

    目前正在尝试使用 GCM API 密钥构建我的第一个 Android 应用程序 一款营销软件将使用该密钥来发送推送通知 想要获得一些帮助 通过curl请求验证我的谷歌云消息 GCM API密钥 我尝试使用在线卷曲生成器 但结果与我期望的成功
  • Common Lisp 鼠标位置与 ltk

    我正在 Common Lisp 中制作一个简单的小程序 我想使用鼠标移动来控制它 我用 LTK 作为窗口 我找不到任何可以检索鼠标位置的函数 例如 Emacs Lisp 有 鼠标像素位置 我发现这在罗塞塔代码上 https rosettac