Ctrl2Cap v2.0

Av Mark Russinovich

Publicerad: 1 november 2006

Laddaned Ctrl2Cap(48 KB)

Introduktion

Ctrl2cap är en enhetsdrivrutin i kernelläge som filtrerar systemets tangentbordsklassdrivrutin för att konvertera caps-lock-tecken till kontrolltecken. Personer som jag som migrerat till NT från UNIX är vana vid att ha kontrollnyckeln där caps-lock-nyckeln finns på standardtangentbordstangentbord, så ett verktyg som detta är viktigt för redigering.

Installation och användning

Installera Ctrl2cap som kör kommandot "ctrl2cap /install" från katalogen där du har packat upp Ctrl2cap-filerna. Om du vill avinstallera skriver du "ctrl2cap /uninstall".

Så här fungerar Ctrl2cap

På NT 4 är Ctrlcap faktiskt ganska trivialt. Den ansluter sig helt enkelt till tangentbordsklassdrivrutinen så att den fångar upp förfrågningar om tangentbordsläsning. För varje begäran publicerar den ett återanrop för I/O-slutförande. Då tar den en titt på den genomsökningskod som returneras. Om det råkar vara ett caps-lock ändrar ctrl2cap det till en vänsterkontroll.

På Win2K Ctrl2cap finns en WDM-filterdrivrutin som ligger i tangentbordsklassens enhetsstack ovanför enheten med tangentbordsklassen. Detta skiljer sig från Exemplet i Kbfiltr i Win2K DDK som ligger mellan i8042-portenheten och enheten med tangentbordsklassen. Jag valde att skikta ovanpå enheten med tangentbordsklass av flera skäl:

  • Det innebär att Koden Ctrl2cap IRP_MJ_READ avlyssning och manipulering delas mellan NT 4- och Win2K-versionerna.
  • Jag behöver inte ange en INF-fil och be användaren gå igenom Enhetshanteraren för att installera Ctrl2cap – Jag ändrar helt enkelt lämpligt registervärde (tangentbordsklassens enheter HKLM\System\CurrentControlSet\Control\Class UpperFilters).

Nackdelen med min metod är (och det här är en fördel eller nackdel beroende på din synvinkel):

  • Eftersom jag inte installerar med en INF-fil via Enhetshanteraren får användaren ingen varning om att drivrutinsfilen Ctrl2cap inte har signerats digitalt av Microsoft.

I det här specifika fallet anser jag att fördelarna överväger nackdelarna. Men innan du modellerar ett Win2K-tangentbordsfilter på Ctrl2cap rekommenderar jag starkt att du studerar kbfiltr-exemplet från Win2K DDK. Kbfiltrs avlyssningspunkt i nyckelindatasekvensen gör det mycket enkelt för kbfiltr att mata in tangenttryckningar i indataströmmen.

Mer information

Mer information om hur du skriver filterdrivrutiner (drivrutiner som kopplar sig till andra drivrutiner så att de kan se sina indata och/eller utdata) finns här:

  • Den Windows NT och Windows 2000 DDK exempel \src\storage\filter\diskperf
  • Exemplet Windows 2 000 DDK \src\input\kbfiltr
  • "Undersöka Windows NT File System", av Mark Russinovich, Dr Dobb's Journal, februari 1997
  • Den tillhörande filterdrivrutinen för filsystemet, Filemon

Laddaned Ctrl2Cap(48 KB)

Körs på:

  • Klient: Windows Vista och högre.
  • Server: Windows Server 2008 och senare.