// ====================================================================== static void refresh_timer_callback(OSObject* owner, IOTimerEventSource* sender) { if (! remapclasses_) { IOLOG_ERROR("RemapClassManager::refresh_core remapclasses_ == NULL.\n"); return; } // ---------------------------------------- if (enabled_remapclasses_) { // call disabled_callback for (size_t i = 0; i < enabled_remapclasses_->size(); ++i) { RemapClass* p = (*enabled_remapclasses_)[i]; if (p && ! p->enabled()) { p->call_disabled_callback(); } } delete enabled_remapclasses_; } enabled_remapclasses_ = new Vector_RemapClassPointer(); if (! enabled_remapclasses_) return; // ---------------------------------------- KeyboardRepeat::cancel(); statusmessage_[0] = '\0'; isEventInputQueueDelayEnabled_ = false; for (size_t i = 0; i < remapclasses_->size(); ++i) { RemapClass* p = (*remapclasses_)[i]; if (! p) continue; if (p->enabled()) { enabled_remapclasses_->push_back(p); const char* msg = p->get_statusmessage(); if (msg) { strlcat(statusmessage_, msg, sizeof(statusmessage_)); strlcat(statusmessage_, " ", sizeof(statusmessage_)); } if (p->is_simultaneouskeypresses()) { isEventInputQueueDelayEnabled_ = true; } } } if (strcmp(statusmessage_, lastmessage_) != 0) { pqrs::strlcpy_utf8::strlcpy(lastmessage_, statusmessage_, sizeof(lastmessage_)); int index = BRIDGE_USERCLIENT_STATUS_MESSAGE_EXTRA; CommonData::clear_statusmessage(index); CommonData::append_statusmessage(index, statusmessage_); CommonData::send_notification_statusmessage(index); } }
// ====================================================================== static void refresh_core(OSObject* owner, IOTimerEventSource* sender) { IOLockWrapper::ScopedLock lk(lock_); if (! remapclasses_) return; // ---------------------------------------- if (enabled_remapclasses_) { delete enabled_remapclasses_; } enabled_remapclasses_ = new Vector_RemapClassPointer(); if (! enabled_remapclasses_) return; // ---------------------------------------- KeyboardRepeat::cancel(); statusmessage_[0] = '\0'; isEventInputQueueDelayEnabled_ = false; for (size_t i = 0; i < remapclasses_->size(); ++i) { RemapClass* p = (*remapclasses_)[i]; if (! p) continue; if (p->enabled()) { enabled_remapclasses_->push_back(p); const char* msg = p->get_statusmessage(); if (msg) { strlcat(statusmessage_, msg, sizeof(statusmessage_)); strlcat(statusmessage_, " ", sizeof(statusmessage_)); } if (p->is_simultaneouskeypresses()) { isEventInputQueueDelayEnabled_ = true; } } } if (strcmp(statusmessage_, lastmessage_) != 0) { KeyRemap4MacBook_bridge::StatusMessage::Request request(KeyRemap4MacBook_bridge::StatusMessage::MESSAGETYPE_EXTRA, statusmessage_); KeyRemap4MacBook_client::sendmsg(KeyRemap4MacBook_bridge::REQUEST_STATUS_MESSAGE, &request, sizeof(request), NULL, 0); strlcpy(lastmessage_, statusmessage_, sizeof(lastmessage_)); } }