From 543b1c644adce36fa4e2a83464efaa1ce8780481 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sat, 6 Apr 2024 13:32:59 -0400 Subject: [PATCH] Wire mouse events to the relevant class. --- Machines/Acorn/Archimedes/Archimedes.cpp | 7 +++++++ Machines/Acorn/Archimedes/Keyboard.hpp | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/Machines/Acorn/Archimedes/Archimedes.cpp b/Machines/Acorn/Archimedes/Archimedes.cpp index 51216513a..2621794a5 100644 --- a/Machines/Acorn/Archimedes/Archimedes.cpp +++ b/Machines/Acorn/Archimedes/Archimedes.cpp @@ -18,6 +18,7 @@ #include "../../AudioProducer.hpp" #include "../../KeyboardMachine.hpp" #include "../../MediaTarget.hpp" +#include "../../MouseMachine.hpp" #include "../../ScanProducer.hpp" #include "../../TimedMachine.hpp" @@ -322,6 +323,7 @@ class ConcreteMachine: public Machine, public MachineTypes::MappedKeyboardMachine, public MachineTypes::MediaTarget, + public MachineTypes::MouseMachine, public MachineTypes::TimedMachine, public MachineTypes::ScanProducer, public Activity::Source @@ -485,6 +487,11 @@ class ConcreteMachine: executor_.bus.keyboard().set_key_state(row, column, is_pressed); } + // MARK: - MouseMachine. + Inputs::Mouse &get_mouse() override { + return executor_.bus.keyboard().mouse(); + } + // MARK: - ARM execution static constexpr auto arm_model = InstructionSet::ARM::Model::ARMv2; using Executor = InstructionSet::ARM::Executor>; diff --git a/Machines/Acorn/Archimedes/Keyboard.hpp b/Machines/Acorn/Archimedes/Keyboard.hpp index 90b843eb5..8c953ffc7 100644 --- a/Machines/Acorn/Archimedes/Keyboard.hpp +++ b/Machines/Acorn/Archimedes/Keyboard.hpp @@ -11,6 +11,7 @@ #include "HalfDuplexSerial.hpp" #include "../../../Outputs/Log.hpp" +#include "../../../Inputs/Mouse.hpp" namespace Archimedes { @@ -144,6 +145,10 @@ struct Keyboard { } } + Inputs::Mouse &mouse() { + return mouse_; + } + private: HalfDuplexSerial &serial_; Log::Logger logger_; @@ -190,6 +195,12 @@ private: static constexpr uint8_t MACK = 0b0011'0010; // Last data byte acknowledge, disabling scanning but enabling mouse. static constexpr uint8_t SMAK = 0b0011'0011; // Last data byte acknowledge, enabling scanning and mouse. static constexpr uint8_t PRST = 0b0010'0001; // Does nothing. + + + struct Mouse: public Inputs::Mouse { + + }; + Mouse mouse_; }; }