I am the developer of an app called 1Keyboard (http://www.eyalw.com/1keyboard).
my app used to capture global keystrokes and send them to iPhones/iPads/etc as if the computer was an HID bluetooth keyboard.
This worked on 10.8, and dais on 10.9.
I understand it has to do with the new Accessibility menu in system preferences.
Instead of having one checkbox ("enable assistive devices") in 10.8,
now the user has to enable this for each app individually.
For some reason, my app doesn't show up in the accessibility requiring apps in the preference. http://d.pr/i/8IfP
What should I do to have it appear there, and restore the lost functionality?
See the function "AXIsProcessTrustedWithOptions:". It can be made to cause a prompt to the user, which will then add the app to the list in question. Much easier for the user.
Boolean isTrusted = AXIsProcessTrustedWithOptions(CFDictionaryCreate(NULL, (const void*[]){ kAXTrustedCheckOptionPrompt }, (const void*[]){ kCFBooleanTrue }, 1, NULL, NULL));
That being said, I'm still having trouble trapping global keystroke events.
There are no "add an app" button on the new Accessibility menu, however, you can simply "drag-and-drop" your application from the Application folder to the panel directly (http://tinypic.com/r/2qu2k3d/5).
I'm using your app and I can confirm that the functionality is now restored :-)
Hope it helps !
Note: In Yosemite, there are now the standard "+" and "-" buttons in the Privacy pane of Security and Privacy preferences.
Related
I'm working on a macOS Objective-C application that interacts with trackpad and mouse. This kind of interaction needs Accessibility Control. The problem is that if user unticks the app (while it's running) in System Preferences > Security & Privacy > Privacy > Accessibility, it prevents user to work with trackpad and mouse properly, so making hard even to quit the app.
The only thing that I could manage to do with this problem is running Terminal via Spotlight Search and doing killall.
I need the app to stop itself if there is no Accessibility permissions.
You can call AXIsProcessTrusted to determine if you are trusted for accessibility. I'm not aware of any callback or notification when the setting changes, but it sounds like you could just poll every second or so, and exit your app if the function starts to return false.
AXIsProcessTrusted
I am developing a desktop application that capture computer activities on mac osx using objective-c. I know it's possible to capture it when user presses on the keyboard and mouse position. But I don't know how to detect when user switches tasks on computer, like closing a window (of other applications), activating another window (of other applications)?
Does anyone have any experience in that?
Yes, via the Accessibility system. For example the NSAccessibilityMainWindowChangedNotification.
I need to create a simple Delphi application, kiosk style.
It is a very simple thing, a single form where the user writes some personal info to register to an event. 4 TEdit and a TButton.
What I want to achieve is to avoid the user does any action different then typing in TEdit or clicking on the TButton. For example I don't want he does ALT TAB (switchin applications), pressing windows key on keyboard, doing ctrl-alt-canc, etc...
I can add a passowrd protected Button that enables/disables this "Kiosk mode", in this way as I need to exit the kiosk mode I simply press that button and exit.
How to achieve this "kiosk mode" in Delphi without intercepting all the keystrokes manually? Or did anyone already develop this so it can be shared?
I think you'd better create a new desktop, and run your app in there. When your app is done, you can bring back user's desktop. That is how Windows login screen works. Of course Windows login screen uses a special secure desktop. Your app in a separate desktop would be isolated. You will have a desktop background with no start menu, taskbar, or desktop icons because explorer.exe is not running there automatically. Of course a can start a new process, using Task Manager, but desktops in Windows are securable objects; therefore, you can make restrictions if you want. Of course if your app has sufficient permissions.
To create a new desktop, you can use CreateDesktop Windows API, and to switch to the newly created desktop, you can use OpenDesktop function.
You can try Change the Windows Shell.
When you start windows, you don't execute the default shell (explorer.exe), you can execute your application.
Al internet you can find alternative Shell (more attractive) to default windows like:
BlueBox or
SharpE
This option is used for purposes similars at the application that you are developing. Kiosks or TPV.
For change the default applicacion you must modify a registry key:
In Win3.x and Win9x, SYSTEM.INI file:
[boot]
shell=MiAplicacion.exe
In Win2k and WinXP, use Registry:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
Shell=MiAplicacion.exe
If you test this option, think the mode to turn the configuration to the original value (button or option). You must reboot to test changes.
ADDED: In addition, if you search on the web some similar at this "Delphi Change default windows shell", you can find more code, samples and information about this.
Regards
P.D: Excuse me for mistakes with english.
Well but if someone can open the taskmgr he could just create a new task and run explorer.exe from there so its not really secure though...
Ok Taskmgr can be stopped with policies...
Well and for disabling the cad sequence you can use saslibex which Remko Weijnen had created you can find it here: SASLibEx
kindest regrads,
s!
With windows 8, is it possible to create an application that is always visible? For instance, in previous versions of windows, there is the task bar with quick launch icons. Can I create something similar to the quick launch icons that are always on the screen?
If you are referring to a Windows 8 Store app then the answer is no. You can have a live tile and toast notifications that provides updates to the user which may cause the user to launch your application.
A good article to read to understand how your Windows Store apps will run on Windows 8 go here to learn about Application lifecycle (Windows Store apps). This will explain the App execution state.
It is not possible in the RT version, but the same is possible in the desktop version. If you have a desktop app, you can pin it to the taskbar. But any Window store app cannot be pinned to the taskbar. What you can do instead is move the app to the beginning of your Home screen, so anytime you click the Windows button your app will be visible right in front.
Do you mean always visible in the Star Menu screen? If so, you can add tile updating functionality to your application. As long as the user has the application pinned to the Start Menu, he would see the updates. Check the link below for an introductory tutorial.
http://blogs.msdn.com/b/windowsappdev/archive/2012/04/16/creating-a-great-tile-experience-part-1.aspx
"Quick Launch" has a very specific meaning, which you may or may not have been referring to in your question.
Below is the Quick Launch bar in Windows 8 - essentially a toolbar pointing to a location in your %AppData% directory. Prior to Windows 7 it was available by default, but the ability to now pin items directly to the taskbar rather supersedes it. Here's how you can restore Quick Launch if you really want to :)
It's, of course, available only in the Desktop mode and not on the Modern UI, where pinning a tile is the best you can hope for, and it's all up to the user to pin it AND to determine where it shows up on their Start Screen.
Another option worth mentioning (although more like system tray than quick launch) is lock screen presence. If the user chooses so and your app supports that, he can add it to his lock screen:
either as a a badge (up to 7 apps)
or as a tile notification (single app only)
This is not a way for the user to quickly start your app (other answers have already covered these options) but a way to stay visible and keep your user informed.
I have created a html5 video gallery that will be used as a kiosk in a casino. The videos play the best in safari but I cannot get safari to go completely full screen. Is there a way to do this or a application I can use? I've looked into saft but it is not compatible with the new version of safari.
Thanks in advance
At least on Windows version of Safari (5.1.7), To make it go full-screen you have to press F11.
You will still see a tool-bar, but it should automatically hide after a few seconds, and then you will be in complete full-screen mode.
Note: If you press F11 before all the content of your page are loaded, you might have some layout problems, so I recommend to wait for the content to be loaded.
I wish there was a way to make full-screen mode enabled from start up like you can do with Google Chrome with the kiosk mode, but I don't know if that is possible.
You should probably use a third-party kiosk application designed for this purpose such as xStand, since Safari doesn't contain any actual kiosk mode (unlike Internet Explorer).
Even then, you'll need to be aware of the risk of users using keyboard shortcuts to exit the application (like Cmd+Q, or Cmd+Opt+Escape to bring up the "Force Quit Applications" list).
Most dedicated kiosk browsers are designed to disallow that sort of behaviour, but you should definitely test them yourself before you trust them (or disconnect the keyboard altogether if users don't need a keyboard).
On the other hand, if you can safely remove the keyboard and mouse, you're able to simply use the built-in full-screen mode in Safari (as of OS X Lion), to achieve what you're looking for.