【发布时间】:2017-07-03 01:48:16
【问题描述】:
假设,我在 1950 年代或 1960 年代。我在可用的编程语言中没有太多可用的工具,例如 PASCAL 或 FORTRAN 或 ALGOL,并且直到最近才引入和发明了“计算机鼠标”,并且直到最近它们才与计算机一起提供并连接到我电脑的一个特定端口我可以在电脑屏幕上看到一个“小箭头”(让它甚至是一个 CRT 屏幕,希望你会因为与实际年表不同步而放松一下)按照我移动的方式移动老鼠 。
现在我想拥有可以控制屏幕上鼠标指针的计算机程序。假设我想编写一个计算机程序,它将鼠标指针的移动方向与我移动鼠标的方向相反,或者一个计算机程序将指针在鼠标屏幕上冻结几秒钟,或者一个计算机程序来改变当鼠标移动到屏幕的特定部分时鼠标指针的形状。
鉴于此要求,我的语言将如何与系统交互以控制鼠标指针。是否会更改我的语言的编译器以添加更多指令(或方法或函数),从而产生控制鼠标指针的机器代码?
【问题讨论】:
-
在 50 年代和 60 年代没有 Pascal,Algol 也没有在 50 年代,更少使用 方法 的 OOP。它们也远离我们现在所知道的个人电脑、鼠标指针和图形。撇开所有这些错误:不清楚你想问什么。如果您能指出处理鼠标事件的 x86 指令,也许会有所帮助。指令集文档是免费提供的。
-
鼠标指针通常由操作系统管理,它是对鼠标输入事件做出反应并根据需要绘制指针的操作系统。因此,要影响指针运动,您只需要重写鼠标处理程序。万一你有一个奇怪的硬件鼠标光标,它必须支持你想要的功能,并且必须有一种方法来请求这样的服务。您将使用您已有的与设备通信的常规方法来实现这一点,无需更改编译器。
-
@Jester:错了。大多数操作系统不关心鼠标,这留给了 GUI。只有单一的、破碎的操作系统才能以这种方式将控制台应用程序与 GUI 的东西组合在一起。 Clean OS 允许在没有 GUI 的情况下运行,例如用于服务器应用程序和其他无头用途(例如嵌入式)。
-
关键是,鼠标设备只发送软件然后处理的事件,以最终在适当的时候绘制指针。因此,要改变这种行为,您只需在两者之间更改软件,并且该软件已经使用普通可用工具编写。
-
@Jester:但操作系统本身是用某种语言编写的计算机程序。我的目的是了解高级计算机语言如何缓慢地提出使用户能够控制某些外部物理设备的指令。所以我想追溯这些步骤。