15.03.2015 Views

SetupDesignGuide.pdf - Firmware Encoding Index

SetupDesignGuide.pdf - Firmware Encoding Index

SetupDesignGuide.pdf - Firmware Encoding Index

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Setup Design Guide<br />

DRAFT<br />

Modifier Key Value:<br />

This defines the non-printable special function this key has assigned to it.<br />

Under normal circumstances, a key that has any Unicode definitions generally has a Control key value<br />

of SCAN_NULL. This means the key has no special function other than the printing of a character. If<br />

any of the Unicode values have a value of 0xFFFF this is the exception to the rule. Though rarely used,<br />

this is the one case which a key might have both a printable character and an active Control key value.<br />

An example of this would be the numeric keypad’s insert key. The definition for this key on a standard<br />

US keyboard is as follows:<br />

Key Name = ZERO_KEY<br />

Unicode Value = 0x0030 (basically a ‘0’)<br />

Shifted Unicode Value = 0xFFFF (the exception to the rule)<br />

Alt-GR Unicode Value = 0x0000<br />

Shifted Alt-GR Unicode Value = 0x0000<br />

Modifier Key Value = SCAN_INSERT<br />

This is one of the few keys that under normal circumstances prints something out, but also has a special<br />

function. These are generally limited to the numeric keypad, however this does not prevent someone<br />

from having the flexibility to define these types of variations.<br />

(Assuming for the implementation that the state of CapsLock and NumLock, etc will correctly handle<br />

the shift states since they do it already……just wanted to mention it and it was thought about)<br />

9.2 Modifier Key Definitions<br />

Modifier keys are defined to allow for special functionality that is not necessarily accomplished by a<br />

printable character. Many of these modifier keys are flags to toggle certain state bits on and off inside<br />

of a keyboard driver. An example is CAPS_LOCK_MODIFIER. This state being active could alter<br />

what the typing of a particular key produces. Other control keys affect the position of the cursor like<br />

LEFT_ARROW_MODIFIER, END_MODIFIER, etc. One modifier key is likely unfamiliar to most<br />

people who exclusively use US keyboards, and that key is the ALT_GR_MODIFIER key. This key’s<br />

primary purpose is to activate a secondary type of shift modifier that exposes additional printable<br />

characters on certain keys. In some keyboard layouts this key does not exist and is normally the<br />

RIGHT_ALT_MODIFIER key. None of the other modifier key functions should be a mystery to<br />

someone familiar with the usage of a standard computer keyboard.<br />

An example of a few descriptor entries would be as follows:<br />

Layout = {<br />

EfiKeyLCtrl,0,0,0,0,LEFT_CONTROL_MODIFIER, //(Left control key)<br />

EfiKeyA0,0,0,0,0,NULL_MODIFIER,<br />

//(Not defined windows key)<br />

EfiKeySpaceBar,0x0020,0x0020,0x0020,0x0020,NULL_MODIFIER //(Space Bar)<br />

}<br />

//<br />

// Define the Control modifier value information<br />

81

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!