2013-10-17 164 views
1

是否有无论如何获取全局键盘光标(插入符号)当前位置的坐标,您可以使用mouseLocation来获取鼠标光标位置的坐标吗?获取当前键盘光标位置

回答

0

最接近的就是使用OS X的无障碍协议。这是为了帮助禁用用户操作计算机,但许多应用程序不支持它,或者不能很好地支持它。

的程序是这样的:

appRef = AXUIElementCreateApplication(appPID); 
focusElemRef = AXUIElementCopyAttributeValue(appRef,kAXFocusedUIElementAttribute, &theValue) 
AXUIElementCopyAttributeValue(focusElemRef, kAXSelectedTextRangeAttribute, &selRangeValue); 
AXUIElementCopyParameterizedAttributeValue(focusElemRef, kAXBoundsForRangeParameterizedAttribute, adjSelRangeValue, &boundsValue); 

由于该协议,许多应用程序,你不会得到超过FocusedUIElementAttribute步参差不齐的支持,但这与一些应用程序。

+0

感谢您的回复。是的,我也在考虑使用Accessibility API,但之前从未使用它,所以不知道如何使用它。我将通过Apple的UIElementInspector示例代码和文档来试图弄清楚我应该如何执行它。它看起来像你写的东西应该是一个很好的开始。 – Dennis

1

不,全球无法做到这一点。

如果你想在一个NSTextView做到在自己的应用程序一样,你会做这样的:

NSRange range = [textView selectedRange]; 
NSRange newRange = [[textView layoutManager] glyphRangeForCharacterRange:range actualCharacterRange:NULL]; 
NSRect rect = [[textView layoutManager] boundingRectForGlyphRange:newRange inTextContainer:[textView textContainer]]; 

RECT将所选文本的矩形,或在情况下只有插入点但没有选择,rect.origin是插入点的视图相对位置。