testability-driver-qt-sut-plugin 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|