1*3a700b0aSSteve Yin/**************************************************************
2*3a700b0aSSteve Yin *
3*3a700b0aSSteve Yin * Licensed to the Apache Software Foundation (ASF) under one
4*3a700b0aSSteve Yin * or more contributor license agreements.  See the NOTICE file
5*3a700b0aSSteve Yin * distributed with this work for additional information
6*3a700b0aSSteve Yin * regarding copyright ownership.  The ASF licenses this file
7*3a700b0aSSteve Yin * to you under the Apache License, Version 2.0 (the
8*3a700b0aSSteve Yin * "License"); you may not use this file except in compliance
9*3a700b0aSSteve Yin * with the License.  You may obtain a copy of the License at
10*3a700b0aSSteve Yin *
11*3a700b0aSSteve Yin *   http://www.apache.org/licenses/LICENSE-2.0
12*3a700b0aSSteve Yin *
13*3a700b0aSSteve Yin * Unless required by applicable law or agreed to in writing,
14*3a700b0aSSteve Yin * software distributed under the License is distributed on an
15*3a700b0aSSteve Yin * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*3a700b0aSSteve Yin * KIND, either express or implied.  See the License for the
17*3a700b0aSSteve Yin * specific language governing permissions and limitations
18*3a700b0aSSteve Yin * under the License.
19*3a700b0aSSteve Yin *
20*3a700b0aSSteve Yin *************************************************************/
215fdc4257SSteve Yin
225fdc4257SSteve Yinimport "objidl.idl";
235fdc4257SSteve Yinimport "oaidl.idl";
245fdc4257SSteve Yinimport "oleacc.idl";
255fdc4257SSteve Yinimport "AccessibleKeyStroke.idl";
265fdc4257SSteve Yin
275fdc4257SSteve Yin[object, uuid(6B1923AC-3E9A-4336-99E1-A69EA4E946E9)]
285fdc4257SSteve Yininterface IAccessibleKeyBinding : IUnknown
295fdc4257SSteve Yin{
305fdc4257SSteve Yin  ///
315fdc4257SSteve Yin  /// get number of key bindings for this object
325fdc4257SSteve Yin  ///
335fdc4257SSteve Yin  [propget] HRESULT nKeyBindings
345fdc4257SSteve Yin    (
355fdc4257SSteve Yin     [out, retval] long *nKeyBindings
365fdc4257SSteve Yin     );
375fdc4257SSteve Yin
385fdc4257SSteve Yin  ///
395fdc4257SSteve Yin  /// get length of keystroke sequence for specified key binding
405fdc4257SSteve Yin  ///
415fdc4257SSteve Yin  [propget] HRESULT keyStrokeSequenceLength
425fdc4257SSteve Yin    (
435fdc4257SSteve Yin     [in] long keyBindingIndex,
445fdc4257SSteve Yin     [out] long *sequenceLength
455fdc4257SSteve Yin     );
465fdc4257SSteve Yin
475fdc4257SSteve Yin  ///
485fdc4257SSteve Yin  /// The returned sequence of key strokes describes one method
495fdc4257SSteve Yin  /// to invoke the associated action (the one from which you
505fdc4257SSteve Yin  /// obtained the object at which you called this method) by
515fdc4257SSteve Yin  /// pressing keys. The keys specified by each of the returned
525fdc4257SSteve Yin  /// key strokes have to be pressed at the same time (the
535fdc4257SSteve Yin  /// Control-key and the A-key for example). The keys of one key
545fdc4257SSteve Yin  /// stroke have to be released before pressing those of the next.
555fdc4257SSteve Yin  /// The order of the key strokes in the sequence define the order
565fdc4257SSteve Yin  /// in which to press them.
575fdc4257SSteve Yin  ///
585fdc4257SSteve Yin  [propget] HRESULT keyBinding
595fdc4257SSteve Yin    (
605fdc4257SSteve Yin     [in] long keyBindingIndex,
615fdc4257SSteve Yin     [in] long keyStrokeSequenceLength,
625fdc4257SSteve Yin     [out, size_is(,keyStrokeSequenceLength), length_is(,*actualKeyStrokeSequenceLength)]
635fdc4257SSteve Yin       ACCESSIBLE_KEYSTROKE **keyStroke,
645fdc4257SSteve Yin     [out, retval] long *actualKeyStrokeSequenceLength
655fdc4257SSteve Yin     );
665fdc4257SSteve Yin}
67