Здравствуйте!
Вся моя семья работает удалённо. Супруга работает в крупной организации, в которой осуществляется мониторинг рабочего времени. Мониторинг реагирует на нажатие кнопок клавиатуры и колесо прокрутки мыши, с таймаутом 5 минут. Жена переболела COVID-19 и после болезни стала сильно уставать во время работы, поэтому позволяет себе небольшие перерывчики. На время этих перерывчиков она просит меня покрутить колесико мыши, но я бывает так увлекусь работой, что забываю это сделать. В связи с этим у меня возникло желание автоматизировать этот процесс.


Я вспомнил что у меня валяется Arduino Leonardo, а его легко запрограммировать на имитацию клавиатуры и мыши. Покопавшись в ящиках нашел его и запрограммировал на имитацию колесика мыши. Но жена меня раскритиковала, так как у них запрещается пользоваться не зарегистрированными USB устройствами (а Arduino обязательно вызовет вопросы). Поэтому было решено крутить колесико мыши механически, для чего был заказан шаговый двигатель 28BYJ-48 в комплекте с драйвером двигателя на микросхеме ULN2003 и взят из другого «пыльного» ящика Arduino Nano.

Рисунок 1. Шаговый двигатель 28BYJ-48 с драйвером на микросхеме ULN2003.
Рисунок 1. Шаговый двигатель 28BYJ-48 с драйвером на микросхеме ULN2003.

Подключил двигатель и кнопку к Arduno, двигатель запитывал как напрямую через Arduino, так и через внешний источник питания. Сейчас двигатель запитывается через Arduino (так меньше проводов висит, а Аrduino это терпит). Написал скетч (как смог) имитирующий прокрутку документа человеком при изучении сложного документа. Прокрутка осуществляется группами то в одну, то в другую сторону через разные промежутки времени. Запустить/остановить процесс скроллинга можно нажатием на кнопку или командами «START», «STOP» переданными по последовательному порту.

Рисунок 2. Схема подключения шагового двигателя (через драйвер) с питанием от Arduino.
Рисунок 2. Схема подключения шагового двигателя (через драйвер) с питанием от Arduino.
Рисунок 3. Схема подключения шагового двигателя (через драйвер) с внешним  питанием.
Рисунок 3. Схема подключения шагового двигателя (через драйвер) с внешним питанием.
#include<AccelStepper.h>
#include <SoftwareSerial.h>

#define HALFSTEP 8   
 
// Определение пинов для управления двигателем
#define motorPin1  2 // IN1 на 1-м драйвере ULN2003
#define motorPin2  3 // IN2 на 1-м драйвере ULN2003
#define motorPin3  4 // IN3 на 1-м драйвере ULN2003
#define motorPin4  5 // IN4 на 1-м драйвере ULN2003

// Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4 
// для использования AccelStepper с 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
String str = "START";

const int buttonPin = 12;     // Номер пина кнопки

const int minMaxSpeed = 800;
const int maxMaxSpeed = 1300;
const int minAcceleration = 500;
const int maxAcceleration = 700;
const int minSpeed = 700;
const int maxSpeed = 1000;
const int move = 600; // примерная длина одного перемещения
const int minPause = 1; // Минимальная пауза между группами прокруток (секунды)
const int maxPause = 3*60; // Максимальная пауза между группами прокруток (секунды)

long pos = 0;
int smove = move;
int sMaxSpeed = maxMaxSpeed;
int sAcceleration = maxAcceleration;
int sSpeed = maxSpeed;
unsigned msec = 1000;
bool PREV = false;
int dir = 50;
int count = 5;


void setup(){
  pinMode(LED_BUILTIN, OUTPUT); // Светодиод (красный) для сигнализации (светит - стоп, не светит - работа)
  
  Serial.begin(9600);
  Serial.println("start");
 
  stepper1.setMaxSpeed(sMaxSpeed);
  stepper1.setAcceleration(sAcceleration);
  stepper1.setSpeed(sSpeed);

  pinMode(buttonPin, INPUT_PULLUP); // Настройка кнопки
  stepper1.move(move);
}

int inputHandler(){ // Чтение команд из порта и отслеживание нажатия кнопки
  int res = 0;
    if (Serial.available() > 0) {
      str=Serial.readString();
      str.trim();
      Serial.println(">>>>>>>>>>>>>>>>>");
      Serial.println(str);
      res = 1;
    }

    buttonState = digitalRead(buttonPin);
    if (buttonState == LOW && PREV == HIGH ) {
        if (str=="START") {
          str = "STOP";
          Serial.println("Press button to 'STOP'");
          stepper1.move(0);
          res = 1;
        } else {
          str = "START";
          Serial.println("Press button to 'START'");
          res = 1;
        }
        delay(150);
    } 
    if (str!="START") {
      digitalWrite(LED_BUILTIN, HIGH);
    } else {
      digitalWrite(LED_BUILTIN, LOW);
    }     
    PREV = buttonState;
    return res;
    
}


int delayWithRead(unsigned ms){ // Пауза с обработкой ввода
  Serial.print("Delay = ");
  Serial.print(ms);
  Serial.println(" msec.");
  int time = 0;
  while (time<ms) {
    delay(100);
    if (inputHandler() == 1) {
      Serial.println("Press Key");
      delay(2000);
      return 1;
    }
    time += 100;
  }
  return 0;
}


 void printData(){ // Вывод данных в порт
    Serial.print("sMaxSpeed=");
    Serial.println(sMaxSpeed);
    
    Serial.print("sAcceleration=");
    Serial.println(sAcceleration);

    Serial.print("sSpeed=");
    Serial.println(sSpeed);

    Serial.print("count=");
    Serial.println(count);

    Serial.print("pos=");
    Serial.println(pos);

    Serial.print("smove=");
    Serial.println(smove);
}

void goNewPosition(){ // Обработик перехода на следующую позицию
    sMaxSpeed = random(minMaxSpeed, maxMaxSpeed);
    sAcceleration = random(minAcceleration, maxAcceleration);
    sSpeed = random(minSpeed, maxSpeed);
    stepper1.setMaxSpeed(sMaxSpeed);
    stepper1.setAcceleration(sAcceleration);
    stepper1.setSpeed(sSpeed);
    msec = random(100,500); // Пауза между скроллами в одной группе
    delayWithRead(msec); // Задержка с обработкой ввода
    count--;
    if (count<0) {
      Serial.println("*************************************");// Разделитель групп скроллов
      msec = random(minPause*10,maxPause*10)*100; // Пауза между группами скроллов
      delayWithRead(msec);
      dir = random(0,100);
      count = random(1,5);
    } else {
      Serial.println("_________________________________________");// Разделитель скроллов в одной группе
    }
    if (dir<35) { // Скролл назад с вероятностью 35%
      smove = 0 - move + (random(move/8) - move/16);
    } else {
      smove = 0 + move + (random(move/8) - move/16);
    }        
    pos = pos + smove; // Счетчик общего скролла
    
    printData();// Вывод данных в порт

    if (pos>100){ // Крутить только если чуть ниже стартовой позиции
      stepper1.move(smove); // Задать поворот относительно текущей позиции
    }
  
}


void loop(){ // Основной цикл
    inputHandler(); // Обработка ввода
    if(stepper1.distanceToGo()==0) { // Если поворот закончили
      if (str=="START") goNewPosition(); // Получаем следующую позицию
    }

    if (str=="START"){ // Если нет команды стоять то
      stepper1.run();  // Крутим движок 
    }
}

Из картона сделал футляр для мыши, к которому прикрепил Arduino и двигатель с ведущим колесом которое кладется на колесико мыши и вращает его.

Рисунок 4. Вид гаджета с одной стороны.
Рисунок 4. Вид гаджета с одной стороны.
Рисунок 5. Вид гаджета с другой стороны.
Рисунок 5. Вид гаджета с другой стороны.
Рисунок 6. Гаджет с подопытной мышью:)
Рисунок 6. Гаджет с подопытной мышью:)
Рисунок 7. Мышь в гаджете.
Рисунок 7. Мышь в гаджете.

Как работает устройство можно посмотреть в видео.

 Теперь, когда жене надо отлучиться, она вкладывает мышь в футляр и просто включает этот девайс.

Комментарии (99)


  1. DrBulkin
    07.12.2021 08:10
    +8

    Зря сюда написали. Теперь капчу добавят раз в 30 минут. Или думаете айтишники в компании жены не ходят на хабр?


    1. i360u
      07.12.2021 08:35
      +47

      Да пусть сразу пишут AI-античит. Когда накладные расходы на тайм-трекинг попрут по экспоненте - может до них дойдет, что это так себе модель отношений с сотрудниками...


      1. EvilBeaver
        07.12.2021 10:37
        +6

        сдается мне, в компаниях, в которых такие политики безопасности, бюджеты безопасников и таймтрекерщиков - бесконечные


  1. Sergey-S-Kovalev
    07.12.2021 08:12
    +14

    # Powershell
    # Эмуляция активности
    
    $res = 1
    Add-Type -MemberDefinition '[DllImport("user32.dll")] public static extern void mouse_event(int flags, int dx, int dy, int cButtons, int info);' -Name U32 -Namespace W;
    
    Do {$time = Get-Random -Minimum 1 -Maximum 15
    
        Start-Sleep -Seconds $time
        # Дергать мышкой
        [W.U32]::mouse_event(6,0,0,0,0);
    
        Start-Sleep -Seconds $time
        [System.Windows.Forms.SendKeys]::SendWait("{NUMLOCK}")
    
        Start-Sleep -Seconds $time
        # Набирать текст
        'text_here'.ToCharArray() | ForEach-Object {[System.Windows.Forms.SendKeys]::SendWait($_)}
    
        } UNTIL ($res -EQ 10)


    1. n0isy
      07.12.2021 08:20
      +10

      Не зная каким ПО отслеживают нажатия, опасно предлагать всякие софтверные варианты. Хотя бы из-за того, что их могут "спалить".


    1. Polaris99
      07.12.2021 12:19
      +6

      А как же без Ардуино??


    1. alexraven
      08.12.2021 01:57

      На продвинутых тайм трекерах это не сработает. Они как-то умеют отличать реальные перемещения мыши от эмуляции ивентов. Затрудняюсь сказать, как это реализовано, но на Upwork например, это точно не сработает. А могут еще и забанить.


      1. unsignedchar
        08.12.2021 08:52

        Они как-то умеют отличать реальные перемещения мыши от эмуляции ивентов.

        Живой человек никогда не возит мышку по прямой. Не умеет в постоянную скорость и ускорение. Немного сдвигает мышку при клике. В некоторые области экрана человек кликает чаще.

        Это то, что проще всего измерить.


      1. Carburn
        08.12.2021 18:57

        что на upwork делают?


  1. Javian
    07.12.2021 08:21
    +37

    Можно было мышь класть оптическим сенсором на циферблат стрелочных часов с секундной стрелкой.

    фото


    1. 3epg
      07.12.2021 08:27
      +4

      Видимо это лайфхак работодатели уже знают, поэтому, как указано в статье, мониторят скролл. ))


      1. BigBeerman
        07.12.2021 09:06
        +5

        А если я ползунком скроллю или скролл сломался? Всё, работник бездельничает?


        1. aamonster
          07.12.2021 10:25
          +3

          На ползунке же будут mousedown/mouseup.


        1. shibanovan
          07.12.2021 10:27
          +5

          То такой работадатель скажет, что вы неправильный сотрудник и должны скролить колесиком)


      1. sirocco
        07.12.2021 09:36
        +3

        Работодатели используют какое-то ПО. Неизвестно какое? У меня в доп соглашении прописано, что используется ПО для определения эффективности сотрудников... и в конце название 'Стахановец'. Думаю не особо трудно нарыть как именно конкретное ПО мониторит, исходя их этого делать анти..анти...

        Или но у нас не it компания. Или в it компаниях не используют готовые решения, а изобретают свои велосипеды под грифом "секретно"?


        1. RZimin
          07.12.2021 19:08
          +2

          "Стахановец", сначала подумал какой тонкий стеб. А потом... «Стахановец» — официальный резидент инновационного центра «Сколково»

          Где-то мы свернули не туда...


    1. Pochemuk
      07.12.2021 14:07

      Попробовал — не получается. Может быть стекло бликует.


  1. 3epg
    07.12.2021 08:23
    +12

    Что-то новое из мышедрыга. А я уж хотел написать, что можно под мышку подложить смартфон с включённым роликом на ютубе, тогда она сама дёргается. )) Либо купить дешевую мышь типа DEXP, ту без всяких лайфхаков колбасит по всему экрану.


    1. Nahrenako
      07.12.2021 12:41
      +2

      На Амазоне таких девайсов на любой вкус, и электронные эмуляторы мыши и подставки под мышь с вращающимся колесиком…


  1. Gengenid
    07.12.2021 08:30
    +5

    Но жена меня раскритиковала, так как у них запрещается пользоваться не зарегистрированными USB устройствами

    Можно же прописать VID, HID и прочее от существующей мыши, компьютер не заметит подмены. Но, конечно, у этого способа есть тот недостаток, что для работы придется постоянно менять местами мышь и эмулятор в USB порту.


    1. Squoworode
      07.12.2021 09:29
      +3

      Тогда надо ещё реализовать работу реальной мыши сквозь эмулятор, чтобы не менять местами!

      Хотя физический интерфейс, конечно, намного проще в реализации.


      1. Stalker_RED
        07.12.2021 15:06
        +6

        Можно переключать тумблером.


    1. skymal4ik
      07.12.2021 11:12
      +2

      Я бы предложил подключить реальную мышь и фейковую на ардуино одновременно. Тогда и в вашем случае не надо передёргивать их, и автор мог бы не класть/доставать мышь в картонную коробку постоянно.


    1. SGordon123
      07.12.2021 13:11

      А зачем менять? В компе может быть хоть дюжина мышей, предусмотреть чисто переключатель вкл/выкл...


      1. Iv38
        07.12.2021 14:03

        Если ПО мониторинга активности, как сказано в статье, нервно реагирует на левые железяки, значит оно за железяками тоже наблюдает. И появление второй мышки - палево.


        1. namikiri
          07.12.2021 16:46

          А постоянное передёргивание устройства USB норм? Вариант с сигналом насквозь кажется самым беспалевным.


          1. Iv38
            08.12.2021 18:47

            Не, не норм. Проксирование лучше, да.


  1. hssergey
    07.12.2021 08:41
    +27

    Оценивать сотрудника надо по результатам, не по тому как он дергает мышкой. Поэтому напишите, где жена работает, страна должна знать своих "героев".


    1. sirocco
      07.12.2021 09:44
      +3

      Ну если кроме его жены брать, то список будет огромен. Плюс огромные проекты, результат которых может быть оценён только через много времени, за этот период могут и несколько сотрудников поменяться.


    1. sim31r
      07.12.2021 10:09
      +5

      Работодатель возможно так и делает. А на результаты работы трекера и не смотрит. Я такой эффект видел от видеокамер, даже если они не работают, сотрудники указывают на них и говорят что сюда проходить нельзя, всё под контролем. А я эти камеры настраивал и знал что они не рабочие )

      Тут тоже может быть что-то подобное. Многих сотрудников это дисциплинирует. Некоторые сотрудники, если остаются без присмотра расслабляются, что вредит работе.


      1. aamonster
        07.12.2021 10:31
        +1

        Я себе, когда понадобилось уйти на удалёнку, сам трекер поставил (без слежения за мышью – просто отметки начала/конца задачи и перерывы). И результаты никому не показывал :-), только списывал с него список "чем занимался сегодня" в письмо начальнику.

        Правда, при этом рабочего времени получается больше, чем в офисе...


        1. Carburn
          07.12.2021 10:34

          больше 8 ч?


          1. aamonster
            07.12.2021 10:52
            +4

            Регулярно :-)
            В офисе-то 8 часов работы за день обычно не случается.


        1. SlimShaggy
          07.12.2021 23:17

          У нас в джире стоит плагин Tempo, в нем такой ручной трекер из коробки. Работаем гибридно офис-дом-офис, из дома тоже в результате рабочий день заканчивается заметно позже)


    1. RigidStyle
      07.12.2021 12:41
      +1

      Нормальные компании используют ТТ в качестве вспомогательного, а не основного инструмента. Если сотрудник выдает результат и хорошо работает, никто не будет обращать внимание на то, что он сериалы смотрит во время работы. Но если же у него показатели ниже среднего, вот тогда и нужен ТТ, что бы провести первичный анализ его работы.


  1. usa_habro_user
    07.12.2021 08:41
    +1

    Хмм, вы поосторожнее с этим: а что, если монитор также записывает и отсылает нажимаемые клавиши, а еще, периодически, и скриншоты экрана? Уволят-с по статье...

    P.S. Хотя непонятно, чем занимается жена: если она программист, то какое дело организации, как она проводит свое время за компьютером? Лишь бы спринты on time завершала, да issues фиксила - какой смысл мониторить-то?


    1. Carburn
      07.12.2021 09:07

      Это устройство на мониторе не отображается.


    1. sim31r
      07.12.2021 10:12
      +6

      Она может быть в технической поддержке, например и быстро реагировать на возникающие задачи. И даже если их нет быть готовой обработать запрос.

      Программисты и любые сотрудники могут быть несколько инфантильными. Под присмотром работают хорошо, без присмотра отвлекаются и производительность падает. Не у всех высокая самодисциплина. Даже мало у кого, на Хабре сотни статей про прокрастинацию (ну и многие тут в рабочее время даже при наличии задач рабочих).


    1. Amor-roma
      07.12.2021 15:11

      Уволить удаленщика то ещё приключение))

      Если есть желание можно проконсультироваться с юристом))

      Зачастую это невозможно...!))

      Даже если бухать до невменяшек, и мышкой не елозить.


  1. Assargin
    07.12.2021 08:46
    +5

    Если есть кот в доме, то можно просто давать ему мышь во время перерывов - ещё и премию в итоге дадут за гиперактивность.


  1. ZlobniyShurik
    07.12.2021 09:25
    +12

    Даёшь стартап по производству девайса для отслеживания нерадивых работников:

    • Шапочка с электродами для снятия мозговой активности

    • ошейник с электрошокером

    • Динамик с фразой "Работай, раб, солнце ещё высоко!"

    • Блок управления с модной нейросеткой (иначе инвесторы не клюнут).


    1. sim31r
      07.12.2021 10:22
      +2

      С другой стороны работодатель так может улучшить условия труда, снизить стресс, победить совместно прокрастинацию, выгорание. Вот соседняя стятья на Хабре, сотрудники сами делают почти то же самое, тайм трекер выбирают для повышения КПД работы.

      Статья про электроды тоже была, отзывы от энтузиастов самые высокие, заменяет таблетки и прочее. У меня статья в закладках в избранном ))

      Работай, раб, солнце ещё высоко

      Как вариант сделать работу в 3 раза быстрее и заниматься своими делами. Набор методов для повышения эффективности. В противовес восточному, когда надо сидеть на работе 12 часов и имитировать работу. Придти раньше начальника, уйти позже, но и всё на этом.


      1. maledog
        07.12.2021 11:30
        +1

        Как вариант сделать работу в 3 раза быстрее и заниматься своими делами.

        Не пойдет. Если на работу затрачена только треть времени - получите треть оплаты.


        1. cpcat
          07.12.2021 23:05
          +1

          И тройную норму в следующем периоде.


    1. AADogov
      07.12.2021 10:27
      +2

      Вы зря иронизируете. Уже разрабатываются решения для прокторинка, которые идентифицируют почерк на клавиатуре. И заявляется о проведении исследований о мозговой активности .


    1. dvrpd
      07.12.2021 13:46
      +1

      Да что уж там, можно и полноценный wage cage разработать.
      image


  1. sirocco
    07.12.2021 09:49
    +6

    Надо открывать вакансии: "требуется человек, который за небольшую оплату может изображать работу человека за компьютером, пока вы отдыхаете", #удалённо,#работанадому,#домохозяйкам...


    1. 3epg
      07.12.2021 10:15
      +22


  1. unsignedchar
    07.12.2021 09:57
    +1

    Странная система трекинга, учитывающая только скролл мыши. Наверное, серверную часть делал тот же автор :)


    1. sim31r
      07.12.2021 10:23
      +1

      Возможно система только для мотивации сотрудников. Я такой эффект видел от неработающих(!) видеокамер. Под ними растет дисциплина сама собой ))

      То есть система вообще ничего не учитывает и результаты особо ни кто не читает. Типа сотрудники под контролем и более не требуется. Остальное по результатам работы.


    1. Chuviks2
      07.12.2021 16:03

      А что странное то?


      1. unsignedchar
        07.12.2021 16:45

        А что странное то?


        Учитывать ТОЛЬКО скролл и не учитывать всю остальную мышку.


        1. Nikita_64
          07.12.2021 18:43

          Скролла достаточно: вот я сижу и старательно скролю комментарии в этой ветке, а не перескакиваю со страницы на страницу. Перескакивание означает несконцентрированное внимание. :-)


          1. unsignedchar
            07.12.2021 21:13

            Вы молодец ;) Вы на удаленной работе специализируетесь только на вдумчивом скролле комментариев? :)


  1. iiwabor
    07.12.2021 10:14
    +3

    Моя двоюродная сестра работает в такой компании, мы сидели в кафе и она машинально стаканчиком с кофе делала круговые движения(((

    У них еще делают периодические скриншоты с экрана, но начальство их смотрит, если только надо кого-то нагнуть или оштрафовать - в обычном режиме только активность мышки отслеживается.

    У нас мерой работы считают усталость...


    1. LevPos
      07.12.2021 10:34
      +18

      Здесь мерилом работы считают усталость

      (извиняюсь за занудство)


      1. Earthsea
        07.12.2021 13:35
        +3

        Здесь мерилом работы считают усталость

        (извиняюсь за занудство)

        А если рубить дрова лопатой, дадут надбавку?


        1. Xo4y_3uMy
          07.12.2021 16:40

          Да.
          Это называется "перфоманс" и/или "уникальная технология"


        1. stitrace
          09.12.2021 10:01

          Как и во всех остальных случаях с современными продуктами, все зависит от талантов маркетологов.


    1. GospodinKolhoznik
      07.12.2021 16:27

      Лютая жесть, конечно.

      Ну а в чем проблема, чтобы на экране все время был открыт редактор кода/ТЗ/нормативно правовой документ по выбору. Ну и чтобы мышь с хаотичным интервалом от 10 до 60 секунд скролила в случайном направлении.


  1. sim31r
    07.12.2021 10:15
    +3

    На ардуинке можно сделать эмулятор USB HID устройства и гонять мышку/клавиатуру без механических костылей. Есть же статьи на Хабре по ссылке и много где еще. Механика конечно более DIY, но эмулятор практичней.


    1. little-brother
      07.12.2021 10:28
      +2

      Как мне кажется, еще лучше было бы просто разобрать мышку и присоединить ардуино непосредственно к энкодеру поворота колеса, запитав её от питания мышки. Еще можно добавить сенсорный датчик (кусок фольги), чтобы ардуино не вмешивалась в работу пока рука лежит на мышке.


      1. Javian
        07.12.2021 10:39
        +1

        Можно сэкономить на моторе, его драйвере и неком адаптере штока двигателя на энкодер, просто подсоединив две оптопары вместо энкодера для его эмуляции.


  1. anticyclope
    07.12.2021 10:21
    +53

    Неправильно ты, дядя Федор, шаговик питаешь. Ты питание с ардуины взял, а надо валить из этой конторы.


    1. GospodinKolhoznik
      07.12.2021 16:18

      Может валить и не надо. Но вот демонстративно положить болт на этот трекинг дело обязательное. А валить, или нет уже будет зависеть от реакции начальства. Если никакой реакции не последует, значит хорошие сапоги, надо брать. А вот если начнется говнецо, тогда да, пора сматывать удочки.


  1. Redwid
    07.12.2021 11:01

    На Амазоне продается полно таких устройств которые дёргают мышь или перемещают курсор. Есть с кнопками вкл/выкл. Ищутся по ключевому слову mouse wiggler.

    Не известно можно ли там Id устройства поменять на мышиное, или оно там уже такое.


    1. Carburn
      07.12.2021 13:15

      Нужно колесико крутить.


  1. SnakeSolid
    07.12.2021 11:31

    Решал подобную задачу на клоне stm32 эмулируя USB мышку. Несмотря на то, что это было отдельное устройство жалоб, за два месяца на эту "мышку" не было.


  1. Indemsys
    07.12.2021 11:58
    +1

    Думается мне, был бы неплох в этой роли более радикальный дивайс.
    Что-то из линейки STM32 DISCO с дивайсом и хостом HID одновременно.
    Штатную мышь в DISCO, а DISCO c полной эмуляцией дескрипторов мыши в компьютер.

    Дивайс кроме эмуляции мог бы сам логировать все движения. Плюс, так легче было бы обучать дивайс заданным траекториям движений и нажатий. Там и демки уже есть готовые для HID хоста и HID дивайса.


    1. mihmig
      07.12.2021 12:39

      Уважаемые советчики заменить Ардуину на STM32!
      Может посоветуете обучающие материалы (youtube, блоги) с которыми можно ознакомиться и войти в чудесный мир (т.е. собрать на макетке прототип) STM-а за вечер выходного дня?


      1. RTFM13
        07.12.2021 20:33

        Смотря что он должен делать.

        Поморгать светодиодиком на каком-нибудь nucleo-32 займёт 0,5-1 часа практически с нуля. В плане входа оно наверное даже проще ардуины. Правда для чего-то серьезнее крутилки колёсика мышки я бы его не очень советовал использовать.


    1. kenny5660
      07.12.2021 16:34

      С дескрипторами только недели 2 нужно разбираться, там черт ногу сломит, это не Serial.println()


      1. JerleShannara
        08.12.2021 03:06

        Включаем тотальный Arduino-Way: ставим CubeMX, тыкаем в нём «USB-HID», на выходе получаем проект с USB мышью, которая крутит курсором. До этого места ни единой строчки кода писать руками не пришлось, но далее прийдется, немного дописывания и крутилка колеса готова.


        1. Carburn
          08.12.2021 21:10

          Почему не Mbed?


          1. JerleShannara
            08.12.2021 21:59

            Cube ставится в духе «один клик и готово».


  1. oragraf
    07.12.2021 12:41

    Можно привязать дешевую мышь к роботу-пылесосу.

    Зы. Но так то это бред, конечно.


  1. c0nstruct0r
    07.12.2021 12:41
    +1

    Мда, сталкивался с аналогичной компанией. проработал там недолго. По моему такой учет эффективности сотрудников от безграмотности менеджеров. Цель видимо не задачи выполнять а на рабочем месте присутствовать и "имитировать бурную деятельность". Желаю Вам найти компанию получше.


    1. pythoned195
      07.12.2021 13:01

      они специально же это делают - дефективные менеджеры их зовут, https://habr.com/ru/company/crossover/blog/428592/


  1. red_elk
    07.12.2021 13:27

    Теперь глядишь, жену сотрудником месяца объявят.


    1. LevPos
      07.12.2021 13:39

      Думаете другие сотрудники не делают что-то похожее?


  1. da-nie
    07.12.2021 17:32

    А просто поставить ПО для движений мышки?

    Заголовок спойлера
    ...
    //----------------------------------------------------------------------------------------------------
    //событие таймера
    //----------------------------------------------------------------------------------------------------
    void CWndMain::OnTimer(HWND hWnds,WPARAM wParam,LPARAM lParam)
    {
     if (MouseMoveCounter>0)//запрещено управление мышкой
     {
      MouseMoveCounter--;
      if (MouseMoveCounter==0) GetCursorPos(&Cursor);
      return;
     }
    
     POINT CursorNew;
     GetCursorPos(&CursorNew);
    
     long dx=Cursor.x-CursorNew.x;
     long dy=Cursor.y-CursorNew.y;
     long length=dx*dx+dy*dy;
     if (length>10*10)//кординаты мышки не соответсвуют заданным значит, оператор двигает мышку 
     {
      MouseMoveCounter=MOUSE_MOVE_COUNTER_MAX_VALUE;
      return;
     }
    
     //двигаем мышку 
     HWND hWnd_Desktop=GetDesktopWindow();
     RECT rect;
     GetWindowRect(hWnd_Desktop,&rect);
    
     long center_x=(rect.right+rect.left)/2;
     long center_y=(rect.bottom+rect.top)/2;
     long screen_width=(rect.right-rect.left);
     long screen_height=(rect.bottom-rect.top);
     float width=screen_width/4;
     float height=screen_height/4;
    
     long mouse_x=static_cast<long>(width*cos(M_PI/180*Angle)+center_x);
     long mouse_y=static_cast<long>(height*sin(M_PI/180*Angle)+center_y);
     Angle++;
     Angle%=360;
     Cursor.x=mouse_x;
     Cursor.y=mouse_y;
     long abs_x=static_cast<long>((mouse_x*65536.0)/screen_width);
     long abs_y=static_cast<long>((mouse_y*65536.0)/screen_height);
     mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE,abs_x,abs_y,0,0);
    }
    ...



  1. pyrk2142
    07.12.2021 19:52

    Имхо, эта статья и комментарии к ней невероятно вредны в перспективе. Со стороны работодателя или руководителя это выглядит довольно так себе: компания честно организовала удаленную работу (хотя способов официально держать людей в офисе довольно много, неофициальных - ещё больше). В итоге в статье сначала рассказывают о перерывчиках, держании мышки мужем (это ещё и нарушение требований ИБ в половине компаний), потом об автоматизации псевдоактивности, а в комментариях - гора советов по другим способам обмана, железкам и примерам. После такого вам, как руководителю, захочется организовывать или продлевать удаленку, особенно если вы не уверены в решении?

    Да, люди устают даже на удаленной работе, да, после болезни работать тяжело, без отпуска тоже. Это повод обсуждать условия труда, предлагать какие-то варианты, договаривать. Но не повод втыкать железки, писать код и крутить колесики, чтобы изображать, что вы что-то делаете. В следующий раз в офис пойдёте и вы, и сосед, который честно работает весь день, не прогуливает и распределяет перерывы.


    1. da-nie
      07.12.2021 20:13

      «Здесь мерилом работы считают усталость»

      ;)

      P.S. А, уже было выше в комментарии. :)


    1. usa_habro_user
      07.12.2021 20:44

      И это пишет человек, опубликовавший статьи с заголовками:
      "Подделываем письма от крупнейших российских банков"
      "Поговорим о безопасности хостингов: как я мог взломать десятки тысяч сайтов"
      "Очередной обход авторизации в публичных Wi-Fi сетях"


      1. pyrk2142
        07.12.2021 20:51

        Если честно, не понимаю, как связаны мои статьи и этот комментарий.


        1. usa_habro_user
          07.12.2021 21:52

          Имхо, эта статья и комментарии к ней невероятно вредны в перспективе.

          Как там в Библии, "Что ты смотришь на сучок в глазе брата твоего, а бревна в твоем глазе не чувствуешь?" Вы уж "или крестик снимите, или трусы подтяните" - упрекая автора поста в "невероятной вредности", вы с чистым сердцем оповещаете публично об уязвимостях, приводя названия конкретных банков. Впрочем, проглядел ваши статьи - там, похоже, только лишь кликбейтные заголовки...


          1. pyrk2142
            07.12.2021 22:44

            С моей точки зрения, есть принципиальная разница между публикацией информации об уже известных уязвимостях, которые уже активно используются злоумышленниками, для которых известны стабильные работающие исправления, но которые компании игнорируют, и публикацией того, как люди обходят требования работодателей, симулируя деятельность. Я принципиально не публикую утечки данных, неизвестные уязвимости или те проблемы, которые компании хотят закрыть, но не успевают.


            1. usa_habro_user
              09.12.2021 06:01

              С моей точки зрения

              Я не знаю, с чьей точки зрения, но за вот эту вот вашу статью, вас, по идее, по идее, можно "упаковать" лет эдак на ... N (даже если допустить, что сведения, приведенные вами, не соответствуют действительности на настоящий момент). В сравнении с "хаком", изложенным автором этой статьи, это просто детская шалость в сравнении с "наставлением по финансовому терроризму" ;)

              P.S. Лично я на вас "стучать" не собираюсь :D


    1. melodictsk
      08.12.2021 10:30

      Тоже хотел было сделать что-то подобное. Но не мышку, а чтоб эмулировала ввод с клавиатуры, текстовый на флешку и погнал вводить, пока отдыхаю.

      А все почему? В офисе работаем 9-10 часов, на удалёнке по 12, а потом когда делается анализ и вам говорят, что у вас активности всего на 6 часов и предупреждение, что ещё раз и порежут премию, то и не такое в голову прийдёт. Сделать не успел, удалёнка закончилась.


  1. andruxxx
    08.12.2021 08:40

    какраз недавно попадалась статья-эмуляция клавиатуры и мыши на ардуине. подключается как HID, и делает всё что хочешь. только кофе не варит. и не надо доп механики.


  1. VXP
    08.12.2021 09:08

    Почему не AutoHotkey?


    1. Serg10
      08.12.2021 11:26

      Выше уже писали про это


  1. TheMrWhite
    08.12.2021 12:38

    С такой работы лучше уволиться, а не пытаться налюбить систему


  1. FatalStrike
    08.12.2021 12:38

    Arduino BS Micro + несколько строчек кода с использованием arduino классов Mouse, Keyboard. Маленькая, удобная как флешка, воткнул в порт и пошёл.


    1. alextrof94
      08.12.2021 18:09

      Прочитайте статью внимательнее. Второй абзац. Но да... Можно просто устройству коды (вендор и ещё какой-то) подставить от актуальной мыши и клавы, чтобы винда думала, что это никакая не кастомная мышь, а такая же, как подключена, но автор об этом не вкурсе. Увидев заголовок, первую картинку и что есть леонардо, сразу хочется написать подобный коммент.


      1. FatalStrike
        08.12.2021 18:21

        Да, пропустил момент с тем, что фиксируются подключенные USB устройства. Но уверен и простое решение с bs micro кому-то пригодится.


  1. GomelKiev
    08.12.2021 19:27

    Мой друг клал мышь на массажное кресло :)


  1. TimoshkinVlad
    08.12.2021 20:01

    Прицепить мышу к роботу пылесосу)


  1. mkvmaks
    08.12.2021 22:01
    +1

    Вибростол, на него мышь и вперед катать скрол не по прямой.