/* * Copyright (C) 2012 Webdoc SA * * This file is part of Open-Sankoré. * * Open-Sankoré is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation, version 2, * with a specific linking exception for the OpenSSL project's * "OpenSSL" library (or with modified versions of it that use the * same license as the "OpenSSL" library). * * Open-Sankoré is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with Open-Sankoré; if not, see * . */ #include "UBKeyboardPalette.h" #include #include #include #include #include #include void UBKeyboardButton::sendUnicodeSymbol(KEYCODE keycode) { if (keycode.modifier) CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, 56, true)); CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, keycode.code, true)); CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, keycode.code, false)); if (keycode.modifier) CGEventPost(kCGSessionEventTap, CGEventCreateKeyboardEvent(NULL, 56, false)); } void UBKeyboardButton::sendControlSymbol(int nSymbol) { CGEventRef event1 = CGEventCreateKeyboardEvent(NULL, nSymbol, true); CGEventRef event2 = CGEventCreateKeyboardEvent(NULL, nSymbol, false); CGEventPost(kCGHIDEventTap, event1); CGEventPost(kCGHIDEventTap, event2); } void UBKeyboardPalette::createCtrlButtons() { ctrlButtons = new UBKeyboardButton*[9]; ctrlButtons[0] = new UBCntrlButton(this, 51, "backspace"); ctrlButtons[1] = new UBCntrlButton(this, 48, "tab"); ctrlButtons[2] = new UBCapsLockButton(this, "capslock"); ctrlButtons[3] = new UBCntrlButton(this, tr("Enter"), 76); ctrlButtons[4] = new UBShiftButton(this, "shift"); ctrlButtons[5] = new UBShiftButton(this, "shift"); ctrlButtons[6] = new UBLocaleButton(this); ctrlButtons[7] = new UBCntrlButton(this, "", 49); ctrlButtons[8] = new UBLocaleButton(this); } void UBKeyboardPalette::checkLayout() { TISInputSourceRef selectedLocale = TISCopyCurrentKeyboardInputSource(); CFStringRef sr = (CFStringRef) TISGetInputSourceProperty(selectedLocale, kTISPropertyInputSourceID); if (sr!=NULL) { char clId[1024]; CFStringGetCString(sr, clId, 1024, 0); for(int i=0; iid == clId) { if (nCurrentLocale!=i) { setLocale(i); } break; } } } } void UBKeyboardPalette::onActivated(bool) { } void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* locale) { UBPlatformUtils::SetMacLocaleByIdentifier(locale->id); }