
Using Enhanced DSS Keys on Yealink IP Phones
1
Using Enhanced DSS Keys on Yealink IP Phones
This guide provides detailed information for system administrators on how to set up enhanced DSS keys
(EDK) on Yealink IP phones.
The features introduced in this guide apply to the following Yealink IP phones:
SIP-T48S, SIP-T48G, SIP-T46S, SIP-T46G, SIP-T42S, SIP-T42G, SIP-T41S, SIP-T41P,
SIP-T40P/G, SIP-T29G, SIP-T27G, SIP-T23P/G, SIP-T21(P) E2 and SIP-T19(P) E2 IP phones
running firmware version 81 or later.
VP59/SIP-T58A IP phones running firmware version 83 or later.
SIP-T57W, SIP-T54W, SIP-T53W, SIP-T53, SIP-T48U, SIP-T46U, SIP-T43U and SIP-T42U IP
phones running firmware version 84 or later
Introduction
Enhanced DSS Keys (EDK) enables users to customize the functions of the phone's DSS keys (line keys,
programmable keys, and ext keys) and assign functions to custom soft keys. You can use EDK to assign
the frequently-used function to DSS keys and custom soft keys, to create menu shortcuts for
frequently-used phone settings as needed, or use EDK macro strings as the contact number. Using EDK
macro strings as the contact number does not apply to VP59/T48G/T46G/T42G/T41P/T29G IP phones.
The following shows the line keys and soft keys on SIP-T46G IP phones:
Note
The line keys do not apply to SIP-T19(P) E2 IP phones. The ext keys are only applicable to
SIP-T58A/T57W/T54W/T53W/T53/T48U/T48G/T48S/T46U/T46G/T46S/T43U/T29G/T27G IP
phones. And to customize the functions for ext keys, you have to connect the expansion module
to the IP phone in advance.

Using Enhanced DSS Keys on Yealink IP Phones
2
Application scenarios involve the following:
Adding new DSS keys or soft keys to simplify the operation of common telephony tasks that may
need more than one keypress with the default configuration.
Removing certain default DSS keys or soft keys for the functions that may be redundant or never
used.
One-touch connecting to the contact's extension number without entering DTMF digits manually.
(not applicable to VP59/T48G/T46G/T42G/T41P/T29G IP phones)
EDK provides a method of creating interactive macro call sequences that can be executed by the phone.
The interactivity involves the following actions:
Gather input data from the phone's user.
Send SIP signaling requests to a call server (INVITE or REFER).
Cause the phone to perform certain operations such as hang-up a call or place a call on hold.
Emulate a keypress on the phone.
Understanding Macro Action Strings
The DSS keys and custom soft keys can be defined by the following macro action strings:
1. Digits
2. $C<command>$
3. $T<type>$
4. $M<macro>$
5. $S<softkey ID>$
6. $K<key name>$
7. $I<menu item ID>$
8. $P<label>&T<title>&C<characters number allowed>&N&M$
9. $P<EDK user input prompt X>N<characters number allowed>$
10. $L<label>$
11. $LED<color and time>&L<label>$
The characters to be sent. The following characters are supported: . @ *
# + 0-9 and English letters. The appearance of this parameter depends
on the action string.
Example: *981135.
This is the command. It can appear anywhere in the action string.
Supported commands (or shortcuts) include:
hang up (hu)

Using Enhanced DSS Keys on Yealink IP Phones
3
hold (h)
waitconnect (wc)
pause <number of seconds> (p <num sec>) where the maximum
value is 10
Example: 4411$Cwc$$Cp10$ defines dialing
4411>>waitconnect>>connected and lasts 10 seconds.
The embedded action type. Multiple actions can be defined. Supported
action types include:
invite
dtmf
refer
intercom
Example: *338$Tdtmf$ defines sending the *338 by the type of DTMF.
Note: We recommend that you always define this field. If not, the
supplied digits are dialed using INVITE.
The embedded macro. The <macro> string must begin with a letter. If
the macro name is not defined, the execution of the action string will be
ignored.
Example: $MAA$ means invoking the EDK macro AA.
The functionality of performing this action is the same as that of pressing
the desired soft key.
Each soft key has a unique identifier on the IP phone, you can configure
this parameter according to the system-defined softkey ID. If the softkey
ID is not defined on the phone or there is no matched soft key on the
current screen, the execution of the action string will be ignored. The
softkey ID is case-insensitive.
Example: $Sanswer$ means pressing the Answer soft key.
Yealink IP phones support customizing soft keys. When invoking a
custom soft key, the prefix “#” must be added.
Example: If the custom softkey label is IVR1, the custom softkey ID is
custom_macro, then $S#custom_macro$ means pressing the IVR1
soft key.
Note: To view the softkey ID, you can configure the value of the
parameters “edk.id_mode.enable” to 1 (Enabled) and then long press
the Volume Up key when the phone is idle. For more information, refer to
Configuring EDK ID Mode.
The functionality of performing this action is the same as that of pressing
the desired hard key.

Using Enhanced DSS Keys on Yealink IP Phones
4
Supported key names include:
LineKeyX (for SIP-T57W/T48U/T48G/T48S, X=1-29; for
VP59/SIP-T58A/T54W/T46U/T46G/T46S/T29G, X=1-27; for
SIP-T42U/T42G/T42S/T41P/T41S, X=1-15; for
SIP-T53W/T53/T43U/T27G, X=1-21; for
SIP-T40P/T40G/T23P/T23G, X=1-3; for SIP-T21(P) E2, X=1-2).
SoftKeyX (X ranges from 1 to 4)
ArrowUp (not applicable to VP59/T58A/T57W)
ArrowDown (not applicable to VP59/T58A/T57W)
ArrowLeft (not applicable to VP59/T58A/T57W)
ArrowRight (not applicable to VP59/T58A/T57W)
VolDown
VolUp
Cancel (not applicable to VP59/T58A/T57W)
OK (not applicable to VP59/T58A/T57W)
DialPadX (X ranges from 0 to 9)
DialPadPound
DialPadStar
Headset
Mute
Message
Hold
Redial
Transfer
Speaker
Conference (only applicable to T29G/T27G)
ExtX@Y (X stands for the serial number of expansion module key,
Y stands for the serial number of expansion module; For
SIP-T48S/T48G/T46S/T46G/T29G: X ranges from 1 to 40, Y
ranges from 1 to 6; For
SIP-T58A/T57W/T54W/T53W/T53/T48U/T46U/T43U: X ranges
from 1 to 60, Y ranges from 1 to 3; @Y can be omitted if there is
only one expansion module connected to the phone.)
Menu (You can enter the menu by executing this command at any
interface except the non-executable situations. For example,
entering the menu is blocked during an active call.)
Home (For SIP-T57W/T48U/T48G/T48S IP phones, execute this
command on dialing screen to return Idle screen; For

Using Enhanced DSS Keys on Yealink IP Phones
5
VP59/SIP-T58A IP phones, execute this command on any screen
to return Home screen)
Example: $KDialPadPound$ means pressing the pound key.
Note: If a key (e.g., Redial key) is not found but the function is available,
the phone will perform the corresponding action. If a key is not found and
the function is unavailable, the execution of the action string will be
ignored.
The action is to position and enter the desired menu item.
Each menu item has a unique identifier on the IP phone, you can
configure this parameter according to the system-defined menu item ID.
If the menu item ID is not defined on the phone or there is no matched
menu item on the current screen, the execution of the action string will
be ignored. The menu item ID is case-insensitive.
Example: $Istatus_list& means entering the Status menu.
Note: To view the menu item ID, you can configure the value of the
parameter “edk.id_mode.enable” to 1 (Enabled) and then long press the
Volume Up key when the phone is idle. For more information, refer to
Configuring EDK ID Mode.
$P<label>&T<title>&C<
characters number
allowed>&N&M$
The user input prompt string.
“label” means the specified label for the user input prompt.
"title" means the specified title for the user input prompt.
“characters number allowed” defines the maximum number of input
characters.
If &N is included, the character type is Number (default input method:
123). If &N is not included, the character type is Text (default input
method: abc), you can manually change the input method. (For
VP59/T58A/T57W/T48U/T48S/T48G, if &N is included, the input mode
is numeric&symbolic. If &N is not included, the onscreen keyboard is
displayed, you can manually change the input mode.)
If &M is included, the inputs are masked by the asterisk characters “*”
(dot for VP59/T58A/T57W/T48U/T48S/T48G).
Example: $PPassword&C3&N&M means prompting a Password
pop-up box, the maximum number of input characters is 3, the input type
is Number, and the input is masked by the asterisk characters “*” (dot for
VP59/T58A/T57W/T48U/T48S/T48G).
Note: The &T<title> is an optional configuration. It does not apply to
T29G/T41P/T42G/T46G/T48G IP phones.
$P<EDK user input
prompt X>N<characters
The user input prompt string.
“EDK user input prompt X” means which EDK user input prompt is

Using Enhanced DSS Keys on Yealink IP Phones
6
invoked. It indicates the X as defined by “edk.edkprompt.X.enable”.
“characters number allowed” defines the maximum number of input
characters. You need to press the Enter soft key to complete data entry.
Example: $P2N5$ means invoking the EDK user input prompt 2 and
inputting 5 characters at most.
Note: For more information, refer to Defining an EDK Macro.
This is the label for the entire operation. The value can be any string
including the null string (in this case, no label displays).
This label is used if no label is configured for a Custom Key or a soft key,
otherwise, this one is ignored. Make this the first entry in the action
string.
Example: $LEDK2$1234$Tinvite$ defines calling out the number 1234
and using the label “EDK2” for a Custom Key or soft key.
$LED<color and
time>&L<label>$
(not applicable to
VP59/SIP-T19(P)
E2/CP920 IP phones)
The status of the BLF/BLF list key LED. Enable to specify the LED color
for the BLF/BLF list key, and specify the duration time (in milliseconds)
for the corresponding status of the BLF/BLF list key. The valid value of
the duration time ranges from 100 to 60000ms.
It can be composed of multiple combinations of "color" and "time". The
status will be stuck in an infinite loop until triggered by other macros.
Supported colors include (must be lowercase):
r (red)
ri (red; red with an incoming mark for
SIP-T58A/T57W/T48U/T48G/T48S)
ro (red; red with an outgoing mark for
SIP-T58A/T57W/T48U/T48G/T48S)
g (green)
gi (green; green with an incoming mark for
SIP-T58A/T57W/T48U/T48G/T48S)
go (green; green with an outgoing mark for
SIP-T58A/T57W/T48U/T48G/T48S)
y (yellow)
yi (yellow; yellow with an incoming mark for
SIP-T58A/T57W/T48U/T48S)
yo (yellow; yellow with an outgoing mark for
SIP-T58A/T57W/T48U/T48S)
yd (yellow; yellow with DND mark for SIP-T58A/T57W/T48U/T48S)
o (off)
&L<label> (Optional.): You have to put the “&L<label>” last in the

Using Enhanced DSS Keys on Yealink IP Phones
7
command flow.
Example: $LEDg1000o100r300&Lidle$ means an infinite loop for
BLF/BLF list key LED status: grow green for 1000ms, be in the off state
for 100ms and then glow red for 300ms. At the same time, the label of
the BLF/BLF list key is changed to “idle”.
Note: The last “color” can be configured without “time”, and it means
permanently displaying the last color until triggered by other macros.
This macro can be only used for BLF/BLF list feature.
Defining an EDK Macro
Before using EDK, you must be familiar with the macro language shown in this section. For more
information, refer to Understanding Macro Action Strings.
Using the Enhanced DSS Keys (EDK) List parameters to define a macro is optional and is useful when
defining more than one soft key or DSS key.
The Enhanced DSS Keys (EDK) Prompt parameters must be used if interactivity with the user is
implemented as part of any macro. If an EDK macro attempts to use a prompt that is disabled, the macro
execution will be ignored. A prompt is not required for every macro.
To configure EDK macro using configuration files:
1. Add/Edit EDK macro parameters in the configuration file (e.g., features.cfg).
The following table lists the information of parameters:
Enhanced DSS Keys (EDK) Parameter
features.enhanced_dss_keys.enable
Description:
It enables or disables the Enhanced DSS Keys (EDK) feature.
0-Disabled
1-Enabled
Enhanced DSS Keys (EDK) List Parameters
edk.edklist.X.enable
(X ranges from 1 to 255)

Using Enhanced DSS Keys on Yealink IP Phones
8
Description:
It enables or disables the Enhanced DSS Keys (EDK) macro X.
0-Disabled
1-Enabled
Note: It works only if the value of the parameter “features.enhanced_dss_keys.enable” is set to 1
(Enabled).
edk.edklist.X.mname
(X ranges from 1 to 255)
Description:
It configures the unique identifier used by the soft key or DSS key configuration to reference the
enhanced DSS keys entry for macro X.
It cannot start with a digit. This parameter must have a value, it cannot be left blank.
Note: If there are two or more same macros, the soft key or DSS key will invoke the macro with the
smallest value of X. It works only if the value of the parameter “features.enhanced_dss_keys.enable”
is set to 1 (Enabled).
edk.edklist.X.action
(X ranges from 1 to 255)
Description:
It configures the action string that contains a macro definition of the action that the softkey or DSS
key performs.
This parameter must have a value, it cannot be left blank. For a list of macro definitions and example
macro string, refer to Understanding Macro Action Strings.
Note: It works only if the value of the parameter “features.enhanced_dss_keys.enable” is set to 1
(Enabled).
Enhanced DSS Keys (EDK) User Input Prompt Parameters
edk.edkprompt.X.enable
(X ranges from 1 to 10)
Description:
It enables or disables the user input prompt X.
0-Disabled
1-Enabled
Note: If a macro attempts to use an EDK user input prompt that is disabled, the macro execution will
fail. It works only if the value of the parameter “features.enhanced_dss_keys.enable” is set to 1

Using Enhanced DSS Keys on Yealink IP Phones
9
edk.edkprompt.X.label
(X ranges from 1 to 10)
Description:
It configures the text string used as a label of the user input prompt X.
If it is left blank, Default is displayed.
Note: It works only if the values of the parameters “features.enhanced_dss_keys.enable” and
“edk.edkprompt.X.enable” are set to 1 (Enabled).
edk.edkprompt.X.type
(X ranges from 1 to 10)
Description:
It configures the type of characters entered by the user for user input prompt X.
If it is set to numeric, the default input method is 123, and you can switch among abc/ABC/2aB input
methods.
If it is set to text, the default input method is abc, and you can switch among ABC/2aB/123 input
methods.
Note: It works only if the values of the parameters “features.enhanced_dss_keys.enable” and
“edk.edkprompt.X.enable” are set to 1 (Enabled).
edk.edkprompt.X.userfeedback
(X ranges from 1 to 10)
Description:
It configures the user input feedback method for user input prompt X.
If it is set to visible, the entered text is visible.
If it is set to masked, the entered text is displayed as asterisk characters (*). It can be used to mask
password fields.
Note: It works only if the values of the parameters “features.enhanced_dss_keys.enable” and
“edk.edkprompt.X.enable” are set to 1 (Enabled).
edk.edkprompt.X.title
(X ranges from 1 to 10)
Description:
It configures the text string used as a title for the user input prompt X. The title appears at the top of
the user input prompt screen.
If it is left blank, EDK Prompt is displayed.
Example: