blob: cdd78309590a98007a1f7222e0884cea3c54fdce (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
//
// GTMHotKeyTextField.h
//
// Copyright 2006-2010 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
//
// Text field for capturing hot key entry. This is intended to be similar to the
// Apple key editor in their Keyboard pref pane.
// NOTE: There are strings that need to be localized to use this field. See the
// code in stringForKeycode the the keys. The keys are all the English versions
// so you'll get reasonable things if you don't have a strings file.
#import <Cocoa/Cocoa.h>
#import "GTMDefines.h"
@interface GTMHotKey : NSObject <NSCopying> {
@private
NSUInteger modifiers_;
NSUInteger keyCode_;
BOOL doubledModifier_;
}
+ (id)hotKeyWithKeyCode:(NSUInteger)keyCode
modifiers:(NSUInteger)modifiers
useDoubledModifier:(BOOL)doubledModifier;
- (id)initWithKeyCode:(NSUInteger)keyCode
modifiers:(NSUInteger)modifiers
useDoubledModifier:(BOOL)doubledModifier;
// Custom accessors (readonly, nonatomic)
- (NSUInteger)modifiers;
- (NSUInteger)keyCode;
- (BOOL)doubledModifier;
@end
// Notes:
// - Though you are free to implement control:textShouldEndEditing: in your
// delegate its return is always ignored. The field always accepts only
// one hotkey keystroke before editing ends.
// - The "value" binding of this control is to the dictionary describing the
// hotkey.
// - The field does not attempt to consume all hotkeys. Hotkeys which are
// already bound in Apple prefs or other applications will have their
// normal effect.
//
@interface GTMHotKeyTextField : NSTextField
@end
@interface GTMHotKeyTextFieldCell : NSTextFieldCell {
@private
GTMHotKey *hotKey_;
}
// Convert Cocoa modifier flags (-[NSEvent modifierFlags]) into a string for
// display. Modifiers are represented in the string in the same order they would
// appear in the Menu Manager.
//
// Args:
// flags: -[NSEvent modifierFlags]
//
// Returns:
// Autoreleased NSString
//
+ (NSString *)stringForModifierFlags:(NSUInteger)flags;
// Convert a keycode into a string that would result from typing the keycode in
// the current keyboard layout. This may be one or more characters.
//
// Args:
// keycode: Virtual keycode such as one obtained from NSEvent
// useGlyph: In many cases the glyphs are confusing, and a string is clearer.
// However, if you want to display in a menu item, use must
// have a glyph. Set useGlyph to FALSE to get localized strings
// which are better for UI display in places other than menus.
// bundle: Localization bundle to use for localizable key names
//
// Returns:
// Autoreleased NSString
//
+ (NSString *)stringForKeycode:(UInt16)keycode
useGlyph:(BOOL)useGlyph
resourceBundle:(NSBundle *)bundle;
@end
// Custom field editor for use with hotkey entry fields (GTMHotKeyTextField).
// See the GTMHotKeyTextField for instructions on using from the window
// delegate.
@interface GTMHotKeyFieldEditor : NSTextView {
@private
GTMHotKeyTextFieldCell *cell_;
}
// Get the shared field editor for all hot key fields
+ (GTMHotKeyFieldEditor *)sharedHotKeyFieldEditor;
// Custom accessors (retain, nonatomic)
- (GTMHotKeyTextFieldCell *)cell;
@end
|