[DEV] Add some meta key event

This commit is contained in:
Edouard DUPIN 2013-11-28 23:59:34 +01:00
parent b63f91d544
commit b7108874dd
5 changed files with 106 additions and 1 deletions

View File

@ -10,6 +10,8 @@
#import <ewol/renderer/MacOs/AppDelegate.h>
#import <ewol/renderer/MacOs/OpenglView.h>
#include <ewol/debug.h>
@implementation MacOsAppDelegate
@synthesize window=_window;

View File

@ -86,7 +86,7 @@ class MacOSInterface : public ewol::eContext {
if (_unichar == etk::UChar::CarrierReturn) {
_unichar = etk::UChar::Return;
}
EWOL_DEBUG("key: " << _unichar << " up=" << !_isDown);
//EWOL_DEBUG("key: " << _unichar << " up=" << !_isDown);
if (_unichar <= 4) {
enum ewol::keyEvent::keyboard move;
switch(_unichar) {
@ -108,6 +108,11 @@ class MacOSInterface : public ewol::eContext {
OS_SetKeyboard(_keyboardMode, _unichar, !_isDown, _isAReapeateKey);
}
}
void MAC_SetKeyboardMove(ewol::SpecialKey& _special,
enum ewol::keyEvent::keyboard _move,
bool _isDown) {
OS_SetKeyboardMove(_special, _move, _isDown);
}
};
@ -151,6 +156,12 @@ void MacOs::setKeyboard(ewol::SpecialKey _keyboardMode, int32_t _unichar, bool _
interface->MAC_SetKeyboard(_keyboardMode, _unichar, _isDown, _isAReapeateKey);
}
void MacOs::setKeyboardMove(ewol::SpecialKey& _keyboardMode, enum ewol::keyEvent::keyboard _move, bool _isDown) {
if (interface == NULL) {
return;
}
interface->MAC_SetKeyboardMove(_keyboardMode, _move, _isDown);
}
/**

View File

@ -22,6 +22,7 @@ namespace MacOs {
void setMouseState(int32_t _id, bool _isDown, float _x, float _y);
void setMouseMotion(int32_t _id, float _x, float _y);
void setKeyboard(ewol::SpecialKey _keyboardMode, int32_t _unichar, bool _isDown, bool _isAReapeateKey);
void setKeyboardMove(ewol::SpecialKey& _keyboardMode, enum ewol::keyEvent::keyboard _move, bool _isDown);
};
#endif

View File

@ -28,6 +28,7 @@
- (void)otherMouseUp:(NSEvent *)event;
//- (void)sendEvent:(NSEvent *)event
- (void)keyDown:(NSEvent *)theEvent;
- (void)flagsChanged:(NSEvent *)theEvent;
@end

View File

@ -199,6 +199,7 @@ static ewol::SpecialKey guiKeyBoardMode;
}
}
/*
// https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/Reference/Reference.html
// http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html
-(void)sendEvent:(NSEvent *)event {
NSPoint point = [event locationInWindow];
@ -240,6 +241,95 @@ static ewol::SpecialKey guiKeyBoardMode;
}
}
- (void)flagsChanged:(NSEvent *)theEvent {
if (([theEvent modifierFlags] & NSAlphaShiftKeyMask) != 0) {
EWOL_DEBUG("NSAlphaShiftKeyMask");
if (guiKeyBoardMode.capLock == 0) {
guiKeyBoardMode.capLock = 1;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardCapLock, true);
}
} else {
if (guiKeyBoardMode.capLock == 1) {
guiKeyBoardMode.capLock = 0;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardCapLock, false);
}
}
if (([theEvent modifierFlags] & NSShiftKeyMask) != 0) {
EWOL_DEBUG("NSShiftKeyMask");
if (guiKeyBoardMode.shift == 0) {
guiKeyBoardMode.shift = 1;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardShiftLeft, true);
}
} else {
if (guiKeyBoardMode.shift == 1) {
guiKeyBoardMode.shift = 0;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardShiftLeft, false);
}
}
if (([theEvent modifierFlags] & NSControlKeyMask) != 0) {
EWOL_DEBUG("NSControlKeyMask");
if (guiKeyBoardMode.ctrl == 0) {
guiKeyBoardMode.ctrl = 1;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardCtrlLeft, true);
}
} else {
if (guiKeyBoardMode.ctrl == 1) {
guiKeyBoardMode.ctrl = 0;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardCtrlLeft, false);
}
}
if (([theEvent modifierFlags] & NSAlternateKeyMask) != 0) {
EWOL_DEBUG("NSAlternateKeyMask");
if (guiKeyBoardMode.alt == 0) {
guiKeyBoardMode.alt = 1;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardAlt, true);
}
} else {
if (guiKeyBoardMode.alt == 1) {
guiKeyBoardMode.alt = 0;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardAlt, false);
}
}
if (([theEvent modifierFlags] & NSCommandKeyMask) != 0) {
EWOL_DEBUG("NSCommandKeyMask");
if (guiKeyBoardMode.meta == 0) {
guiKeyBoardMode.meta = 1;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardMetaLeft, true);
}
} else {
if (guiKeyBoardMode.meta == 1) {
guiKeyBoardMode.meta = 0;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardMetaLeft, false);
}
}
if (([theEvent modifierFlags] & NSNumericPadKeyMask) != 0) {
EWOL_DEBUG("NSNumericPadKeyMask");
if (guiKeyBoardMode.numLock == 0) {
guiKeyBoardMode.numLock = 1;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardNumLock, true);
}
} else {
if (guiKeyBoardMode.numLock == 1) {
guiKeyBoardMode.numLock = 0;
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardNumLock, false);
}
}
if (([theEvent modifierFlags] & NSHelpKeyMask) != 0) {
EWOL_DEBUG("NSHelpKeyMask");
}
if (([theEvent modifierFlags] & NSFunctionKeyMask) != 0) {
EWOL_DEBUG("NSFunctionKeyMask");
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardContextMenu, true);
MacOs::setKeyboardMove(guiKeyBoardMode, ewol::keyEvent::keyboardContextMenu, false);
}
}
#define FRAME_INTERVAL (0.01)
static NSTimer *timer = nil;