So I got it working with admin permissions no need to do anything in Accessibility.
I didnt try to modify anything in the plist or anything so maybe it is possible to get it to run as user?
Here is my slightly modified version..
Code: Select all
EnableExplicit
#KeyDownMask = 1 << 10
#KeyUpMask = 1 << 11
#FlagsChangedMask = 1 << 12
;#kCGSessionEventTap = 0
#kCGHeadInsertEventTap = 0
#kCGKeyboardEventKeycode = 9
ImportC ""
CGEventTapCreate(tap, place, options, eventsOfInterest.q, callback, refcon)
CGEventGetFlags.q(event)
CGEventGetIntegerValueField.q(event, field)
CGEventKeyboardGetUnicodeString(event, maxStringLength, *actualStringLength, *unicodeString)
EndImport
Define eventTap
Define eventMask
Procedure.s convertKeyCode(keyCode)
Select keyCode
Case 0: pReturn$ = "a"
Case 1: pReturn$ = "s"
Case 2: pReturn$ = "d"
Case 3: pReturn$ = "f"
Case 4: pReturn$ = "h"
Case 5: pReturn$ = "g"
Case 6: pReturn$ = "z"
Case 7: pReturn$ = "x"
Case 8: pReturn$ = "c"
Case 9: pReturn$ = "v"
Case 11: pReturn$ = "b"
Case 12: pReturn$ = "q"
Case 13: pReturn$ = "w"
Case 14: pReturn$ = "e"
Case 15: pReturn$ = "r"
Case 16: pReturn$ = "y"
Case 17: pReturn$ = "t"
Case 18: pReturn$ = "1"
Case 19: pReturn$ = "2"
Case 20: pReturn$ = "3"
Case 21: pReturn$ = "4"
Case 22: pReturn$ = "6"
Case 23: pReturn$ = "5"
Case 24: pReturn$ = "="
Case 25: pReturn$ = "9"
Case 26: pReturn$ = "7"
Case 27: pReturn$ = "-"
Case 28: pReturn$ = "8"
Case 29: pReturn$ = "0"
Case 30: pReturn$ = "]"
Case 31: pReturn$ = "o"
Case 32: pReturn$ = "u"
Case 33: pReturn$ = "["
Case 34: pReturn$ = "i"
Case 35: pReturn$ = "p"
Case 37: pReturn$ = "l"
Case 38: pReturn$ = "j"
Case 39: pReturn$ = "'"
Case 40: pReturn$ = "k"
Case 41: pReturn$ = ";"
Case 42: pReturn$ = "\\"
Case 43: pReturn$ = ","
Case 44: pReturn$ = "/"
Case 45: pReturn$ = "n"
Case 46: pReturn$ = "m"
Case 47: pReturn$ = "."
Case 50: pReturn$ = "`"
Case 65: pReturn$ = "[decimal]"
Case 67: pReturn$ = "[asterisk]"
Case 69: pReturn$ = "[plus]"
Case 71: pReturn$ = "[clear]"
Case 75: pReturn$ = "[divide]"
Case 76: pReturn$ = "[enter]"
Case 78: pReturn$ = "[hyphen]"
Case 81: pReturn$ = "[equals]"
Case 82: pReturn$ = "0"
Case 83: pReturn$ = "1"
Case 84: pReturn$ = "2"
Case 85: pReturn$ = "3"
Case 86: pReturn$ = "4"
Case 87: pReturn$ = "5"
Case 88: pReturn$ = "6"
Case 89: pReturn$ = "7"
Case 91: pReturn$ = "8"
Case 92: pReturn$ = "9"
Case 36: pReturn$ = "[return]"
Case 48: pReturn$ = "[tab]"
Case 49: pReturn$ = " "
Case 51: pReturn$ = "[del]"
Case 53: pReturn$ = "[esc]"
Case 54: pReturn$ = "[right-cmd]"
Case 55: pReturn$ = "[left-cmd]"
Case 56: pReturn$ = "[left-shift]"
Case 57: pReturn$ = "[caps]"
Case 58: pReturn$ = "[left-option]"
Case 59: pReturn$ = "[left-ctrl]"
Case 60: pReturn$ = "[right-shift]"
Case 61: pReturn$ = "[right-option]"
Case 62: pReturn$ = "[right-ctrl]"
Case 63: pReturn$ = "[fn]"
Case 64: pReturn$ = "[f17]"
Case 72: pReturn$ = "[volup]"
Case 73: pReturn$ = "[voldown]"
Case 74: pReturn$ = "[mute]"
Case 79: pReturn$ = "[f18]"
Case 80: pReturn$ = "[f19]"
Case 90: pReturn$ = "[f20]"
Case 96: pReturn$ = "[f5]"
Case 97: pReturn$ = "[f6]"
Case 98: pReturn$ = "[f7]"
Case 99: pReturn$ = "[f3]"
Case 100: pReturn$ = "[f8]"
Case 101: pReturn$ = "[f9]"
Case 103: pReturn$ = "[f11]"
Case 105: pReturn$ = "[f13]"
Case 106: pReturn$ = "[f16]"
Case 107: pReturn$ = "[f14]"
Case 109: pReturn$ = "[f10]"
Case 111: pReturn$ = "[f12]"
Case 113: pReturn$ = "[f15]"
Case 114: pReturn$ = "[help]"
Case 115: pReturn$ = "[home]"
Case 116: pReturn$ = "[pgup]"
Case 117: pReturn$ = "[fwddel]"
Case 118: pReturn$ = "[f4]"
Case 119: pReturn$ = "[end]"
Case 120: pReturn$ = "[f2]"
Case 121: pReturn$ = "[pgdown]"
Case 122: pReturn$ = "[f1]"
Case 123: pReturn$ = "[left]"
Case 124: pReturn$ = "[right]"
Case 125: pReturn$ = "[down]"
Case 126: pReturn$ = "[up]"
Default
pReturn$ = "unknown"
EndSelect
ProcedureReturn pReturn$
EndProcedure
ProcedureC eventTapFunction(proxy, type, event, refcon)
Protected keyCode = CGEventGetIntegerValueField(event, #kCGKeyboardEventKeycode)
Protected keyFlags = CGEventGetFlags(event) >> 16 & 255
Protected unicodeBuffer.q, bufferLen.i = 4
CGEventKeyboardGetUnicodeString(event, bufferLen, @bufferLen, @unicodeBuffer)
Protected text.s = PeekS(@unicodeBuffer, bufferLen, #PB_Unicode)
SetGadgetText(0, "keyCode : " + Str(keyCode) + #LF$ + "keyFlags : " + RSet(Bin(keyFlags), 8, "0") + #LF$ + "string : " + text)
EndProcedure
If OpenWindow(0, 0, 0, 220, 90, "keyCode tap", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StickyWindow(0, 1)
StringGadget(0, 10, 10, 200, 70, "")
eventMask = #KeyDownMask | #FlagsChangedMask
eventTap = CGEventTapCreate(#kCGSessionEventTap, #kCGHeadInsertEventTap, 0, eventMask, @eventTapFunction(), #Null)
If eventTap
CocoaMessage(0, CocoaMessage(0, 0, "NSRunLoop currentRunLoop"), "addPort:", eventTap, "forMode:$", @"kCFRunLoopDefaultMode")
EndIf
Repeat : Delay(10): Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
working admin on OSX v10.13.6
WARNING: I dont know what I am doing! I just put stuff here and there and sometimes like magic it works. So please improve on my code and post your changes so I can learn more. TIA