testability-driver-qt-sut-plugin 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/application.rb +16 -6
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/behaviour.rb +86 -12
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/configure_behaviour.rb +1 -1
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/events.rb +5 -3
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/file_transfer.rb +15 -0
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/fixture.rb +110 -76
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/gesture.rb +125 -69
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/sut.rb +28 -19
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/synchronization.rb +143 -24
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/widget.rb +25 -10
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/agent.rb +54 -0
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/application.rb +1 -0
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/configure_command.rb +32 -39
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/find_object.rb +8 -19
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/fixture.rb +35 -22
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/group.rb +31 -29
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/infologger_command.rb +23 -32
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/key_sequence.rb +44 -61
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/screen_capture.rb +22 -23
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/tap.rb +39 -28
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/version.rb +14 -24
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/widget.rb +39 -42
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/sut/adapter.rb +93 -120
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/sut/communication.rb +95 -75
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/find_object_generator.rb +6 -8
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/message_composer.rb +1 -1
- data/xml/behaviour/qt.xml +6 -0
- data/xml/keymap/win.xml +174 -0
- data/xml/template/qt.xml +128 -117
- metadata +60 -75
@@ -21,97 +21,99 @@ module MobyController
|
|
21
21
|
|
22
22
|
module QT
|
23
23
|
|
24
|
-
|
24
|
+
module Comms
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
# Command types
|
27
|
+
ERROR_MSG = 0
|
28
|
+
VALID_MSG = 1
|
29
|
+
OK_MESSAGE = "OK"
|
30
30
|
|
31
|
-
|
31
|
+
class Inflator
|
32
32
|
|
33
|
-
|
34
|
-
# strip 4 extra bytes written by qt compression, return empty string if no raw data found, otherwise inflate it
|
35
|
-
( raw_data = response[ 4 .. -1 ] ).empty? ? "" : Zlib::Inflate.inflate( raw_data )
|
36
|
-
end
|
33
|
+
def self.inflate( response )
|
37
34
|
|
38
|
-
|
39
|
-
|
35
|
+
# strip 4 extra bytes written by qt compression, return empty string if no raw data found, otherwise inflate it
|
36
|
+
( raw_data = response[ 4 .. -1 ] ).empty? ? "" : Zlib::Inflate.inflate( raw_data )
|
40
37
|
|
41
|
-
|
38
|
+
end
|
39
|
+
|
40
|
+
# enable hooking for performance measurement & debug logging
|
41
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
42
|
+
|
43
|
+
end # Inflator
|
42
44
|
|
43
45
|
# deprecated: see send_service_request#adapter.rb
|
44
|
-
|
45
|
-
|
46
|
+
# Wrapper for protocol message.
|
47
|
+
class QTResponse
|
46
48
|
|
47
|
-
|
49
|
+
attr_accessor :msg_body, :flag, :crc, :message_id
|
48
50
|
|
49
51
|
# deprecated: see send_service_request#adapter.rb
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
52
|
+
# Initialize QT Response.
|
53
|
+
# == params
|
54
|
+
# command_flag Indicator flad for message type (error or ok)
|
55
|
+
# message_code 0 or an error code
|
56
|
+
# msg_body Body of the message. For command a simple "OK" message for ui state the xml document as string
|
57
|
+
# == returns
|
58
|
+
def initialize( command_flag, msg_body, crc, message_id )
|
57
59
|
|
58
|
-
|
60
|
+
@flag, @msg_body, @crc, @message_id = command_flag, msg_body, crc, message_id
|
59
61
|
|
60
|
-
|
62
|
+
end
|
61
63
|
|
62
64
|
# deprecated: see send_service_request#adapter.rb
|
63
|
-
|
65
|
+
def validate_message( msg_id )
|
64
66
|
|
65
|
-
|
66
|
-
|
67
|
+
#check that response matches the request
|
68
|
+
if @message_id != msg_id
|
67
69
|
|
68
70
|
msg = "Response to request did not match: #{ @message_id.to_s.inspect }!=#{ msg_id.to_s.inspect }"
|
69
|
-
|
71
|
+
|
70
72
|
$logger.fatal msg
|
71
73
|
|
72
74
|
$logger.fatal @msg_body
|
73
|
-
|
74
|
-
raise RuntimeError, msg
|
75
|
-
|
76
|
-
end
|
77
75
|
|
78
|
-
|
79
|
-
|
76
|
+
raise RuntimeError, msg
|
77
|
+
|
78
|
+
end
|
80
79
|
|
81
|
-
|
80
|
+
#raise error if error flag
|
81
|
+
if @flag == Comms::ERROR_MSG
|
82
82
|
|
83
|
-
|
83
|
+
raise MobyBase::ApplicationNotAvailableError, @msg_body if @msg_body =~ /The application with Id \d+ is no longer available/
|
84
|
+
|
85
|
+
raise RuntimeError, @msg_body
|
84
86
|
|
85
87
|
end
|
86
88
|
|
87
|
-
|
89
|
+
end
|
88
90
|
|
89
|
-
|
90
|
-
|
91
|
+
# enable hooking for performance measurement & debug logging
|
92
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
91
93
|
|
92
|
-
|
94
|
+
end # QTResponse
|
93
95
|
|
94
|
-
|
95
|
-
|
96
|
+
# Message generator for qt tas messages
|
97
|
+
class MessageGenerator
|
96
98
|
|
97
|
-
|
99
|
+
def self.generate( message_data, message_flag = VALID_MSG )
|
98
100
|
|
99
|
-
|
101
|
+
MobyController::QT::Comms::QtMessage.new( message_flag, message_data )
|
100
102
|
|
101
|
-
|
103
|
+
end
|
102
104
|
|
103
|
-
|
104
|
-
|
105
|
+
# enable hooking for performance measurement & debug logging
|
106
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
105
107
|
|
106
|
-
|
108
|
+
end # MobyController
|
107
109
|
|
108
|
-
|
110
|
+
class QtMessage
|
109
111
|
|
110
|
-
|
112
|
+
attr_reader :flag, :data, :compression, :size
|
111
113
|
|
112
|
-
|
114
|
+
attr_accessor :message_id
|
113
115
|
|
114
|
-
|
116
|
+
def initialize( message_flag, message_data )
|
115
117
|
|
116
118
|
# message flag
|
117
119
|
@flag = message_flag
|
@@ -123,42 +125,60 @@ module MobyController
|
|
123
125
|
|
124
126
|
@size = @data.size
|
125
127
|
|
126
|
-
#
|
127
|
-
|
128
|
+
# calculate crc only when requested
|
129
|
+
@crc = nil
|
130
|
+
|
131
|
+
end
|
128
132
|
|
129
|
-
|
130
|
-
@crc = TDriver::Checksum.crc16_ibm( @data )
|
133
|
+
def crc
|
131
134
|
|
132
|
-
|
135
|
+
if @crc.nil?
|
133
136
|
|
134
|
-
|
137
|
+
# calculate outgoing message crc; sent in message header to receiver for data validation
|
138
|
+
@crc = TDriver::Checksum.crc16_ibm( @data )
|
135
139
|
|
136
|
-
|
140
|
+
else
|
137
141
|
|
138
|
-
|
142
|
+
@crc
|
139
143
|
|
140
|
-
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
141
147
|
|
142
|
-
|
148
|
+
def make_binary_message( message_id )
|
143
149
|
|
144
|
-
#@data = [ (@data.size & 0xff000000) >> 24, (@data.size & 0x00ff0000) >> 16, (@data.size & 0x0000ff00) >> 8, (@data.size & 0x000000ff), Zlib::Deflate.deflate( @data, 9 ) ].pack('C4a*')
|
145
150
|
|
146
|
-
|
151
|
+
[ @flag, @size, crc, @compression, message_id, @data ].pack( 'CISCIa*' )
|
147
152
|
|
148
|
-
|
149
|
-
@data = [ (data_size & 0xff000000) >> 24, (data_size & 0x00ff0000) >> 16, (data_size & 0x0000ff00) >> 8, (data_size & 0x000000ff), Zlib::Deflate.deflate( @data, 9 ) ].pack('C4a*')
|
153
|
+
end
|
150
154
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
+
def deflate( level = 9 )
|
156
|
+
|
157
|
+
unless @compression == 2
|
158
|
+
|
159
|
+
@compression = 2
|
160
|
+
|
161
|
+
data_size = @data.size
|
162
|
+
|
163
|
+
# qUncompress required the data length at the beginning so append it - the bytes need to be arranged in the below method (see QByteArray::qUncompress)
|
164
|
+
@data = [ ( data_size & 0xff000000 ) >> 24, ( data_size & 0x00ff0000 ) >> 16, ( data_size & 0x0000ff00 ) >> 8, ( data_size & 0x000000ff ), Zlib::Deflate.deflate( @data, level ) ].pack('C4a*')
|
165
|
+
|
166
|
+
# update data size
|
167
|
+
@size = @data.size
|
168
|
+
|
169
|
+
# recalculate crc
|
170
|
+
@crc = nil
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
155
175
|
|
156
|
-
|
157
|
-
|
176
|
+
# enable hooking for performance measurement & debug logging
|
177
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
158
178
|
|
159
|
-
|
179
|
+
end # QtMessage
|
160
180
|
|
161
|
-
|
181
|
+
end # Comms
|
162
182
|
|
163
183
|
end # QT
|
164
184
|
|
data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/find_object_generator.rb
CHANGED
@@ -40,7 +40,7 @@ module MobyUtil
|
|
40
40
|
|
41
41
|
when 'dynamic'
|
42
42
|
|
43
|
-
value =
|
43
|
+
value = TDriver::AttributeFilter.filter_string
|
44
44
|
|
45
45
|
filters[ 'attributeWhiteList' ] = value unless value.blank?
|
46
46
|
|
@@ -62,11 +62,9 @@ module MobyUtil
|
|
62
62
|
xml = "<TasCommands service=\"findObject\" #{ @_app_details.to_attributes }"
|
63
63
|
|
64
64
|
# pass checksum value if known from previous service request result
|
65
|
-
unless @_checksum.nil?
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
65
|
+
#unless @_checksum.nil?
|
66
|
+
# xml << " checksum=\"#{ @_checksum.to_s }\" "
|
67
|
+
#end
|
70
68
|
|
71
69
|
unless @_params.empty?
|
72
70
|
|
@@ -131,7 +129,7 @@ module MobyUtil
|
|
131
129
|
|
132
130
|
when 'dynamic'
|
133
131
|
|
134
|
-
filters[ 'attributeWhiteList' ] = value if ( value =
|
132
|
+
filters[ 'attributeWhiteList' ] = value if ( value = TDriver::AttributeFilter.filter_string )
|
135
133
|
|
136
134
|
when 'static'
|
137
135
|
|
@@ -261,7 +259,7 @@ module MobyUtil
|
|
261
259
|
|
262
260
|
when 'dynamic'
|
263
261
|
|
264
|
-
white_list =
|
262
|
+
white_list = TDriver::AttributeFilter.filter_string
|
265
263
|
|
266
264
|
params['attributeWhiteList'] = white_list if white_list
|
267
265
|
|
data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/message_composer.rb
CHANGED
@@ -275,7 +275,7 @@ module MobyUtil
|
|
275
275
|
|
276
276
|
when 'dynamic'
|
277
277
|
|
278
|
-
white_list =
|
278
|
+
white_list = TDriver::AttributeFilter.filter_string
|
279
279
|
params['attributeWhiteList'] = white_list if white_list
|
280
280
|
|
281
281
|
when 'static'
|
data/xml/behaviour/qt.xml
CHANGED
@@ -289,6 +289,12 @@
|
|
289
289
|
<description>Synchronizes execution to a signal. The script will wait until the given signal is emitted.</description>
|
290
290
|
<example>wait_for_signal(10, "clicked()")</example>
|
291
291
|
</method>
|
292
|
+
|
293
|
+
<method name="ensure_event">
|
294
|
+
<description>Make sure event is fired.</description>
|
295
|
+
<example>ensure_event()</example>
|
296
|
+
</method>
|
297
|
+
|
292
298
|
</methods>
|
293
299
|
|
294
300
|
</behaviour>
|
data/xml/keymap/win.xml
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
<!-- http://msdn.microsoft.com/en-us/library/dd375731%28v=VS.85%29.aspx -->
|
2
|
+
<keymap>
|
3
|
+
<parameter name="kLeftButton" value="0x01"/>
|
4
|
+
<parameter name="kRightButton" value="0x2"/>
|
5
|
+
<parameter name="kCancel" value="0x03"/>
|
6
|
+
<parameter name="kMiddleButton" value="0x04"/>
|
7
|
+
<parameter name="kXButton1" value="0x5"/>
|
8
|
+
<parameter name="kXButton2" value="0x06"/>
|
9
|
+
<parameter name="kBackSpace" value="0x08"/>
|
10
|
+
<parameter name="kTab" value="0x09"/>
|
11
|
+
<parameter name="kClear" value="0x0C"/>
|
12
|
+
<parameter name="kReturn" value="0x0D"/>
|
13
|
+
<parameter name="kShift" value="0x10"/>
|
14
|
+
<parameter name="kControl" value="0x11"/>
|
15
|
+
<parameter name="kAlt" value="0x12"/>
|
16
|
+
<parameter name="kPause" value="0x13"/>
|
17
|
+
<parameter name="kCapsLock" value="0x14"/>
|
18
|
+
<parameter name="kKana" value="0x15"/>
|
19
|
+
<parameter name="kHangul" value="0x15"/>
|
20
|
+
<parameter name="kJunja" value="0x17"/>
|
21
|
+
<parameter name="kFinal" value="0x18"/>
|
22
|
+
<parameter name="kHanja" value="0x19"/>
|
23
|
+
<parameter name="kKanji" value="0x19"/>
|
24
|
+
<parameter name="kEscape" value="0x1B"/>
|
25
|
+
<parameter name="kConvert" value="0x1C"/>
|
26
|
+
<parameter name="kNonConvert" value="0x1D"/>
|
27
|
+
<parameter name="kAccept" value="0x1E"/>
|
28
|
+
<parameter name="kModechange" value="0x1F"/>
|
29
|
+
<parameter name="kSpace" value="0x20"/>
|
30
|
+
<parameter name="kPageUp" value="0x21"/>
|
31
|
+
<parameter name="kPageDown" value="0x22"/>
|
32
|
+
<parameter name="kEnd" value="0x23"/>
|
33
|
+
<parameter name="kHome" value="0x24"/>
|
34
|
+
<parameter name="kLeft" value="0x25"/>
|
35
|
+
<parameter name="kUp" value="0x26"/>
|
36
|
+
<parameter name="kRight" value="0x27"/>
|
37
|
+
<parameter name="kDown" value="0x28"/>
|
38
|
+
<parameter name="kSelect" value="0x29"/>
|
39
|
+
<parameter name="kPrint" value="0x2A"/>
|
40
|
+
<parameter name="kExecute" value="0x2B"/>
|
41
|
+
<parameter name="kPrintScreen" value="0x2C"/>
|
42
|
+
<parameter name="kInsert" value="0x2D"/>
|
43
|
+
<parameter name="kDelete" value="0x2E"/>
|
44
|
+
<parameter name="kHelp" value="0x2F"/>
|
45
|
+
<parameter name="k0" value="0x30"/>
|
46
|
+
<parameter name="k1" value="0x31"/>
|
47
|
+
<parameter name="k2" value="0x32"/>
|
48
|
+
<parameter name="k3" value="0x33"/>
|
49
|
+
<parameter name="k4" value="0x34"/>
|
50
|
+
<parameter name="k5" value="0x35"/>
|
51
|
+
<parameter name="k6" value="0x36"/>
|
52
|
+
<parameter name="k7" value="0x37"/>
|
53
|
+
<parameter name="k8" value="0x38"/>
|
54
|
+
<parameter name="k9" value="0x39"/>
|
55
|
+
<parameter name="kA" value="0x41"/>
|
56
|
+
<parameter name="kB" value="0x42"/>
|
57
|
+
<parameter name="kC" value="0x43"/>
|
58
|
+
<parameter name="kD" value="0x44"/>
|
59
|
+
<parameter name="kE" value="0x45"/>
|
60
|
+
<parameter name="kF" value="0x46"/>
|
61
|
+
<parameter name="kG" value="0x47"/>
|
62
|
+
<parameter name="kH" value="0x48"/>
|
63
|
+
<parameter name="kJ" value="0x49"/>
|
64
|
+
<parameter name="kI" value="0x4A"/>
|
65
|
+
<parameter name="kK" value="0x4B"/>
|
66
|
+
<parameter name="kL" value="0x4C"/>
|
67
|
+
<parameter name="kM" value="0x4D"/>
|
68
|
+
<parameter name="kN" value="0x4E"/>
|
69
|
+
<parameter name="kO" value="0x4F"/>
|
70
|
+
<parameter name="kP" value="0x50"/>
|
71
|
+
<parameter name="kQ" value="0x51"/>
|
72
|
+
<parameter name="kR" value="0x52"/>
|
73
|
+
<parameter name="kS" value="0x53"/>
|
74
|
+
<parameter name="kT" value="0x54"/>
|
75
|
+
<parameter name="kU" value="0x55"/>
|
76
|
+
<parameter name="kV" value="0x56"/>
|
77
|
+
<parameter name="kW" value="0x57"/>
|
78
|
+
<parameter name="kX" value="0x58"/>
|
79
|
+
<parameter name="kY" value="0x59"/>
|
80
|
+
<parameter name="kZ" value="0x5A"/>
|
81
|
+
<parameter name="kLWin" value="0x5B"/>
|
82
|
+
<parameter name="kRWin" value="0x5C"/>
|
83
|
+
<parameter name="kkApps" value="0x5D"/>
|
84
|
+
<parameter name="kSleep" value="0x5F"/>
|
85
|
+
<parameter name="kNumpad0" value="0x60"/>
|
86
|
+
<parameter name="kNumpad1" value="0x61"/>
|
87
|
+
<parameter name="kNumpad2" value="0x62"/>
|
88
|
+
<parameter name="kNumpad3" value="0x63"/>
|
89
|
+
<parameter name="kNumpad4" value="0x64"/>
|
90
|
+
<parameter name="kNumpad5" value="0x65"/>
|
91
|
+
<parameter name="kNumpad6" value="0x66"/>
|
92
|
+
<parameter name="kNumpad7" value="0x67"/>
|
93
|
+
<parameter name="kNumpad8" value="0x68"/>
|
94
|
+
<parameter name="kNumpad9" value="0x69"/>
|
95
|
+
<parameter name="kMultiply" value="0x6A"/>
|
96
|
+
<parameter name="kAdd" value="0x6B"/>
|
97
|
+
<parameter name="kSeparator" value="0x6C"/>
|
98
|
+
<parameter name="kSubtract" value="0x6D"/>
|
99
|
+
<parameter name="kDecimal" value="0x6E"/>
|
100
|
+
<parameter name="kDivide" value="0x6F"/>
|
101
|
+
<parameter name="kF1" value="0x70"/>
|
102
|
+
<parameter name="kF2" value="0x71"/>
|
103
|
+
<parameter name="kF3" value="0x72"/>
|
104
|
+
<parameter name="kF4" value="0x73"/>
|
105
|
+
<parameter name="kF5" value="0x74"/>
|
106
|
+
<parameter name="kF6" value="0x75"/>
|
107
|
+
<parameter name="kF7" value="0x76"/>
|
108
|
+
<parameter name="kF8" value="0x77"/>
|
109
|
+
<parameter name="kF9" value="0x78"/>
|
110
|
+
<parameter name="kF10" value="0x79"/>
|
111
|
+
<parameter name="kF11" value="0x7A"/>
|
112
|
+
<parameter name="kF12" value="0x7B"/>
|
113
|
+
<parameter name="kF13" value="0x7C"/>
|
114
|
+
<parameter name="kF14" value="0x7D"/>
|
115
|
+
<parameter name="kF15" value="0x7E"/>
|
116
|
+
<parameter name="kF16" value="0x7F"/>
|
117
|
+
<parameter name="kF17" value="0x80H"/>
|
118
|
+
<parameter name="kF18" value="0x81H"/>
|
119
|
+
<parameter name="kF19" value="0x82H"/>
|
120
|
+
<parameter name="kF20" value="0x83H"/>
|
121
|
+
<parameter name="kF21" value="0x84H"/>
|
122
|
+
<parameter name="kF22" value="0x85H"/>
|
123
|
+
<parameter name="kF23" value="0x86H"/>
|
124
|
+
<parameter name="kF24" value="0x87H"/>
|
125
|
+
<parameter name="kNumlocl" value="0x90"/>
|
126
|
+
<parameter name="kScroll" value="0x91"/>
|
127
|
+
<parameter name="kLShift" value="0xA0"/>
|
128
|
+
<parameter name="kShift" value="0xA1"/>
|
129
|
+
<parameter name="kLControl" value="0xA2"/>
|
130
|
+
<parameter name="kRControl" value="0xA3"/>
|
131
|
+
<parameter name="kLMenu" value="0xA4"/>
|
132
|
+
<parameter name="kRMenu" value="0xA5"/>
|
133
|
+
<parameter name="kBrowserBack" value="0xA6"/>
|
134
|
+
<parameter name="kBrowserForward" value="0xA7"/>
|
135
|
+
<parameter name="kBrowserRefresh" value="0xA8"/>
|
136
|
+
<parameter name="kBrowserStop" value="0xA9"/>
|
137
|
+
<parameter name="kBrowserSearch" value="0xAA"/>
|
138
|
+
<parameter name="kBrowserFavorites" value="0xAB"/>
|
139
|
+
<parameter name="kBrowserHome" value="0xAC"/>
|
140
|
+
<parameter name="kVolumeMute" value="0xAD"/>
|
141
|
+
<parameter name="kVolumeDown" value="0xAE"/>
|
142
|
+
<parameter name="kVolumeUp" value="0xAF"/>
|
143
|
+
<parameter name="kNextTrack" value="0xB0"/>
|
144
|
+
<parameter name="kPrevTrack" value="0xB1"/>
|
145
|
+
<parameter name="kStop" value="0xB2"/>
|
146
|
+
<parameter name="kPause" value="0xB3"/>
|
147
|
+
<parameter name="kLaunchMail" value="0xB4"/>
|
148
|
+
<parameter name="kMediaSelect" value="0xB5"/>
|
149
|
+
<parameter name="kLaunchApp1" value="0xB6"/>
|
150
|
+
<parameter name="kLaunchApp2" value="0xB7"/>
|
151
|
+
<parameter name="kOem1" value="0xBA"/>
|
152
|
+
<parameter name="kOemPlus" value="0xBB"/>
|
153
|
+
<parameter name="kOemMinus" value="0xBD"/>
|
154
|
+
<parameter name="kOemPeriod" value="0xBE"/>
|
155
|
+
<parameter name="kOem2" value="0xBF"/>
|
156
|
+
<parameter name="kOem3" value="0xC0"/>
|
157
|
+
<parameter name="kOem4" value="0xDB"/>
|
158
|
+
<parameter name="kOem5" value="0xDC"/>
|
159
|
+
<parameter name="kOem6" value="0xDD"/>
|
160
|
+
<parameter name="kOem7" value="0xDE"/>
|
161
|
+
<parameter name="kOem8" value="0xDF"/>
|
162
|
+
<parameter name="kOem102" value="0xE2"/>
|
163
|
+
<parameter name="kProcess" value="0xE5"/>
|
164
|
+
<parameter name="kPacket" value="0xE7"/>
|
165
|
+
<parameter name="kAttn" value="0xF6"/>
|
166
|
+
<parameter name="kCrSel" value="0xF7"/>
|
167
|
+
<parameter name="kExSel" value="0xF8"/>
|
168
|
+
<parameter name="kEraseEof" value="0xF9"/>
|
169
|
+
<parameter name="kPlay" value="0xFa"/>
|
170
|
+
<parameter name="kZoom" value="0xFB"/>
|
171
|
+
<parameter name="kNoName" value="0xFC"/>
|
172
|
+
<parameter name="kPa1" value="0xFD"/>
|
173
|
+
<parameter name="kClear" value="0xFE"/>
|
174
|
+
</keymap>
|