Backslash

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Backslash

Beitrag von mk-soft »

Bei der Mac Tastatur ist ja Backslash auf "Shift-Alt-7" versteckt.
Kann man zusätzlich diese auch auf z.B. Ctrl-7 legen.

OS X 10.9.2

FF 8)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Backslash

Beitrag von RSBasic »

mk-soft hat geschrieben:Kann man zusätzlich diese auch auf z.B. Ctrl-7 legen.
Ist das eine Frage oder ein Satz? ;)

Wenn Frage, willst du das mit PureBasic unter OSX ändern oder ist das eine allgemeine Frage bzw. suchst du ein Programm, womit du Tasten umbelegen kannst? Wenn zweiteres: http://www.macwelt.de/downloads/Tastatu ... 88942.html
Bitte genauer sagen, was du möchtest. Wenn es nichts mit PB zu tun hat, muss ich dein Thread verschieben.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Backslash

Beitrag von mk-soft »

War eine Frage :roll:

Am besten nur für den PB-Editor die Taste Ctrl-7 für Backslash hinzufügen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Backslash

Beitrag von RSBasic »

Vielleicht kannst du was damit anfangen und den Code für deine Tastenkombination anpassen: http://www.purebasic.fr/english/viewtop ... 79#p394079
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Backslash

Beitrag von mk-soft »

Dank Hilfe aus dem englischen Forum :allright:

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)
Zuletzt geändert von mk-soft am 11.05.2014 16:54, insgesamt 1-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Backslash

Beitrag von mk-soft »

Kleines Update.

Da es wohl Konflikte mit der gleichen Taste von Shortcut und SendKey gibt habe ich den Shortcut auf 'ß' geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Backslash

Beitrag von mk-soft »

Kleines Update 2
- App wird nicht mehr doppelt gestartet

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten