Sec mouse btn что это
8 мая. 2015 в 10:58
The graphics in this game amazing, but the controls is hard hard to get, there is so cool many much combinations.
Im in the first training, shooting range, got the RCO optics, know to use just the "top" view from the RCO equipment. how I can use my Scope for hit the Long Range target??
Hold Breath "Hold Sec, Mouse Btn".
Optics "Sec. Mouse Btn"
Optics Temporary "Sec. Mouse Btn".
Optics Mode "Left Ctrl+Sec. What is the "Sec" button please?
Thanks for help :\
8 мая. 2015 в 11:23
8 мая. 2015 в 11:31
The sec mouse button means the right mouse button if you are using a right handed mouse setup.
To switch between scopes with a dual scope setup, hit left ctrl+right mouse button.
PVS-Studio и RPCS3: лучшие предупреждения в один клик
Best Warnings — режим анализатора, оставляющий в окне вывода 10 лучших предупреждений. Мы предлагаем вам ознакомиться с обновлённым режимом Best Warnings на примере проверки проекта RPCS3.
Best Warnings — это специальный механизм для первого знакомства со статическим анализатором PVS-Studio. Полный лог анализатора может содержать тысячи предупреждений. Поэтому если вы хотите оценить работу анализатора и не тратить время и силы на просмотр большого отчёта, выданного ещё не настроенным анализатором, то вы как раз можете воспользоваться механизмом Best Warnings. Для этого откройте лог анализатора в плагине PVS-Studio для Visual Studio и включите Best Warnings:

При использовании Best Warnings отображаются 10 лучших предупреждений анализатора. Вот так стало выглядеть окно вывода после включения Best Warnings:

Второй проблемой были неинтересные предупреждения в окне вывода Best Warnings. Отчасти это вызвано тем, что мы сами забыли про свою собственную фичу и не добавляли веса для новых диагностик. Оказалось, что 15 новых диагностик просто не участвовали в режиме Best Warnings. Разумеется, мы это исправили. Также мы посмотрели, какие предупреждения выдаёт режим Best Warnings на различных Open Source проектах, и изменили старые веса диагностик, чтобы предупреждения стали интереснее.
Третьей проблемой были «дубликаты». Не очень интересно видеть два и более предупреждений одного и того же диагностического правила в Best Warnings. Механизм для удаления дубликатов уже был — веса второго и последующих предупреждений диагностики пропорционально уменьшались. Мы увеличили штраф для повторных срабатываний, и теперь они появляются реже.
Более подробно о Best Warnings можете прочитать здесь.
Немного о RPCS3
RPCS3 — это эмулятор консоли PS3. Мы уже проверяли этот проект ранее. Кодовая база проекта составляет 300 тысяч строк кода на C++, и этого вполне достаточно для демонстрации Best Warnings. Для проверки я зафиксировал проект на коммите e98b07d.
Давайте перейдём к ошибкам.
Лишние вычисления при постановке таймера
V1064 The ‘nsec’ operand of the modulo operation is less than the ‘1000000000ull’ operand. The result is always equal to the left operand. Thread.cpp 2359
Здесь механизм анализа потока данных смог выявить интересную аномалию. В данном фрагменте кода происходит следующее:
проверяются несколько условий, в том числе usec <= 1000;
переменной nsec присваивается значение usec * 1000;
вычисляются выражения nsec / 1’000’000’000 и nsec % 1’000’000’000.
Из первых двух пунктов получаем, что значение переменной nsec не превосходит 1’000’000, что меньше 1’000’000’000. Получается, что выражение nsec / 1’000’000’000 всегда равно 0, а выражение nsec % 1’000’000’000 равно nsec.
Далее вычисленные значения используются для установки таймера при вызове функции timerfd_settime. В функцию wait_for передают количество миллисекунд, в течение которых нужно ждать. В переменную nsec записывается это же значение, только в наносекундах, поэтому умножаем на 1’000. Операции взятия остатка и деления на 1’000’000’000 — выделение дробной части и целого количества секунд соответственно. Скорее всего, в функцию wait_for должны приходить значения, не превосходящие 1’000 миллисекунд (т.е. меньше секунды), на это указывает проверка usec <= 1’000. Поэтому выделять целую и дробную часть бессмысленно, и это лишние вычисления.
Противоречащие проверки
V637 Two opposite conditions were encountered. The second condition is always false. Check lines: 385, 387. lv2_socket_p2ps.cpp 385
Анализатор обнаружил два противоречащих друг другу условия, вложенных одно в другое. Действительно, условия backlog.size() < max_backlog и backlog.size() >= max_backlog не могут быть оба выполнены одновременно. Поэтому выражение вложенного условия всегда будет ложным. Скорее всего, эта ошибка возникла в результате рефакторинга.
Забытая проверка указателя перед разыменованием
V595 The ‘m_finfo’ pointer was utilized before it was verified against nullptr. Check lines: 5316, 5344. SPURecompiler.cpp 5316
В данном фрагменте кода указатель m_finfo сначала разыменовывается, а ниже по коду проверяется на равенство nullptr. В других местах указатель m_finfo проверяется перед разыменованием. Скорее всего, здесь забыли проверку. Исправленный код:
Дубликат в std::unordered_map
V766 An item with the same key ‘0x120’ has already been added. evdev_joystick_handler.h 135
При первом взгляде на код непонятно, какие два ключа одинаковые. Оказывается, BTN_JOYSTICK и BTN_TRIGGER — это константы Linux API, равные 0x120. При этом BTN_JOYSTICK — это стартовое значение группы констант сигналов джойстика, а BTN_TRIGGER — самая первая константа в списке этой группы. Поэтому их значения совпадают.
Забавно, что разработчики уже сталкивались с этой проблемой и некоторые значения были закомментированы. Буквально парой строк выше в той же хеш-таблице можно наблюдать следующее:
Небезопасный memset
V597 The compiler could delete the ‘memset’ function call, which is used to flush ‘tmpbuf’ buffer. The memset_s() function should be used to erase the private data. sha1.cpp 371
Золотая классика. В этом фрагменте вызов функции memset будет удалён компилятором в результате оптимизаций, а данные останутся лежать в памяти. Сложно сказать, сможет ли злоумышленник воспользоваться этой потенциальной уязвимостью. Однако на всякий случай стоит использовать функцию memset_s, вызов которой компилятор не имеет права убирать. Есть и другие способы добиться безопасного очищения памяти\.
Заключение
Итак, мы рассмотрели несколько предупреждений в режиме Best Warnings. Какие из этого можно сделать выводы?
Во-первых, ошибки допускают даже разработчики таких крутых проектов, как RPCS3. Причины могут быть разные: рефакторинг, копипаста, невнимательность.
Во-вторых, Best Warnings оказался действительно удобным режимом. Полный лог проверки RPCS3 содержал более 700 предупреждений 1-го и 2-го уровней. На просмотр всех предупреждений мне пришлось бы потратить несколько часов. В режиме же Best Warnings я просмотрел всего 10 предупреждений примерно за полчаса — и уже набрал материала на статью! 🙂
В-третьих, если вас заинтересовал анализатор PVS-Studio, скачайте его, запросите пробный ключ и попробуйте Best Warnings на своём проекте. Если анализатор вам понравится и вы захотите внедрить его для регулярных проверок, рекомендую эту статью. Обязательно расскажите нам о своём опыте! Безбажного вам кода 🙂
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Alexander Kurenev. PVS-Studio and RPCS3: the best warnings in one click.
Как настроить мышку в Windows 11/10 (7 важных шагов для точечной до-настройки!)
Доброго времени!
Ох. Казалось бы, ну что такое мышка? 👀
Тем не менее, на ее настройку (иногда) уходит кучу времени и нервов (особенно, в тех случаях, когда от нее нужно добиться чего-то более «тонкого», чем просто «перемещение» белой стрелочки в режиме «абы как» по экрану монитора. ).
Собственно, в текущую заметку я решил вынести все основные моменты по настройке мышки, с которыми так или иначе приходится сталкиваться. Получилась, своего рода, инструкция с пошаговыми действиями.
Примечание : т.к. ОС Windows 11 сейчас активно обновляется — некоторые моменты из материалов ниже могут со временем «устареть» (чтобы минимизировать это — я привожу неск. способов, как открыть те или иные вкладки / параметры — выбирайте актуальный для вас!).
Итак, теперь к сути. 👌
👉 Доп. в помощь!
1) Перестала работать мышь на компьютере или ноутбуке — что делать (пошаговая инструкция)
2) Как подключить беспроводную мышку к компьютеру — см. пошаговую инструкцию

Настройки мышки
Регулируем чувствительность, скорость перемещения указателя и двойного клика
- нажать Win+R — должно появиться окно «Выполнить» (вместо него можно также вызвать диспетчер задач с помощью Ctrl+Shift+Esc , и создать новую задачу);
- в строку «Открыть» ввести команду control mouse и нажать Enter. Далее должно появиться окно «Свойства: мышь» . 👇
Во вкладке «Кнопки мыши» (она появится по умолчанию) можно будет сразу же:
- обменять назначение кнопок (правую на левую — возможно, это удобно для левшей // или для некоторых игр // или для вертикальных мышек);
- задать скорость выполнения двойного клика.

Control mouse — открываем настройки мышки
Далее можно перейти во вкладки «параметры указателя» и «колесико» — в них, соответственно, можно будет отрегулировать скорость перемещения стрелочки по экрану, а также, как быстро будет перематываться страничка при прокрутке колесика.
Совет : во вкладке «параметры указателя» рекомендую включить повышенную точность указателя! Это снизит дрожание стрелочки, а также повысит ее точность наведения при небольших перемещениях.

Скорость передвижения указателя, скорость прокрутки
- нажать Win+R ;
- в окно «Выполнить» ввести команду ms-settings:mousetouchpad и нажать Enter;
- далее откроется окно параметров Windows (вкладка «Устройства / мышь»// сочетание Win+i ). Здесь можно будет также изменить скорость курсора, отрегулировать колесико, до-настроить сопутствующие параметры. 👇

Устройства — мышь — параметры ОС
- открыть контрольную панель;
- включить отображение крупных значков;
- кликнуть по ссылке «Мышь» . 👇

Панель управления — крупные значки — мышь
Спец. возможности от производителя устройства (Corsair, A4, Logitech, Razer и др.)
Если вы используете какую-нибудь игровую («модную») мышку от таких производителей, как Corsair, A4, Logitech, Razer (и ряд др.) — очень вероятно, что к ней может быть своя доп. панель управления от производителя. 👇
Как правило, такая панель позволяет более точечно настроить мышку : задать функции доп. кнопкам на корпусе устройства; до-настроить чувствительность; установить режим подсветки; вкл. макросы и т.д.
В общем, посыл здесь простой: 👀 посмотрите на сайте производителя вашей мышки — нет ли там спец. драйвера с панелью управления.

Corsair-мышка — приложение для настройки iCue
Пару слов о играх и чувствительности мышки
👉 Обратите внимание, что во многих играх могут быть доп. настройки чувствительности и ускорения курсора мышки. И это очень сильно влияет на точность ваших действий (наведения, позиционирования и т.д.).
Например, в игре CS:GO — в настройках есть несколько важных опций насчет чувствительности мышки (см. скрин ниже 👇). Так, многие отмечают, что ускорение мыши (например) следует отключать. Но вообще, конечно, многое здесь подбирается индивидуально, под конкретное железо и привычку (реакцию) пользователя.

Скриншот из игры CS:GO — настройка клавиатуры и мышки
👉 Кстати, если говорим об играх, нельзя также не сказать о таком параметре, как DPI мышки (у обычных бюджетных мышек он в среднем 800-2000 👇). Этот показатель очень сильно влияет на точность и плавность наведения курсора!
Разумеется, чем выше значение DPI у мышки — тем лучше ваша рука сможет делать ей «виртуозные» точные вещи (ну и само собой, выс. DPI также отразиться на цене устройства). Как правило, для игр часто предпочитают мышки с 4000+ DPI* (хотя, здесь мне сложно давать советы, т.к. я не киберспортсмен 😉).
8200 DPI // пример игровой мышки
Как открывать папки и файлы одним или двумя кликами
Универсальный вариант открыть настройки:
- нажать сочетание Win+R ;
- в строку «Открыть» ввести команду control folders и нажать Enter;
- в параметрах проводника найти подзаголовок «Щелчки мышью» и указать нужный вариант. См. пример на скриншоте ниже. 👇

- перейти в любую из папок на диске (чтобы запустить проводник — можно использовать сочетание Win+E );
- в верхней правой части окна кликнуть по значку «Параметры» ;
- далее аналогично, как в предыдущем примере. ☝

Любая открытая папка — Windows 10
Как сделать, чтобы мышь не выводила компьютер из «сна»
Если вы отправите компьютер (ноутбук) в сон, а затем пошевелите мышкой — он сразу же «проснется» (так ведут себя настройки электропитания мышки по умолчанию).
👉 Чтобы отключить этот момент нужно:
- открыть 👉 диспетчер устройств (чтобы это сделать — можно кликнуть правой кнопкой мыши по ПУСК);
- далее найти и раскрыть вкладку «Мыши и иные указывающие устройства» ;
- после поочередно открыть свойства каждого устройства в этой вкладке и снять флажок, разрешающий устройству выводить компьютер из ждущего режима (см. пример ниже). 👇

Разрешить этому устройству выводить ПК из ждущего режима
Кстати, помимо мышки, возможно, вам потребуется отключить и клавиатуру (это помогает исключить случайные «пробуждения» ПК). У меня на эту тему, кстати говоря, была на блоге более подробная инструкция (ссылка ниже).
👉 В помощь!
Компьютер, ноутбук выходит из спящего режима САМ. Почему, как это исправить?
Дополнительные функции для кнопок мыши: например, регулирование громкости
Не многие знают, что кнопкам и колесику мыши можно дать дополнительные возможности (причем, не обязательно, чтобы мышка была какой-то дорогой геймерской. ).
Например, довольно удобно на мышку «повесить» регулировку громкости — крутанул колёсико и звук прибавлен! 👌
О том, как это можно настроить — рассказано в одной моей заметке (ссылка ниже 👇).

Выбор горячих клавиш для регулировки звука // утилита Volume 2

Список функций // утилита Volume 2
Изменение курсора (ставим что-то вместо белой стрелочки)
Если вы хотите просто изменить цвет курсора (белой стрелочки) и его размер — то устанавливать что-то дополнительно совсем не обязательно.
Если открыть параметры Windows 11/10 (как их открыть) и перейти в раздел «Спец. возможности / Указатель мыши» — вы сможете самостоятельно изменить эти настройки. 👇

Спец. возможности — указатель мыши
Если есть желание вместо стрелочки установить что-то более интересное (например, как у меня на скриншоте ниже 👇) — для этого понадобиться загрузить к себе на диск спец. набор указателей, а после вручную выбрать один из них. Сам набор, а также, как с ним работать — я разобрал в одной своей прошлой заметке, ссылка ниже.
Пример — на что можно поменять стрелку.
Автоматические нажатия мышки (без вашего участия)
Один из довольно популярных вопросов (когда многие перешли на «удалёнку»): «Можно ли сделать так, чтобы мышка самостоятельно периодически что-то «нажимала». Как это настроить?».
Ответ: да, можно! Но, разумеется, ее нажатия не сравнить с человеком — действовать она будет по какому-то заранее заданному плану. Реализуется это с помощью спец. приложений. Ссылка ниже в помощь.
👉 В помощь!
Утилиты для создания последовательности нажатий нужных клавиш (клавиатура + мышка). Пошаговый пример настройки

Скриншот из игры World of Warcraft // Персонаж из игры самостоятельно применяет весь спектр возможностей против врага // пример использования авто-комбинаций
Sec mouse btn что это
Mice come in various flavours — serial mice, PS/2 mice, busmice, USB mice. Below a little about mice using the PS/2 protocol, since these also use the keyboard controller.
A mouse has a number of buttons (1-5 is common) and must report button presses. It has some way of detecting motion, and must report the amount of movement in the X and Y direction, usually as differences with the previously reported position, in a (dx,dy) pair. Touchpads can also report absolute position.
Reports come in the form of mouse packets of between 1 and 8 bytes. Various protocols are in use.
13.1 Modes
A PS/2 mouse can be in stream mode (the default). In this mode it produces a stream of packets indicating mouse movements and button presses. Or it can be in remote mode . In this mode the mouse only sends a packet when the host requests one, using the eb command. Finally, it can be in echo («wrap») mode , in which everything the host sends is echoed back, until either a reset ( ff ) or clear echo mode ( ec ) is received.
13.2 Scaling
Scaling can be set to 1:1 or 2:1. This affects stream mode only. In 2:1 scaling: If the unscaled absolute value of dx or dy is 6 or more, it is doubled. Otherwise, for the unscaled value 0,1,2,3,4,5,6, the scaled value 0,1,1,3,6,9,12 is sent.
13.3 PS/2 mouse protocol
The default protocol
The standard PS/2 protocol uses 3-byte packets, as follows:
| Yovfl | Xovfl | dy8 | dx8 | 1 | Middle Btn | Right Btn | Left Btn |
| dx7 | dx6 | dx5 | dx4 | dx3 | dx2 | dx1 | dx0 |
| dy7 | dy6 | dy5 | dy4 | dy3 | dy2 | dy1 | dy0 |
It gives the movement in the X and Y direction in 9-bit two’s complement notation (range -256 to +255) and an overflow indicator. It also gives the status of the three mouse buttons. When this protocol is used, the f2 Read mouse ID command is answered by 00 .
Intellimouse
The Microsoft Intellimouse uses the above protocol until scrolling wheel mode is activated by sending the magic sequence f3 c8 f3 64 f3 50 (set sample rate 200, 100, 80). In this mode, the Read mouse ID command returns 03 , and 4-byte packets are used:
| Yovfl | Xovfl | dy8 | dx8 | 1 | Middle Btn | Right Btn | Left Btn |
| dx7 | dx6 | dx5 | dx4 | dx3 | dx2 | dx1 | dx0 |
| dy7 | dy6 | dy5 | dy4 | dy3 | dy2 | dy1 | dy0 |
| dz3 | dz3 | dz3 | dz3 | dz3 | dz2 | dz1 | dz0 |
Here the last byte gives the movement of the scrolling wheel in 4-bit two’s complement notation (range -8 to +7) and the leading four bits are just copies of the sign bit.
Intellimouse Explorer mouse
The Explorer mouse protocol allows for scrolling wheel and five buttons. It is activated by first sending the magic sequence for Intellimouse, and then, when the Intellimouse ID has been seen, sending the magic sequence f3 c8 f3 c8 f3 50 (set sample rate 200, 200, 80). In this mode, the Read mouse ID command returns 04 , and 4-byte packets are used:
| Yovfl | Xovfl | dy8 | dx8 | 1 | Middle Btn | Right Btn | Left Btn |
| dx7 | dx6 | dx5 | dx4 | dx3 | dx2 | dx1 | dx0 |
| dy7 | dy6 | dy5 | dy4 | dy3 | dy2 | dy1 | dy0 |
| 0 | 0 | 5th Btn | 4th Btn | dz3 | dz2 | dz1 | dz0 |
Lots of other protocols occur, and only incomplete data is known about most of them. Some examples.
Typhoon mouse
The Typhoon optical mouse is reported to send 6-byte packets. Bytes 1-3 are as for the default PS/2 protocol. Byte 4 equals byte 1. Byte 5 gives the Z axis movement, one of ff , 00 , 01 . Byte 6 is 0. Of course the idea is that this packet looks like two ordinary packets and ordinary PS/2 mouse drivers will handle it. The 6-byte mode is activated by sending the magic sequence f3 c8 f3 64 f3 50 f3 3c f3 28 f3 14 (set sample rate 200, 100, 80, 60, 40, 20). It is recognized by the ID 08 .
13.4 Mouse Commands
Every command or data byte sent to the mouse (except for the resend command fe ) is ACKed with fa . If the command or data is invalid, it is NACKed with fe . If the next byte is again invalid, the reply is ERROR: fc .
Command d0 : Read extended ID
Read up to 256 bytes.
Commands d1 — df : Vendor unique commands
Command d1 : Logitech PS/2++ command
This command was to be used, followed by an arbitrary data sequence. Now replaced by the sliced commands using e8 .
Command e1 : Read secondary ID
Command e2 : IBM TrackPoint command
Command e6 : Set mouse scaling to 1:1
Command e7 : Set mouse scaling to 2:1
Command e8 : Set mouse resolution
Command e9 : Status request
This command returns three bytes:
First a status byte: Bit 7: unused, 0. Bit 6: 0: stream mode, 1: remote mode. Bit 5: 0: disabled, 1: enabled. Bit 4: 0: scaling set to 1:1, 1: scaling set to 2:1. Bit 3: unused, 0. Bit 2: 1: left button pressed. Bit 1: 1: middle button pressed. Bit 0: 1: right button pressed.
Then a resolution byte: 0, 1, 2, 3: 1, 2, 4, 8 units per mm, respectively.
Finally a sample rate (in Hz).
See below for special Synaptics Touchpad handling.
Command ea : Set stream mode
Command eb : Read data
Command ec : Clear echo mode
Command ee : Set echo mode
Command f0 : Set remote mode
Command f2 : Read mouse ID
(Only supported on some systems.) This command reads a 1-byte mouse ID. The reply is a single byte 00 . Wait at least 10ms after issuing this command.
For the keyboard reply, see above.
BallPoint (trackball) devices return a single byte 02 , Intellimouse returns 03 , Explorer Mouse returns 04 , 4d Mouse returns 06 , 4dplus Mouse returns 08 ,as does the Typhoon mouse.
Command f3 : Set mouse sample rate
Command f4 : Mouse enable
Command f5 : Mouse disable
Command f6 : Set defaults
Command fe : Resend
Command ff : Mouse reset
13.5 Sliced parameters
For more advanced mouse modes it is necessary to send data to the mouse. There is now a commonly accepted way.
First Logitech tried to use the d1 command followed by an arbitrary data sequence. While the IBM specs reserve d1 — df for vendor unique commands, it turns out that not all BIOSes will transmit such codes. So Logitech drops the d1 and uses the sequence e8 aa e8 bb e8 cc e8 dd to transmit the byte aabbccdd , where aa , bb , cc , dd are 2-bit quantities. In this way an arbitrarily long sequence of bytes can be transmitted.
For synchronization purposes it is possible to separate such groups of four e8 commands by an e6 command. Indeed, such separation may be required: Synaptics Touchpads react to e9 or f3 commands preceded by precisely four e8 commands.
Magic knock
For example, the «magic knock» d1 39 db that sets a device that understands it in PS/2++ mode, becomes e8 00 e8 03 e8 02 e8 01 e6 e8 03 e8 01 e8 02 e8 03 , abbreviated
Magic unknock
PS/2++ mode is cleared again by the «magic unknock»
For a decription of the PS/2++ format, see ps2ppspec.htm.
13.6 Synaptics Touchpad
A few sketchy details. For nice precise information, get the Synaptics interfacing guide.
Status request
When preceded by an 8-bit request number encoded via four e8 commands, the e9 status request returns modified output, somewhat dependent on the Touchpad model.
Request 00 : Identify Touchpad
This request returns three bytes, of which the middle one is the constant 47 . This is the way to recognize a Touchpad. The low order four bits of the third word contain the major model version number, the first word contains the minor version number, and the high order four bits of the third word contain the (obsolete) model code.
Request 01 : Read Touchpad Modes
This request returns three bytes, of which the first two are the constants 3b and 47 . The last byte is the mode byte
| ABS | Rate | — | — | Baud/Sleep | DisGest | PackSize | Wmode |
Here ABS indicates absolute mode (instead of the default relative mode).
Rate is 0 for 40 packets/sec, 1 for 80 packets/sec. The PS/2 sampling rate value is ignored.
Baud/Sleep indicates the baud rate when used with a serial protocol (0: 1200 baud, 1: 9600 baud). It must be set whenever ABS or Rate is set. When used with the PS/2 protocol this bit indicates sleep mode — a low power mode in which finger activity is ignored and only button presses are reported.
DisGest is the «disable gestures» bit. When set, we have classical mouse behaviour. When cleared, «tap» and «drag» processing is enabled.
PackSize is used for the serial protocol only (and then chooses between 6-, 7- and 8-byte packets, also depending on the Wmode bit).
Wmode is used in absolute mode only. When set the packets also contain the W value. (This value indicates the amount of contact: 0: two-finger contact, 1: three-finger contact, 2: pen contact, 3: reserved, 4-7: ordinary finger contact, 8-15: wide finger or palm contact.)
This described Touchpad 4.x. Earlier models had up to four mode bytes. This request would return mode bytes 1 and 2 in the first and last result byte, and request 02 would return mode bytes 3 and 4.
Request 02 : Read Capabilities
This request returns three bytes, of which the middle one is the constant 47 . The first and third byte are the high-order and low-order parts of the capability word. (Thus on Touchpad 4.x. On earlier models mode bytes 3 and 4 are returned.)
This capability word has 16 bits. Bit 15 indicates that capabilities are supported. Bit 4 indicates that Sleep is supported (for the PS/2 protocol). Bit 3 indicates that four buttons (Left, Right, Up, Down) are supported. Bit 1 indicates that multi-finger detection is supported. Bit 0 indicates that palm detection is supported.
Request 03 : Read Model ID
Request 06 : Read Serial Number Prefix
Request 07 : Read Serial Number Suffix
Request 08 : Read Resolution
Mode setting
When preceded by an 8-bit request number encoded via four e8 commands, the f3 14 (set sample rate 20) command sets the mode byte to the encoded number. (Thus on Touchpads 4.x. Older models have more mode bytes and several such commands.)
13.7 Vendor extensions
There is a complicated forest of «magic sequences» that enable vendor extensions. Recognizing all of these is a very obscure activity.
(Moreover, recognizing these may be counterproductive: if the mouse has special capabilities which are activated by a special sequence, and it is connected to the computer via a KVM switch that does not know about this special protocol, then switching away and back will leave the mouse in the non-special state. This leads to non-functioning mice.)
A 2002 Logitech file describes the following procedure for recognizing the mouse type:
Stage 1: Send ff : reset. The reply is ignored. (Most common is aa 00 .)
Stage 2: Send f3 0a f2 : set sample rate and ask for ID. If the reply is 02 , we have a trackball — it has its own protocol. (The usual reply is 00 .)
Stage 3: Send e8 00 e6 e6 e6 e9 : set resolution and scaling (three times), and request status. The reply consists of three bytes s1 s2 s3 . An old-fashioned mouse would report 0 in the second status byte s2 (since that is the resolution and we just set it).
If s2 is nonzero then: s2 is the number of buttons, s3 is the firmware revision, s1 has the firmware ID (device type) bits 6-0 in bits 3-0,6-4, while bit 7 of s1 indicates support for the e7 e7 e7 e9 command.
If s1 = d0 and s2 = 03 and s3 = c8 , suspect Synaptics.
If s1 and s2 are zero but s3 equals 0a , suspect Alps. ( s3 = 0a is as expected, but s1 =0 is not)
Stage 4: If bit 7 of s1 is set, or if we suspect Alps, send e8 00 e7 e7 e7 e9 : set resolution and scaling (three times), and request status. The reply consists of three bytes t1 t2 t3 . Of course, we already know that this is not an old-fashioned mouse.
If t2 = 01 and FirmwareID < 0x10 and t1 >> 6 = 1, then conclude that we have a Cordless MouseMan (RA12).
If t2 = 01 and FirmwareID < 0x10 and t1 >> 6 = 3, then conclude that we have a Cordless MouseMan (RB24).
Other cases with t2 = 01 are for new cordless mice.
If we suspect Synaptics and t2 =0 and t3 = 0a , then conclude that we have a Synaptics touchpad.
If we suspect Alps and t1 = 33 , then conclude that we have an Alps touchpad.
Stage 5: If we don’t know the type yet, send f3 c8 f3 64 f3 50 f2 : Set sampling rate to 200, 100, 80 Hz, and ask for ID. The reply is a single byte. If we get 3, conclude that we have an IntelliMouse. (And this sequence is the initialization sequence for the IntelliMouse.)
Stage 6: Send ff : reset. Now the device is no longer in any special state.
Stage 7: If we don’t know the type yet, send e8 00 e8 00 e8 00 e8 00 e9 : set resolution to 0 (four times), and ask for status. The reply consists of three bytes u1 u2 u3 . If u2 = 47 and u3 = 13 , then conclude that we have a new Synaptics touchpad.
Stage 7a: At this point we can narrow down to model type. If the thing is Synaptics or Alps, then Logitech is no longer interested. If it has 3 buttons, FirmwareID 1 and firmware revision 50 , then conclude that it is a Logitech Mouseman.
Stage 8: If we think it is a touchpad, detect whether it has programmable RAM. Send e6 e8 00 e8 00 e8 00 e8 00 e9 . The reply consists of three bytes v1 v2 v3 . If v1 = 06 and v2 = 00 , then conclude that we have a Touchpad TP3 with programmable RAM.
Stage 9: Test whether the device understands the Logitech PS/2++ protocol. Send the «magic knock» f5 e8 00 e8 03 e8 02 e8 01 e6 e8 03 e8 01 e8 02 e8 03 f4 . Check whether the device replies with an extended report.