This is the first post of a series of articles on Windows
Embedded Standard 7, especially on the changes introduced by
Service Pack 1 and later releases.
The first issue that we deal with is "keyboard filter". In
embedded devices with different forms from desktop PC (such as cash
registers or information kiosks), the manufacturers often have the
need for proprietary solutions for the keyboard, referring to the
form-factor and to keys number and their functions. In this case
they often take advantage of the situation by physically
eliminating keyboard keys that are potentially dangerous for their
dedicated applications: e.g. Windows key
and/or List key. Equally often, however,
there is the need to leave the accessibility to one or more USB
ports for many purposes: maintenance, update or actual
functionality required by the application. By connecting a standard
USB keyboard to the USB port, all efforts to limit the use of
unintended shortcuts are completely negate.
Microsoft has developed a solution which allows you to "filter"
all keys and/or key combinations coming from the keyboard and to
send only the permitted ones to the application.
In this post and the next we will analyze the various aspects of
this package by examining how to configure and use it. In
particular, after introducing the topic, we will deal with how to
insert the package "Keyboard Filter" into the Windows Embedded
Standard 7 build, how to manage its service and how to configure it
in general.
Keyboard filter
Keyboard filter is a feature that was released for the first
time in Windows Embedded POSReady 7: a version of Windows Embedded
Standard 7 where the build has been completely done by Microsoft by
adding all the typical software layers needed by POS (Point of
Services), that means devices that involve a business
transaction or data retrieval information (for example,
distributors of items, tickets, consumables, information kiosks,
etc…).
This feature allows you to configure the shortcuts you do not
want to come in from the keyboard, for example: Ctrl+Alt+Del or
Windows+L. These combinations, like many others, can cause unwanted
commands execution in a dedicated device where, in front of the
screen, there is an end-user and not a technician.
Manufacturers of embedded devices very often design solutions
with a custom keyboard without unwanted keys such as: Windows,
Menu, Alt, etc... but then, during the production phase, they
realize that some combinations are required both by the end-user
and applications themselves (Ctrl+C, Ctrl+X, Ctrl+V, etc...) or by
necessities brought by language (for example the snail
"@" on the Italian keyboard is Alt Gr+ò; if Alt Gr
has been removed from the physical keyboard, nobody will be able to
insert the snail anymore).
The inconsistency of the physical solution becomes obvious if
you think that many devices offer, outside of the box and for
various reasons, an USB port. It becomes trivial at this point to
connect a USB keyboard to the available port and overcome all the
barriers that we thought we had built with a customized physical
keyboard.
In the latest solutions we have seen a progressive increase of
touch-screen solutions with on screen keyboards that, similarly to
physical ones, may be limited to a small set of characters, but
even here the connection of a USB keyboard, or a full-keyboard
application would defeat the whole.
We have to point out that all the virtual keyboards, both the
Windows internals and the customized ones, are not "filtered" from
this solution that is effective (by design) only for physical
keyboards.
Another element of attention is linked to the nationality of the
keyboard. The filter is designed to run on the English keyboard and
then all the names and key combinations must be spelled out in
English.
The keyboard filter has a number of predefined combinations that
can be managed with specific policies, but it also allows the
creation of customized ones, in order to covers all the needs
easily and effectively.
In this chapter we will analyze how to insert the right packages
in the build to handle the keyboard filter and how to configure it
so that the user won't be able to send unwanted key sequences
either to applications or the system.
How to insert "Keyboard Filter" package in the build
At this moment to insert "Keyboard Filter" package in the build
is very simple because it does not allow any configuration. The
package of this new feature is NOT included in SP1, but was
released later (September 2011) so, if you do not find "Keyboard
Filter" items inside the "Embedded Enabling Features", you have to
first update the working Distribution Share.
Keyboard Filter service
The keyboard filter feature is based on a Windows service named
"KeyboardFilter" that can be started or stopped from a command
prompt (with administrator rights).
To start it type: sc start keyboardfilter
To stop it type: sc stop keyboardfilter
If you stop the service, it will remain in the same state even
after the next computer restart. To restart the service you will
have to type the start command manually.
Keyboard Filter configuration
To configure keyboard filter parameters you have to use Local
Group Policy Editor(gpedit.msc) located in the folder
C:\Windows\System32\. This program is part of the Windows console
management (MMC, Microsoft Management Console), which
allows you to change, with the same user interface, configurations
for a single user and those referring to the system. You need
administrator privileges to use this console, but you can customize
configurations for each individual user. This is one of the reasons
why the Keyboard Filter configuration, at present, should be done
after the system is generated.
We can divide the key combinations that you can pick up in two
groups: predefined and custom.
Configure predefined key combinations
In this list the most common key combinations are grouped in
order to simplify the configuration. These combinations can be
divided into:
· Accessibility keys
· Application keys
· Desktop and shell keys
· Modifier keys
· Security keys
· Windows management keys
In the next post will enter more in detail of each group of
combinations.
Configure and test predefined key combination
In this list are grouped the predefined key combinations such
as: Ctrl+Alt+Canc, Windows+R,
etc. .... For each of these combinations, you can activate the
filter.
In a future post we will enter more into detail about how to
filter these combinations.
Configure custom key combinations
The part of custom key combination filters allows you to create
shortcuts NOT included in the predefined group. There is a
methodology and rules to follow to disable these combinations.
In a future post we will enter more into detail about how to
filter these combinations.
Configure Keyboard Filters for Non English Keyboards
Custom filters we discussed above, refer to the key "names" on
the US-English keyboard. When you want to refer to national
keyboard (take the case of "Italian") must still refer to the
English key names. For reference we list matching keys with their
names and groupings.
In a future post we will enter more into detail about these key
functions with their names and groupings.
Keyboard Filters and On-Screen Keyboards
The standard "On-Screen Keyboard" displays a visual keyboard
similar to that of the nation's current physical, where the keys
can be selected with the mouse or other pointing device (or your
fingers in case of touch-screen). The screen keyboard is not
blocked by filters.
Keyboard filters take effect only on physical keyboards. All the
software solutions that manage "virtual input keys" (using system
calls) cannot be blocked in this way.
In the next post of this article we will cover how to "Configure
and test predefined key combination".
These articles, divided into posts, were written, revised and
translated into English as well as by me by other two colleagues of
mine (both Microsoft Certified Trainer for Windows Embedded
Standard 7): Gianni Rosa Gallina and Dorangela Daniele.