Kann man zusätzlich diese auch auf z.B. Ctrl-7 legen.
OS X 10.9.2
FF

Ist das eine Frage oder ein Satz?mk-soft hat geschrieben:Kann man zusätzlich diese auch auf z.B. Ctrl-7 legen.
Code: Alles auswählen
;-TOP
; Comment : Backslash over Ctrl+ß
; Author : mk-soft
; *******************************
; Sendkey and Hotkey from Shardik
; *******************************
EnableExplicit
#kCGHIDEventTap= 0
; ----- Virtual keycodes (defined in Events.h)
#kVK_ANSI_A = $00
#kVK_ANSI_S = $01
#kVK_ANSI_D = $02
#kVK_ANSI_F = $03
#kVK_ANSI_H = $04
#kVK_ANSI_G = $05
#kVK_ANSI_Z = $06
#kVK_ANSI_X = $07
#kVK_ANSI_C = $08
#kVK_ANSI_V = $09
#kVK_ANSI_B = $0B
#kVK_ANSI_Q = $0C
#kVK_ANSI_W = $0D
#kVK_ANSI_E = $0E
#kVK_ANSI_R = $0F
#kVK_ANSI_Y = $10
#kVK_ANSI_T = $11
#kVK_ANSI_1 = $12
#kVK_ANSI_2 = $13
#kVK_ANSI_3 = $14
#kVK_ANSI_4 = $15
#kVK_ANSI_6 = $16
#kVK_ANSI_5 = $17
#kVK_ANSI_Equal = $18
#kVK_ANSI_9 = $19
#kVK_ANSI_7 = $1A
#kVK_ANSI_Minus = $1B
#kVK_ANSI_8 = $1C
#kVK_ANSI_0 = $1D
#kVK_ANSI_RightBracket = $1E
#kVK_ANSI_O = $1F
#kVK_ANSI_U = $20
#kVK_ANSI_LeftBracket = $21
#kVK_ANSI_I = $22
#kVK_ANSI_P = $23
#kVK_ANSI_L = $25
#kVK_ANSI_J = $26
#kVK_ANSI_Quote = $27
#kVK_ANSI_K = $28
#kVK_ANSI_Semicolon = $29
#kVK_ANSI_Backslash = $2A
#kVK_ANSI_Comma = $2B
#kVK_ANSI_Slash = $2C
#kVK_ANSI_N = $2D
#kVK_ANSI_M = $2E
#kVK_ANSI_Period = $2F
#kVK_ANSI_Grave = $32
#kVK_ANSI_KeypadDecimal = $41
#kVK_ANSI_KeypadMultiply = $43
#kVK_ANSI_KeypadPlus = $45
#kVK_ANSI_KeypadClear = $47
#kVK_ANSI_KeypadDivide = $4B
#kVK_ANSI_KeypadEnter = $4C
#kVK_ANSI_KeypadMinus = $4E
#kVK_ANSI_KeypadEquals = $51
#kVK_ANSI_Keypad0 = $52
#kVK_ANSI_Keypad1 = $53
#kVK_ANSI_Keypad2 = $54
#kVK_ANSI_Keypad3 = $55
#kVK_ANSI_Keypad4 = $56
#kVK_ANSI_Keypad5 = $57
#kVK_ANSI_Keypad6 = $58
#kVK_ANSI_Keypad7 = $59
#kVK_ANSI_Keypad8 = $5B
#kVK_ANSI_Keypad9 = $5C
; /* keycodes For keys that are independent of keyboard layout*/
#kVK_Return = $24
#kVK_Tab = $30
#kVK_Space = $31
#kVK_Delete = $33
#kVK_Escape = $35
#kVK_Command = $37
#kVK_Shift = $38
#kVK_CapsLock = $39
#kVK_Option = $3A
#kVK_Control = $3B
#kVK_RightShift = $3C
#kVK_RightOption = $3D
#kVK_RightControl = $3E
#kVK_Function = $3F
#kVK_F17 = $40
#kVK_VolumeUp = $48
#kVK_VolumeDown = $49
#kVK_Mute = $4A
#kVK_F18 = $4F
#kVK_F19 = $50
#kVK_F20 = $5A
#kVK_F5 = $60
#kVK_F6 = $61
#kVK_F7 = $62
#kVK_F3 = $63
#kVK_F8 = $64
#kVK_F9 = $65
#kVK_F11 = $67
#kVK_F13 = $69
#kVK_F16 = $6A
#kVK_F14 = $6B
#kVK_F10 = $6D
#kVK_F12 = $6F
#kVK_F15 = $71
#kVK_Help = $72
#kVK_Home = $73
#kVK_PageUp = $74
#kVK_ForwardDelete = $75
#kVK_F4 = $76
#kVK_End = $77
#kVK_F2 = $78
#kVK_PageDown = $79
#kVK_F1 = $7A
#kVK_LeftArrow = $7B
#kVK_RightArrow = $7C
#kVK_DownArrow = $7D
#kVK_UpArrow = $7E
; ----- Modifier key masks (defined in IOLLEvent.h)
#kCGEventFlagMaskShift = $020000 ; = NX_SHIFTMASK
#kCGEventFlagMaskControl = $040000 ; = NX_CONTROLMASK
#kCGEventFlagMaskAlternate = $080000 ; = NX_ALTERNATEMASK
#kCGEventFlagMaskCommand = $100000 ; = NX_COMMANDMASK
; ----- Keyboard Hotkey
#kEventClassKeyboard = $6B657962 ; 'keyb'
#kEventHotKeyPressed = 5
#kEventParamDirectObject = $2D2D2D2D ; '----'
#typeEventHotKeyID = $686B6964 ; 'hkid'
#controlKeyBit = 12
#controlKey = 1 << #controlKeyBit
#shiftKeyBit = 9
#shiftKey = 1 << #shiftKeyBit
; ---------------------------------------------------------------------------------------
ImportC ""
; Sendkey
CFRelease(CFTypeRef.L)
CGEventCreateKeyboardEvent(CGEventSourceRef.L, CGVirtualKeyCode.U, KeyDown.L)
CGEventPost(CGEventTapLocation.L, CGEventRef.L)
CGEventSetFlags(CGEventRef.L, CGEventFlags.L)
; Keyboard Hotkey
GetApplicationEventTarget()
RegisterEventHotKey(HotKeyCode.L, HotKeyModifiers.L, HotKeyID.Q, EventTargetRef.I, OptionBits.L, *EventHotKeyRef)
UnregisterEventHotKey(EventHotKeyRef.I)
EndImport
; ---------------------------------------------------------------------------------------
Procedure.i SendKey(VirtualKey.U, ModifierKey.i = 0)
Protected KeyEvent.i
KeyEvent = CGEventCreateKeyboardEvent(0, VirtualKey, #True)
If KeyEvent
; ----- Press key
CGEventSetFlags(KeyEvent, ModifierKey)
CGEventPost(#kCGHIDEventTap, KeyEvent)
CFRelease(KeyEvent)
KeyEvent = CGEventCreateKeyboardEvent(0, VirtualKey, #False)
CGEventSetFlags(KeyEvent, ModifierKey)
If KeyEvent
; ----- Release key
CGEventPost(#kCGHIDEventTap, KeyEvent)
CFRelease(KeyEvent)
EndIf
EndIf
ProcedureReturn KeyEvent
EndProcedure
; ---------------------------------------------------------------------------------------
Structure EventTypeSpec
EventClass.L
EventKind.L
EndStructure
Structure EventHotKeyID
Signature.L
ID.L
EndStructure
; ---------------------------------------------------------------------------------------
ProcedureC HotKeyHandler(NextHandlerRef.I, EventRef.I, *UserData)
Protected HotKey.Q
If GetEventParameter_(EventRef, #kEventParamDirectObject, #typeEventHotKeyID, 0, SizeOf(EventHotKeyID), 0, @HotKey) = 0
If PeekL(HotKey) = $68746B31 ; HotKey\Signature = 'htk1' ?
If PeekL(HotKey + 4) ; HotKey\ID = 1 ?
;Delay(200)
SendKey(#kVK_ANSI_7, #kCGEventFlagMaskShift | #kCGEventFlagMaskAlternate)
EndIf
EndIf
EndIf
EndProcedure
; ---------------------------------------------------------------------------------------
Procedure IsRunning(App.s)
Protected RunningApps = CocoaMessage(0, CocoaMessage(0, 0, "NSWorkspace sharedWorkspace"), "runningApplications")
Protected RunningAppsCount = CocoaMessage(0, RunningApps, "count")
Protected RunningApp, AppName.s
Protected i, count
While i < RunningAppsCount
RunningApp = CocoaMessage(0, RunningApps, "objectAtIndex:", i)
AppName.s = PeekS(CocoaMessage(0, CocoaMessage(0, RunningApp, "localizedName"), "UTF8String"), -1, #PB_UTF8)
If AppName = App
count + 1
EndIf
i + 1
Wend
If count > 1
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
If IsRunning("Backslash")
End
EndIf
Define HotKey.EventHotKeyID
Define HotKeyRef.I
Dim EventTypes.EventTypeSpec(0)
EventTypes(0)\EventClass = #kEventClassKeyboard
EventTypes(0)\EventKind = #kEventHotKeyPressed
HotKey\Signature = $68746B31 ; 'htk1'
HotKey\ID = 1
OpenWindow(0, #PB_Ignore, #PB_Ignore, 160, 30, "Backslash", #PB_Window_SystemMenu)
TextGadget(0, 0, 0, 160, 30, "Backslash (Ctrl+ß)", #PB_Text_Center)
; ----- Install EventHandler to react to pressing of hot key(s)
If InstallEventHandler_(GetApplicationEventTarget(), @HotKeyHandler(), 1, @EventTypes(), 0, 0) = 0
; ----- Register hot key (Control+Shift+Space)
RegisterEventHotKey(27, #controlKey, @HotKey, GetApplicationEventTarget(), 0, @HotKeyRef)
EndIf
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
; ----- You do not need to unregister a hot key when your application
; terminates; the system takes care of that for you. You can use this
; function if the user changes a hot key for something in your
; application - you would unregister the previous key and register your
; new key.
UnregisterEventHotKey(HotKeyRef)