mirror of
https://github.com/debauchee/barrier.git
synced 2024-11-23 20:12:39 +03:00
Remove support for OSX 10.4 and below #2765
This commit is contained in:
parent
6e7adeac85
commit
929431f5fc
@ -20,31 +20,18 @@
|
||||
#include "arch/Arch.h"
|
||||
#include "base/Log.h"
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
#include <Carbon/Carbon.h>
|
||||
#endif
|
||||
|
||||
// Note that some virtual keys codes appear more than once. The
|
||||
// first instance of a virtual key code maps to the KeyID that we
|
||||
// want to generate for that code. The others are for mapping
|
||||
// different KeyIDs to a single key code.
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
static const UInt32 s_shiftVK = kVK_Shift;
|
||||
static const UInt32 s_controlVK = kVK_Control;
|
||||
static const UInt32 s_altVK = kVK_Option;
|
||||
static const UInt32 s_superVK = kVK_Command;
|
||||
static const UInt32 s_capsLockVK = kVK_CapsLock;
|
||||
static const UInt32 s_numLockVK = kVK_ANSI_KeypadClear; // 71
|
||||
#else
|
||||
// Hardcoded virtual key table on 10.4 and below.
|
||||
static const UInt32 s_shiftVK = 56;
|
||||
static const UInt32 s_controlVK = 59;
|
||||
static const UInt32 s_altVK = 58;
|
||||
static const UInt32 s_superVK = 55;
|
||||
static const UInt32 s_capsLockVK = 57;
|
||||
static const UInt32 s_numLockVK = 71;
|
||||
#endif
|
||||
|
||||
static const UInt32 s_osxNumLock = 1 << 16;
|
||||
|
||||
@ -54,7 +41,6 @@ public:
|
||||
UInt32 m_virtualKey;
|
||||
};
|
||||
static const KeyEntry s_controlKeys[] = {
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
// cursor keys. if we don't do this we'll may still get these from
|
||||
// the keyboard resource but they may not correspond to the arrow
|
||||
// keys.
|
||||
@ -103,56 +89,7 @@ static const KeyEntry s_controlKeys[] = {
|
||||
{ kKeyKP_Divide, kVK_ANSI_KeypadDivide },
|
||||
{ kKeyKP_Subtract, kVK_ANSI_KeypadMinus },
|
||||
{ kKeyKP_Enter, kVK_ANSI_KeypadEnter },
|
||||
#else
|
||||
// Hardcoded virtual key table on 10.4 and below.
|
||||
// cursor keys.
|
||||
{ kKeyLeft, 123 },
|
||||
{ kKeyRight, 124 },
|
||||
{ kKeyUp, 126 },
|
||||
{ kKeyDown, 125 },
|
||||
{ kKeyHome, 115 },
|
||||
{ kKeyEnd, 119 },
|
||||
{ kKeyPageUp, 116 },
|
||||
{ kKeyPageDown, 121 },
|
||||
{ kKeyInsert, 114 },
|
||||
|
||||
// function keys
|
||||
{ kKeyF1, 122 },
|
||||
{ kKeyF2, 120 },
|
||||
{ kKeyF3, 99 },
|
||||
{ kKeyF4, 118 },
|
||||
{ kKeyF5, 96 },
|
||||
{ kKeyF6, 97 },
|
||||
{ kKeyF7, 98 },
|
||||
{ kKeyF8, 100 },
|
||||
{ kKeyF9, 101 },
|
||||
{ kKeyF10, 109 },
|
||||
{ kKeyF11, 103 },
|
||||
{ kKeyF12, 111 },
|
||||
{ kKeyF13, 105 },
|
||||
{ kKeyF14, 107 },
|
||||
{ kKeyF15, 113 },
|
||||
{ kKeyF16, 106 },
|
||||
|
||||
{ kKeyKP_0, 82 },
|
||||
{ kKeyKP_1, 83 },
|
||||
{ kKeyKP_2, 84 },
|
||||
{ kKeyKP_3, 85 },
|
||||
{ kKeyKP_4, 86 },
|
||||
{ kKeyKP_5, 87 },
|
||||
{ kKeyKP_6, 88 },
|
||||
{ kKeyKP_7, 89 },
|
||||
{ kKeyKP_8, 91 },
|
||||
{ kKeyKP_9, 92 },
|
||||
{ kKeyKP_Decimal, 65 },
|
||||
{ kKeyKP_Equal, 81 },
|
||||
{ kKeyKP_Multiply, 67 },
|
||||
{ kKeyKP_Add, 69 },
|
||||
{ kKeyKP_Divide, 75 },
|
||||
{ kKeyKP_Subtract, 78 },
|
||||
{ kKeyKP_Enter, 76 },
|
||||
#endif
|
||||
|
||||
|
||||
// virtual key 110 is fn+enter and i have no idea what that's supposed
|
||||
// to map to. also the enter key with numlock on is a modifier but i
|
||||
// don't know which.
|
||||
@ -303,13 +240,8 @@ OSXKeyState::mapKeyFromEvent(KeyIDs& ids,
|
||||
}
|
||||
|
||||
// get keyboard info
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
TISInputSourceRef currentKeyboardLayout = TISCopyCurrentKeyboardLayoutInputSource();
|
||||
#else
|
||||
KeyboardLayoutRef currentKeyboardLayout;
|
||||
OSStatus status = KLGetCurrentKeyboardLayout(¤tKeyboardLayout);
|
||||
#endif
|
||||
|
||||
if (currentKeyboardLayout == NULL) {
|
||||
return kKeyNone;
|
||||
}
|
||||
@ -343,17 +275,10 @@ OSXKeyState::mapKeyFromEvent(KeyIDs& ids,
|
||||
}
|
||||
|
||||
// translate via uchr resource
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
CFDataRef ref = (CFDataRef) TISGetInputSourceProperty(currentKeyboardLayout,
|
||||
kTISPropertyUnicodeKeyLayoutData);
|
||||
const UCKeyboardLayout* layout = (const UCKeyboardLayout*) CFDataGetBytePtr(ref);
|
||||
const bool layoutValid = (layout != NULL);
|
||||
#else
|
||||
const void* resource;
|
||||
int err = KLGetKeyboardLayoutProperty(currentKeyboardLayout, kKLuchrData, &resource);
|
||||
const bool layoutValid = (err == noErr);
|
||||
const UCKeyboardLayout* layout = (const UCKeyboardLayout*)resource;
|
||||
#endif
|
||||
|
||||
if (layoutValid) {
|
||||
// translate key
|
||||
@ -454,13 +379,7 @@ SInt32
|
||||
OSXKeyState::pollActiveGroup() const
|
||||
{
|
||||
bool layoutValid = true;
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
TISInputSourceRef keyboardLayout = TISCopyCurrentKeyboardLayoutInputSource();
|
||||
#else
|
||||
KeyboardLayoutRef keyboardLayout;
|
||||
OSStatus status = KLGetCurrentKeyboardLayout(&keyboardLayout);
|
||||
layoutValid = (status == noErr);
|
||||
#endif
|
||||
|
||||
if (layoutValid) {
|
||||
GroupMap::const_iterator i = m_groupMap.find(keyboardLayout);
|
||||
@ -508,16 +427,11 @@ OSXKeyState::getKeyMap(synergy::KeyMap& keyMap)
|
||||
|
||||
// add regular keys
|
||||
// try uchr resource first
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
CFDataRef resourceRef = (CFDataRef)TISGetInputSourceProperty(
|
||||
m_groups[g], kTISPropertyUnicodeKeyLayoutData);
|
||||
layoutValid = resourceRef != NULL;
|
||||
if (layoutValid)
|
||||
resource = CFDataGetBytePtr(resourceRef);
|
||||
#else
|
||||
layoutValid = KLGetKeyboardLayoutProperty(
|
||||
m_groups[g], kKLuchrData, &resource);
|
||||
#endif
|
||||
|
||||
if (layoutValid) {
|
||||
CUCHRKeyResource uchr(resource, keyboardType);
|
||||
@ -862,7 +776,6 @@ OSXKeyState::getGroups(GroupList& groups) const
|
||||
CFIndex n;
|
||||
bool gotLayouts = false;
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
// get number of layouts
|
||||
CFStringRef keys[] = { kTISPropertyInputSourceCategory };
|
||||
CFStringRef values[] = { kTISCategoryKeyboardInputSource };
|
||||
@ -870,10 +783,6 @@ OSXKeyState::getGroups(GroupList& groups) const
|
||||
CFArrayRef kbds = TISCreateInputSourceList(dict, false);
|
||||
n = CFArrayGetCount(kbds);
|
||||
gotLayouts = (n != 0);
|
||||
#else
|
||||
OSStatus status = KLGetKeyboardLayoutCount(&n);
|
||||
gotLayouts = (status == noErr);
|
||||
#endif
|
||||
|
||||
if (!gotLayouts) {
|
||||
LOG((CLOG_DEBUG1 "can't get keyboard layouts"));
|
||||
@ -884,14 +793,9 @@ OSXKeyState::getGroups(GroupList& groups) const
|
||||
groups.clear();
|
||||
for (CFIndex i = 0; i < n; ++i) {
|
||||
bool addToGroups = true;
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
TISInputSourceRef keyboardLayout =
|
||||
(TISInputSourceRef)CFArrayGetValueAtIndex(kbds, i);
|
||||
#else
|
||||
KeyboardLayoutRef keyboardLayout;
|
||||
status = KLGetKeyboardLayoutAtIndex(i, &keyboardLayout);
|
||||
addToGroups == (status == noErr);
|
||||
#endif
|
||||
|
||||
if (addToGroups)
|
||||
groups.push_back(keyboardLayout);
|
||||
}
|
||||
@ -901,11 +805,7 @@ OSXKeyState::getGroups(GroupList& groups) const
|
||||
void
|
||||
OSXKeyState::setGroup(SInt32 group)
|
||||
{
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
TISSetInputMethodKeyboardLayoutOverride(m_groups[group]);
|
||||
#else
|
||||
KLSetCurrentKeyboardLayout(m_groups[group]);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
@ -1050,14 +950,11 @@ OSXKeyState::KeyResource::getKeyID(UInt8 c)
|
||||
str[0] = static_cast<char>(c);
|
||||
str[1] = 0;
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
// get current keyboard script
|
||||
TISInputSourceRef isref = TISCopyCurrentKeyboardInputSource();
|
||||
CFArrayRef langs = (CFArrayRef) TISGetInputSourceProperty(isref, kTISPropertyInputSourceLanguages);
|
||||
CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)CFArrayGetValueAtIndex(langs, 0));
|
||||
#else
|
||||
CFStringEncoding encoding = GetScriptManagerVariable(smKeyScript);
|
||||
#endif
|
||||
CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding(
|
||||
(CFStringRef)CFArrayGetValueAtIndex(langs, 0));
|
||||
// convert to unicode
|
||||
CFStringRef cfString =
|
||||
CFStringCreateWithCStringNoCopy(
|
||||
|
@ -25,11 +25,7 @@
|
||||
|
||||
#include <Carbon/Carbon.h>
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
typedef TISInputSourceRef KeyLayout;
|
||||
#else
|
||||
typedef KeyboardLayoutRef KeyLayout;
|
||||
#endif
|
||||
typedef TISInputSourceRef KeyLayout;
|
||||
|
||||
//! OS X key state
|
||||
/*!
|
||||
|
@ -136,15 +136,7 @@ OSXScreen::OSXScreen(IEventQueue* events, bool isPrimary, bool autoShowHideCurso
|
||||
}
|
||||
|
||||
// install display manager notification handler
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
CGDisplayRegisterReconfigurationCallback(displayReconfigurationCallback, this);
|
||||
#else
|
||||
m_displayManagerNotificationUPP =
|
||||
NewDMExtendedNotificationUPP(displayManagerCallback);
|
||||
OSStatus err = GetCurrentProcess(&m_PSN);
|
||||
err = DMRegisterExtendedNotifyProc(m_displayManagerNotificationUPP,
|
||||
this, 0, &m_PSN);
|
||||
#endif
|
||||
|
||||
// install fast user switching event handler
|
||||
EventTypeSpec switchEventTypes[2];
|
||||
@ -182,24 +174,8 @@ OSXScreen::OSXScreen(IEventQueue* events, bool isPrimary, bool autoShowHideCurso
|
||||
if (m_switchEventHandlerRef != 0) {
|
||||
RemoveEventHandler(m_switchEventHandlerRef);
|
||||
}
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
|
||||
CGDisplayRemoveReconfigurationCallback(displayReconfigurationCallback, this);
|
||||
#else
|
||||
if (m_displayManagerNotificationUPP != NULL) {
|
||||
DMRemoveExtendedNotifyProc(m_displayManagerNotificationUPP,
|
||||
NULL, &m_PSN, 0);
|
||||
}
|
||||
|
||||
if (m_hiddenWindow) {
|
||||
ReleaseWindow(m_hiddenWindow);
|
||||
m_hiddenWindow = NULL;
|
||||
}
|
||||
|
||||
if (m_userInputWindow) {
|
||||
ReleaseWindow(m_userInputWindow);
|
||||
m_userInputWindow = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
delete m_keyState;
|
||||
delete m_screensaver;
|
||||
@ -245,22 +221,7 @@ OSXScreen::~OSXScreen()
|
||||
|
||||
RemoveEventHandler(m_switchEventHandlerRef);
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
CGDisplayRemoveReconfigurationCallback(displayReconfigurationCallback, this);
|
||||
#else
|
||||
DMRemoveExtendedNotifyProc(m_displayManagerNotificationUPP,
|
||||
NULL, &m_PSN, 0);
|
||||
|
||||
if (m_hiddenWindow) {
|
||||
ReleaseWindow(m_hiddenWindow);
|
||||
m_hiddenWindow = NULL;
|
||||
}
|
||||
|
||||
if (m_userInputWindow) {
|
||||
ReleaseWindow(m_userInputWindow);
|
||||
m_userInputWindow = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
delete m_keyState;
|
||||
delete m_screensaver;
|
||||
@ -705,7 +666,6 @@ void
|
||||
OSXScreen::fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const
|
||||
{
|
||||
if (xDelta != 0 || yDelta != 0) {
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
// create a scroll event, post it and release it. not sure if kCGScrollEventUnitLine
|
||||
// is the right choice here over kCGScrollEventUnitPixel
|
||||
CGEventRef scrollEvent = CGEventCreateScrollWheelEvent(
|
||||
@ -719,12 +679,6 @@ OSXScreen::fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const
|
||||
|
||||
CGEventPost(kCGHIDEventTap, scrollEvent);
|
||||
CFRelease(scrollEvent);
|
||||
#else
|
||||
|
||||
CGPostScrollWheelEvent(
|
||||
2, mapScrollWheelFromSynergy(yDelta),
|
||||
-mapScrollWheelFromSynergy(xDelta));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -1236,43 +1190,7 @@ OSXScreen::handleClipboardCheck(const Event&, void*)
|
||||
checkClipboards();
|
||||
}
|
||||
|
||||
#if !defined(MAC_OS_X_VERSION_10_5)
|
||||
pascal void
|
||||
OSXScreen::displayManagerCallback(void* inUserData, SInt16 inMessage, void*)
|
||||
{
|
||||
OSXScreen* screen = (OSXScreen*)inUserData;
|
||||
|
||||
if (inMessage == kDMNotifyEvent) {
|
||||
screen->onDisplayChange();
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
OSXScreen::onDisplayChange()
|
||||
{
|
||||
// screen resolution may have changed. save old shape.
|
||||
SInt32 xOld = m_x, yOld = m_y, wOld = m_w, hOld = m_h;
|
||||
|
||||
// update shape
|
||||
updateScreenShape();
|
||||
|
||||
// do nothing if resolution hasn't changed
|
||||
if (xOld != m_x || yOld != m_y || wOld != m_w || hOld != m_h) {
|
||||
if (m_isPrimary) {
|
||||
// warp mouse to center if off screen
|
||||
if (!m_isOnScreen) {
|
||||
warpCursor(m_xCenter, m_yCenter);
|
||||
}
|
||||
}
|
||||
|
||||
// send new screen info
|
||||
sendEvent(m_events->forIPrimaryScreen().shapeChanged());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
void
|
||||
void
|
||||
OSXScreen::displayReconfigurationCallback(CGDirectDisplayID displayID, CGDisplayChangeSummaryFlags flags, void* inUserData)
|
||||
{
|
||||
OSXScreen* screen = (OSXScreen*)inUserData;
|
||||
@ -1293,7 +1211,6 @@ OSXScreen::displayReconfigurationCallback(CGDirectDisplayID displayID, CGDisplay
|
||||
screen->updateScreenShape(displayID, flags);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
OSXScreen::onKey(CGEventRef event)
|
||||
|
@ -125,9 +125,6 @@ private:
|
||||
bool onMouseButton(bool pressed, UInt16 macButton);
|
||||
bool onMouseWheel(SInt32 xDelta, SInt32 yDelta) const;
|
||||
|
||||
#if !defined(MAC_OS_X_VERSION_10_5)
|
||||
bool onDisplayChange();
|
||||
#endif
|
||||
void constructMouseButtonEventMap();
|
||||
|
||||
bool onKey(CGEventRef event);
|
||||
@ -165,14 +162,10 @@ private:
|
||||
// clipboard check timer handler
|
||||
void handleClipboardCheck(const Event&, void*);
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_10_5)
|
||||
// Resolution switch callback
|
||||
static void displayReconfigurationCallback(CGDirectDisplayID,
|
||||
CGDisplayChangeSummaryFlags, void*);
|
||||
#else
|
||||
static pascal void displayManagerCallback(void* inUserData,
|
||||
SInt16 inMessage, void* inNotifyData);
|
||||
#endif
|
||||
|
||||
// fast user switch callback
|
||||
static pascal OSStatus
|
||||
userSwitchCallback(EventHandlerCallRef nextHandler,
|
||||
@ -305,12 +298,6 @@ private:
|
||||
// does not have focus.
|
||||
WindowRef m_userInputWindow;
|
||||
|
||||
#if !defined(MAC_OS_X_VERSION_10_5)
|
||||
// display manager stuff (to get screen resolution switches).
|
||||
DMExtendedNotificationUPP m_displayManagerNotificationUPP;
|
||||
ProcessSerialNumber m_PSN;
|
||||
#endif
|
||||
|
||||
// fast user switching
|
||||
EventHandlerRef m_switchEventHandlerRef;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user