平板電腦觸摸和手寫筆自定義校準(zhǔn):tabcal命令的使用
tabcal.exe是windows系統(tǒng)內(nèi)置的觸摸和筆的坐標(biāo)映射管理軟件,它在system32目錄里,你可以通過cmd或PowerShell使用它。事實(shí)上,控制面板的平板電腦選項(xiàng)里的校準(zhǔn)功能就是由它提供的,然而,你無法通過 tabcal -?或 help tabcal 查詢到它的用法。
目前,你可以通過網(wǎng)址 https://dan.salvagni.io/s/grid-generator/ 來快速生成你需要的校準(zhǔn)指令,只要輸入你需要的x、y軸細(xì)分?jǐn)?shù)以及屏幕分辨率,然后將生成的命令用cmd運(yùn)行即可。
如果校準(zhǔn)的效果讓你不滿意,你可能無法從平板電腦設(shè)置里清除它。這里有一個(gè)現(xiàn)成的指令:
tabcal.exe ClearCal lincal DisplayID=\\.\Display1
如果你使用的是外置數(shù)位屏,那么你可能需要把 DisplayID=\\.\Display1 改成?DisplayID=\\.\Display2 ,意思就是指定為系統(tǒng)的第二顯示器。
若希望進(jìn)一步自定義你的校準(zhǔn)方案,tabcal各參數(shù)含義如下:
tabcal? ? ? ? ? ?指令本身,用來創(chuàng)建坐標(biāo)偏移修正量,
lincal? ? ? ? ? ?? 線性校準(zhǔn),用來創(chuàng)建基本坐標(biāo)。也可以用更多校準(zhǔn)點(diǎn)
? ?若不加lincal,則會(huì)有校準(zhǔn)點(diǎn)數(shù)量限制。
devicekind?? 設(shè)備類型,pen或touch
? 用法:devicekind=pen
quiet? ? ? ? ? ?? 禁用錯(cuò)誤彈窗
Clearcal? ????? 清除校準(zhǔn)
DisplayID? ??? 指定顯示器
? 用法:DisplayID=\\.\Display1? 指定顯示器1
? ? ? ? ? ? ?DisplayID=\\.\Display2? 指定顯示器2
novalidate? ??忽略UAC驗(yàn)證
export? ? ? ? ? 導(dǎo)出為txt文件(不知道有啥用)
XGridPts? ? ? 橫軸坐標(biāo)。值之間用逗號(hào)分隔
YGridPts? ? ? 縱軸坐標(biāo)。同上。
??y與x相交即為校準(zhǔn)點(diǎn)坐標(biāo),單位為屏幕像素。
了解了指令的基本含義之后,就可以開始校準(zhǔn)了。我有個(gè)自己總結(jié)出來的行之有效的流程,可供參考。
機(jī)器:富士通Q736(1920x1080,wacom9006ic,2048級(jí)壓感,無傾斜感應(yīng),光標(biāo)在未校準(zhǔn)狀態(tài)下有2-3像素的誤差和挺明顯的邊緣漂移)
1:以管理員身份運(yùn)行cmd,然后使用指令:tabcal ClearCal和tabcal ClearCal lincal清除校準(zhǔn)數(shù)據(jù);
2:然后,對于win10系統(tǒng),進(jìn)入 設(shè)置 > 設(shè)備 > 筆和WindowsInk, 選擇“書寫時(shí)使用哪只手”選項(xiàng),調(diào)為你的慣用手(這會(huì)影響系統(tǒng)的反誤觸設(shè)定)
補(bǔ)充:對于同時(shí)支持筆和觸摸的設(shè)備,win10默認(rèn)提供了簡單的反誤觸支持。就是在使用筆的時(shí)候,在筆光標(biāo)的慣用手方向的區(qū)域屏蔽觸摸。如果選為右手,則屏蔽筆光標(biāo)右下90°的扇形區(qū)域。左手則是左下。
3:把你生成了的校準(zhǔn)網(wǎng)格指令輸入cmd,回車執(zhí)行之后你就會(huì)看到校準(zhǔn)界面了。這里有個(gè)我已經(jīng)做好了的,給1920x1080屏幕用的校準(zhǔn)指令:
tabcal devicekind=pen lincal novalidate XGridPts=10,36,89,168,406,749,1171,1514,1752,1831,1884,1910 YGridPts=10,35,161,389,691,818,994,1070
4:拿起你的壓感筆,小心、準(zhǔn)確地點(diǎn)擊每個(gè)十字。一般來說按照你的常用姿勢去點(diǎn)就ok了,但是我有一些經(jīng)驗(yàn)建議,給第一次執(zhí)行校準(zhǔn)的新人參考參考:
①:不要把眼睛湊近屏幕去點(diǎn)擊十字。雖然這對你點(diǎn)準(zhǔn)十字中心或許會(huì)有幫助,但是這樣一來,你就很難發(fā)覺你全程是在以什么視角去校準(zhǔn)??赡苣銓σ恍c(diǎn)的觀察角度不一致。因?yàn)椴A怯泻穸鹊?,最后你點(diǎn)的位置會(huì)偏離你希望的位置,導(dǎo)致整個(gè)網(wǎng)格最終是歪歪扭扭的;
②:推薦用一只眼睛來觀察,兩只眼睛的視角是不一樣的,可能會(huì)導(dǎo)致你看到的位置有差別。當(dāng)然校準(zhǔn)本身不要過于死板,要有一定的寬容度。這里用一個(gè)例圖來簡單說明一下:
你可能會(huì)用這種視角來校準(zhǔn):

這么做可以在單個(gè)視角中消除玻璃厚度帶來的視差。但這樣的話,如果你使用視角脫離了這個(gè)預(yù)設(shè)的視角位置,整個(gè)屏幕的視差只會(huì)更嚴(yán)重。以下是我推薦的方法:

不必讓視角始終保持一個(gè)位置,誠然,在校準(zhǔn)的時(shí)候始終保持一個(gè)姿勢有助于減少玻璃厚度帶來的視差,但對于長期使用而言并不實(shí)用??梢詾樽约阂?guī)劃一個(gè)大概的常用視角區(qū)間,在這個(gè)區(qū)間內(nèi)對校準(zhǔn)點(diǎn)直視校準(zhǔn)。而在區(qū)間外就固定在邊緣,斜視校準(zhǔn)以盡量減少玻璃厚度帶來的視差。雖然這可能會(huì)造成在常用區(qū)域內(nèi)的視差變大,但長期使用下來我發(fā)現(xiàn),在常用區(qū)域中,保證光標(biāo)位置穩(wěn)定比消除視差要重要得多。而在邊緣區(qū)域,可以消除視差以改善體驗(yàn)。
小心戳好每個(gè)點(diǎn),只要精度足夠,你的辛苦將是值得的。不滿意的點(diǎn)可以鼠標(biāo)右鍵退回去重新點(diǎn)。當(dāng)然要注意最后一個(gè)點(diǎn),是不可撤銷的,別把它戳歪了,不然你就得激爽重來了(別問我怎么知道的)
5.到了這里你的線性校準(zhǔn)就完成了,你可以驗(yàn)證一下你的勞動(dòng)成果,然后再?zèng)Q定是不是要重來。多畫幾個(gè)線,觀察線在筆尖下出現(xiàn)的方位,檢驗(yàn)一下你的網(wǎng)格有沒有個(gè)別點(diǎn)很歪導(dǎo)致線的方位突然鬼畜。一般,如果你的網(wǎng)格很平滑,沒有個(gè)別某個(gè)點(diǎn)戳歪了,這網(wǎng)格就合格了。如果你的網(wǎng)格因?yàn)橐暯菃栴}整體有偏位(比如左半邊很正常,但越往右就越偏上),你可以靠tabcal來嘗試補(bǔ)救(我就是這么干的)
6. 這就是tabcal和lincal的區(qū)別所在:lincal是用來創(chuàng)建整體映射網(wǎng)格的,是一個(gè)初始的坐標(biāo)系;而tabcal更像是一個(gè)偏量,是對坐標(biāo)系的補(bǔ)償。這個(gè)教程中,lincal的作用更多是為了消除邊緣漂移。如果單純只想改善常用區(qū)域的精度,16點(diǎn)的tabcal就足夠。
回到cmd,輸入tabcal并回車,你就會(huì)見到一個(gè)只有4個(gè)點(diǎn)的最簡單的校準(zhǔn)界面。通過這4個(gè)點(diǎn)你可以慢慢調(diào)整你的校準(zhǔn)成果,直到你滿意了為止。? ??
?當(dāng)然日后你的工作環(huán)境發(fā)生改變的時(shí)候,比如換了個(gè)不一樣高度的桌子導(dǎo)致視角發(fā)生變化,你也可以用tabcal指令對你創(chuàng)建過的網(wǎng)格進(jìn)行快速調(diào)整。
常見問題:
1. 線性校準(zhǔn)數(shù)據(jù)已經(jīng)存在:
用?tabcal.exe ClearCal lincal?清除校準(zhǔn)即可。控制面板的平板電腦選項(xiàng)的重置按鈕不能清除線性校準(zhǔn)信息,目前也不是很清楚win10把校準(zhǔn)數(shù)據(jù)丟到注冊表的啥地方去了。
如果是win7,則可以在注冊表 HKLM:\SYSTEM\CurrentControlSet\Control\TabletPC\LinearityData 找到校準(zhǔn)信息。
2. 一次只能校準(zhǔn)一臺(tái)輸入設(shè)備:
如果你有多個(gè)顯示器,增加DisplayID參數(shù)即可。
3.其他幽靈bug、無法消除之類的問題參考評論區(qū)?;蛞部梢栽谠u論區(qū)提出來,我看到了會(huì)盡量給與解答。畢竟tabcal.exe這東西年事已高,好像在Windows3.1就已經(jīng)存在了,修修補(bǔ)補(bǔ)茍到現(xiàn)在,沒點(diǎn)小bug才怪了。
更多討論和細(xì)節(jié)可以參考這個(gè)網(wǎng)頁:
https://superuser.com/questions/1075350/tabcal-exe-command-line-switches