next up previous contents
下一个: 9.2 调制解调器编程 向上: 9 编程 I/O 端口 上一个: 9 编程 I/O 端口

9.1 鼠标编程

鼠标可以连接到串行端口或直接连接到 AT 总线,不同类型的鼠标发送不同类型的数据,这使得鼠标编程有点困难。但是,Andrew Haylett 非常友善地为他的选择程序添加了慷慨的版权声明,这意味着您可以将他的鼠标例程用于您自己的程序。在本指南中,您可以找到带有版权声明的 selection-1.8 预发布版本。X11 已经提供了舒适的鼠标 API,因此 Andrew 的例程应该仅用于非 X11 应用程序。
您只需要 selection 包中的模块 mouse.c 和 mouse.h。要获取鼠标事件,您基本上必须调用 ms_init() 和 get_ms_event()。 ms_init 需要以下 10 个参数

  1. int 加速度
    是加速度因子。如果您移动鼠标超过 delta 像素,运动速度会根据此值加快。
  2. int 波特率
    是您的鼠标使用的 bps 速率(通常为 1200)。
  3. int delta
    这是您必须移动鼠标才能开始加速的像素数。
  4. char *device
    是您的鼠标设备名称(例如 /dev/mouse)。
  5. int 切换
    在初始化时切换 DTR、RTS 或 DTR 和 RTS 鼠标调制解调器线路(通常为 0)。
  6. int 采样率
    鼠标的分辨率 (dpi)(通常为 100)。
  7. mouse_type 鼠标类型
    已连接鼠标的标识符,例如我的鼠标的 P_MSC (Mouse Systems Corp.) ;)。
  8. int 裕量
    用于环绕的裕量大小,这意味着如果裕量为 -1,则尝试将鼠标移过屏幕边界会将鼠标留在边界处。值 >= 0 表示在鼠标向边界移动 slack 像素后,鼠标光标将环绕到另一端。
  9. int maxx
    当前终端在 x 方向上的分辨率。使用默认字体,一个字符宽 10 像素,因此总体的 x 屏幕分辨率为 10*80-1。
  10. int maxy
    当前终端在 y 方向上的分辨率。使用默认字体,一个字符高 12 像素,因此总体的 y 屏幕分辨率为 12*25-1。
get_ms_event() 只需要一个指向 ms_event 结构体的指针。如果 get_ms_event() 返回 -1,则发生错误。如果成功,它返回 0,并且 ms_event 结构体将包含实际的鼠标状态。


next up previous contents
下一个: 9.2 调制解调器编程 向上: 9 编程 I/O 端口 上一个: 9 编程 I/O 端口

转换于
Fri Mar 29 14:43:04 EST 1996