Короткий ответ
tabcal.exe ClearCal DisplayID=\\.\DISPLAY1
Длинный ответ
Официального списка параметров командной строки для tabcal.exe
вы не найдете нигде, но я надеюсь, что это кому-нибудь пригодится.
Эта информация предоставляется вам Process Monitor (моя утилита для перехода к пониманию того, что процессу было сказано делать через аргументы командной строки, а также что он делает с другими процессами, файловой системой и реестром) и свободным использованием Google.
Вот то, что я считаю, я понял:
ClearCal
сбрасывает данные калибровки для данного устройства
требуется DisplayID
LinCal
запускает калибровку
(если ClearCal
не указан, по умолчанию используется функция LinCal
)
требуется DisplayID
если у вас есть несколько устройств с пером и / или сенсорными возможностями
может потребоваться DeviceKind
если у вас есть и перьевой и сенсорный дигитайзеры на одном дисплее
DisplayID=\\.\DISPLAY1
индекс на основе одного дисплея, связанный с сенсорным экраном
(Если у вас есть два дисплея, это 1 или 2; значение соответствует идентификационному номеру мульти-дисплея на панели управления дисплеем)
Quiet
Подавляет окна сообщений
Например, если вы используете LinCal
, ваши изменения будут сохранены, а не будут запрошены , если вы хотите сохранить
Например, если у вас есть ошибка с аргументами командной строки, вы не получите сообщение о том, что
DeviceKind={touch,pen}
На первый взгляд необязательный аргумент для ClearCal
и LinCal
для указания типа дигитайзера
(Я подозреваю, что это может потребоваться, если вы используете оба на одном дисплее, но мой дигитайзер поддерживает только сенсорный.)
{validate,novalidate}
Необязательный аргумент для LinCal
чтобы предотвратить или принять регистрацию калибровочных меток, которые находятся далеко от перекрестия
Если не указано, по умолчанию действует validate
XGridPts=
YGridPts=
Необязательные аргументы (если используются оба обязательных) для LinCal
для указания координат X и Y перекрестия для калибровки.
Значения представляют собой список, разделенный запятыми, без пробелов в координатах пикселей, начинающихся с нуля.
(например, для 1920 × 1080, значения X дисплея 0-1919 и значения Y 0-1079 принимаются; некоторые примеры приведены ниже)
Если не указано, калибровочные точки по умолчанию равны четырем, если не указано иное (значения извлекаются из HKLM:\SYSTEM\CurrentControlSet\Control\TabletPC\LinearityData
)
Export
Необязательный аргумент для LinCal
для экспорта данных калибровки в файл.
Выходной файл находится в каталоге, из которого был вызван tabcal
, с именем 'caldata n.txt', где n - это нулевое значение с автоприращением
Содержимое файла - это имя дигитайзера, разрыв строки и та же шестнадцатеричная строка, записанная в значение реестра в HKLM:\SYSTEM\CurrentControlSet\Control\TabletPC\LinearityData
(Я не нашел соответствующей функции импорта.)
Другие вещи, которые я узнал
Существует три подраздела реестра, которые содержат данные калибровки:
HKLM:\SYSTEM\CurrentControlSet\Control\TabletPC\LinearityData
HKLM:\SYSTEM\CurrentControlSet\Control\TabletPC\UserLinearityData
HKLM:\SYSTEM\CurrentControlSet\Enum\HID\VID_xxxx&&PID_xxxx&Colxx\(non-deterministic)\Device Parameters
Первые два могут содержать двоичное значение с именем vid_xxxxpid_xxxx&colxx
содержащее данные калибровки для этого конкретного устройства, а также значения XGridPts и YGridPts, если вы калибровали более 4 точек касания.
Подраздел Enum\HID
, имеющий в своем имени те же значения VID/PID/Col и значение LinearityData
будет иметь значение LinearityData
с теми же данными, что и выше.
Если вы удалите все эти значения реестра, вы сбросите данные калибровки, но это изменение не вступит в силу до тех пор, пока эти данные не будут снова считаны системой, либо при последующей загрузке, либо когда пользовательский процесс wisptis.exe
перезапущен. (Обычный перезапуск службы ввода планшетного ПК не делает этого, даже если он останавливает и перезапускает процессы wisptis.exe
. Пойди разберись.)
Гораздо проще сделать это, выполнив следующую команду (которая требует повышения прав), которая удаляет эти ключи и немедленно вносит изменения:
tabcal.exe ClearCal DeviceKind=touch DisplayID=\\.\DISPLAY1
Это именно та команда, которая запускается, когда пользователь выбирает «Сброс» на панели управления настройками планшетного ПК в моей тестовой системе. Если у вас есть устройство ввода с пером или другая конфигурация дисплея, ваша команда может немного отличаться. (Если у вас включено UAC, прежде чем разрешить действие «Сброс», вы можете открыть панель «Подробности», чтобы увидеть полную командную строку, которую нужно выполнить. Кроме того, вы можете получить эту информацию из Process Monitor.)
Как вы уже определили, вы можете затем повторно откалибровать сенсорный экран, используя производную от одной из следующих команд, в зависимости от размера вашего дисплея и ваших конкретных требований:
# Default touch calibration (4 points unless someone's previously specified XGridPts/YGridPts)
tabcal.exe lincal novalidate devicekind=touch
tabcal.exe lincal novalidate devicekind=pen
# Example 25-point touch calibration for 1920×1080 display
tabcal.exe lincal novalidate devicekind=touch XGridPts=10,485,960,1435,1910 YGridPts=10,275,540,805,1070
# Example 121-point pen calibration (from a Microsoft Surface forum)
tabcal.exe lincal novalidate devicekind=pen XGridPts=10,60,110,360,660,960,1260,1560,1810,1860,1910 YGridPts=10,60,110,200,330,490,650,810,970,1020,1070