Related Blog PagesThe original page, http://blog.andy.glew.ca/2016/01/dynamic-keypad-user-interface-elements.html, is more of a shopping project - a page where I take notes, a sort of informal review. Posted in the hope that others may find useful.
It soon became obvious that I was very hopeful about Quadro, a particular iPhone remote control facility, with multiple buttons, whose main claim to fame seems to be using AppleScript/OSA commands. I was hopeful this might make it more reliable than the many, many, macro facilities I have used in the past. Perhaps; but Quadero still has reliability problems. Split into a separate page,
Quadro - I love it when it works, but it is often unreliable.
(1-2 months later, I started trying to use Quadro again after an update, resulting in the post Quadro no longer worked after update ... but now it does (8h wild goose chase later). Although I would rather not have endured 8h of thrashing trying to get Quadro working again, I am fairly happy with the improvements made, as I say in New Quadro Release - Nice Improvement. Although there are
Ways to Make Quadro Even Better, I emphasize:
I like Quadro enough that I want everyone to use it. Therefore, I am very Very VERY happy with the new Quadro release! Everybody should use it! I really do think that it is one of the best things to happen to user interfaces since swipes and GUIs. When the Quadro folk explain that they have properly secured Quadro, I will be able to recommend it without reservation.http://blog.andy.glew.ca/2016/01/scripting-raw-io-macros-versus.html is a somewhat generic discussion of the pros and cons of the various levels of abstraction found in such tools. One of my big frustrations with Quadro, second to reliability, is that I cannot drive all user interface actions because Quadro does not seem to provide all raw keyboard and mouse events.
http://blog.andy.glew.ca/2016/01/notes-and-thoughts-about-dynamic-keypad.html for still more generic thought.
For the umpteenth time, realized that I should have written this in wiki rather than blog. Googlesb blogspot/blogger blog really does not provide much support for pages that need to evolve by being split and otherwise refactored. Let alone transclusion.
Eventually realized that I had written enough about Quadro to warrant aa page of its own: http://blog.andy.glew.ca/2016/01/quadro-i-love-it-when-it-works-but-it.html
- I am still hopeful that Quadro will be a good tool
- I am frustrated, driven to exasperation, by how unreliable and flakey Quadro is.
- Almost par for the course with this sort of application, although I suspect that Quadro, because of its command rather than keyboard orientation, hangs more than most more "Raw I/O" based tools in this class.
- I was about to give up using Quadro today, but I am figuring out that it is more reliable in some environments than others.
- I can't say that I regret contributing 50$ to support Quadro development, the maximum freemium they provide. But I sure wish that it was more reliable.
- I remain concerned about security, lack of.
This in itself makes me sympathetic. It's hard to make a go, a living, as an independent developer. I paid the 50$.
I almost gave up on Quadro at this point. This sort of app is inherently a big security risk, and it seems that much malware is written in incoherent English. But I clicked around, and, coming from a non-English speaking country, I am willing to make allowances. I am probably equally incoherent in French, and negligibly coherent in Cristiano's native language, Italian. I hope that I do not regret this.
Quadro Problem Reports and Wishlist Items
(Several hours later: I just figured out that pressing on the star icon, at the bottom left hand corner, then Open Library, takes me to the library of palettes, with the settings gearwheel, etc. So there is a way to get there apart from the unreliable let to right swipe.)
Problem: Odd Select Behavior: Tap, Press, Hold: Quadro has icons at bottom of screen: star, ellipsis (...), question mark, pencil.
For a very long time I thought that Quadro only had strange "transient" menus: click and slide, menu dsappears if you lift finger.
Eventually I realized that Quadro has both:
Tap, menu stays open.
Press (i.e. tap more slowly), and menu disappears.
OK, I think that I can use this now. But an overall comment, advice to Quadro developer: probably one of the biggest markets for something like Quadro is people who, while perhaps not sufficiently disabled to need a screen reader and switches, may not have as much fine grain muscle control as a youngster like you. Quadro's UI, in many ways, is an impediment to such users.
Several hours later, a similar problem: All of a sudden the palette I was working on stopped working. Hitting the Archive button on this Mail palette did nothing. Repeated attempts. Eventually, I restarted both my Mac and my iPhone. Problem persisted.
In frustration, I jabbed my finger several times on a button. Suddenly it worked, deleting several emails I did not want to delete :-(. Insufficient undo. :-( :-( :-(.
It looks like
a) a quick tap on the button makes Quadro do the action on that button
b) a long press on the button displays the note field as a banner across the top
c) but a moderate speed press and release - slower than a quick tap, but not so long to be interpreted as a long press - selects the button (the button changes color), but does nothing.
I wasted an hour figuring that out, including restarting two devices. How many other users would just conclude that Quadro is broken, and give up?
By the way: I wasted an hour on this because Quadro had crashed a few minutes earlier. I think that it may have crashed because first I created a button to move a mail message to folder "Inbox-Processing/Defer Briefly", the in Gmail changed the folder name to "Defer/Defer Briefly". I suspected that the change of folder name left an orphan Quadro button dangling. Haven't debugged fully, but it did stop working - although that may just be this button speed issue - and it did crash Quadro on the iPhone (after briefly displaying overlapping buttons).
At this moment, there is only one palette/sheet I want to use: my personal email triage. Soon, there will be two: personal ad work email triage. I don't want to see anything else.
If I only have these two palettes, you could grep them to indicate not currently active.
Or give me a reduced list of currently enabled palettes. But right now Quadro is giving me so much crap that I keep tripping over.
Worse, although it switches away from the palette/sheets I want to use, it keeps the bloody Chrome palette up way to often. I would rather have my Mail palette up, so that I can switch back to it easily.
Suggestion: Work with Companies like Dragon, or SW Companies for the Disabled: As I explained above, SW like Quadro has a bigger hurdle or barrier to acceptance than much other SW. Such input mediation software is inherently a security vulnerability. A user has to trust that the Quadro users (a) are not themselves bad guys, and (b) have not committed any errors in app security.
It is interesting to try to think about security models that would make it easier to write SW like Quadro (and keyboard macros facilities, and ...), and "let a thousand flowers bloom".
But until such a security model exists, in a popular OS - until then, security concerns will be a problem for Quadro sales.
At the moment the only way to remove this trust barrier is
a) Open Source (apparently not the way that Quadro wants to go)
b) be part of an already trusted company
Something like Quadro will only come into wide use if a major company - Apple, Microsoft, maybe Google - integrates it, makes t a standard feature of the OS that they sell. This has happened, slowly, with software for the disabled.
Before that, however, companies like Nuance Dragon are a step partway:
Dragon already has to be trusted, since it is an input device that a user can use for all interactions. Plus, Dragon has many of the software issues that Quadro has to solve: automatically figuring out what menus are on the screen, etc.
Smaller scale: there are many smaller companies, down to consultants, that provide custom software to accommodate disabled computer users.
If I were the Quadro developers, I would try to work with, and possibly sell, Quadro to this range of company. (Well, I'm actually more of an Open Source type of guy, but I understand the need to earn a living.)
Problem: Gmail WebApp support broken: since my main usage model is email, one of the first things I tried was to create a palette for Gmail. If memory serves, there was no existing palette in the library for Gmail. But when I went to create one such a palette popped up.
I suspect the following: the Quadro developers are developing Gmail support. But t is not ready yet. So they removed it from the top level palette list. However, they did not remove it from the overall library, so it was uncovered when I started trying to create my own.
Bad SW practice: when a feature is not being shipped, it should be completely removed or disabled. Shipping something "invisible" but available is a big source of security bugs. And such sloppy config management does not inspire confidence in using a product such as Quadro.
Problem: Back out of Making Changes: e.g right now, I started trying to change an Icon. Had second thoughts. But in the "Looks" pane, there is no way to say "Don't do anything, throw away all of the changes I just made".
So now I have to go manually find the icon that you originally gave me.
Problem: Searching for Icons: e.g right now, I accidentally changed to no icon. OK, I am going back icon to try to get the old icon back. Happily, there is a big list of icons I can scroll through. Search for "fast" - I see a few Search for "Soon"- None. OK, perhaps I should scroll manually. But now I can't do that.
To begin with, I am given a big list. But if I search, it filters the list. And there is no way to go back to "No filter". Apart from workaround below.
I can work around this bug by selecting No Icon, hitting the checkmark, and ten hitting "Icon/Change..." again - which now gives me the full list again. But that is really annoying.
Problem: Overlapping Buttons: I was going to complain about how hard it is to edit a palette in Quadro, versus how easy in the Keypad app. Quadro does not allow buttons to overlap, which can be a pain when moving buttons around. Keypad allows buttons to overlap, and has a sort order front to back to determine which is visible.
I was going to complain - I still complain - but I just managed to crash Quadro in a way such that buttons overlapped. :-)
Wish: More Button and Other User Actions: Quadro seems only to support tapping on a button to get an action (although long press pulls up some help text (a note), while a press longer than a quick tap but shorter than a long press does nothing, confusingly).
The Keypad app supports more: single tap, double tap, triple tap. I have used other apps that have more, like long press.
Keypad also supports a "Gesture Pad": in addition to 1/2/3 taps, it supports gestures like swipe left/right/up/down with 1/2/3 fingers, pinching, and rotation.
At first I was quite excited about Keypad's Gesture Pad, since the new generation of email apps that I am trying to improve on have made great use of swipes in their UI - and I have found that I am much faster at using such a swipe based interface than I am at moving my hand to a button. However, after some use of Quadro I have found that its buttons are almost as good as the swipe based interface. I suspect that the real win in terms of speed/ease of use is not having to move my hand so far. A swipe interface like Zero or Triage apps on iPhone just allows me to move my thumb where it is, whereas a button in an email-reading app on iPhone woyuld require a reach (unless the bitton, by good design, is placed where my thumb rests). But Quadro is not an email reading app - the email does not appear on theiPhone screen. Instead, my hand remains in the same place, and I just get to tap the button. So there is not that much differene in motion between swipe and Quadro, whereas there is a big difference between them and an iPhone mail reading app.
Bottom Line: both swipe and Quadro allow the full surface of the iPhone to be used for user interface, rather than being limited to the periphery and hence requiring motion.
It may not be a question of amount of motion, versus precision. Buttons on an iPhone mail reading app are necessarily small, whereas Quadro buttons are larger, and swipes can be larger still.
Anyway, I am feeling less need to try to multiplex multiple commands off the same button as I thought that I might. Such multiplexing also goes against one of the theoretic justifications of a interface such as Quadro: that the label or icon displayed indicates what the action will be.
But: I am running out of buttons, especially since Quadro's limitations mean that its buttons are bigger than the buttons I created with Keypad.
I probably would like at least one simple multiplex: a tap to perform the primary action associated with a button, while a long press would bring up a group hidden beneath the button. Typically, a group of related commands.
E.g. I might have a "Defer" button on which a quick single tap just deferred until the next pass. While a long press brought up a fancier scheduler, with times like "Defer to Luch", "Defer to this Afternoon", "Defer to this Evening", "Defer to Tomorrow Morning", etc.
I have long been frustrated by the small set of standard defer times, and the annoyance of having to use an arbitrary date/time chooser if outside the set.
I suppose that multiple select times could be selected easily by tapping. Possibly as a wheel, with a display - tap once, it says "After This", again whatever the next period, again tomorrow, again... until it loops back.
Also, I can imagine pressing a button and then gesturing - e.g. press and gesture N for next pass, e for this evening, T for tomoorow, w for this coing weekend. But I think that I am dreaming in technicolor: this has graduated from Quadro suggestions, to what I might have in my dreams.
It might be nice to have swipes off the buttons supported.
I have log imagined a "swipe syntax" - e.g. buttons for verbs like "Move" and "Copy", and a set of active labels. With implicit subject being the currently selected message, swipe verb to object (target label). 2 verbs, N targets => N+2 buttons, versus 2N buttons as Quadro would currently have it, requiring separate buttons for "Move to Label" and "Copy to Label".
(Of course, "Copy to" might be "Add a label, without destroying any existing labels", while "Move to" might be "Remove all preexisting labels and add a new label". (Or, "remove all preexisting labels of a certain class"). With this label interpretation, a third verb might be imagined - "Create a new object". With or without the labels attached to the original.)
Wish: Want ability to bind commands to swipes: Quadro provides the ability to generate swipes via is keyboard, but only allows them to be used for their standard text actions. Some of Quadro's competitors, like Keypad, provide the ability to bind commands/actions/functions to different swipes.
Generic Problem: Race Conditions and Other Errors in Target Actions: QI have noticed race condition type problems in Quadro: e.g. press the Quadro button for "Archive" too many times too quickly, and eventually the next message is not selected as it should be.
This is a generic problem, not specifically Quadro. It is a problem with any event driven UI, if the action is asynchronous: in particular, it is a problem with any macro facility, which "Sends and Forgets".
I was hoping that Quadro, because it is more integrated with the app than a simple macro like keypad, might be smart enough to detect when the command specified was finished before releasing the next. Apparently not.
Handling errors in general is the bane of macro facilities. E.g. some of my old AutoHotKey macros select Outlook folders by sending arrow keys to navigate menus. If the menu structure changes... Even worse is sending function keys, which may error or be ignored - so that the next set of keys does something completely undesired.
Quadro may reduce some of these errors by asking the app what menu items it supports, and sending those. Accessibility frameworks, in both Apple Cocoa and Microsoft Windows, typically support this. Programs like Dragon take advantage.
One can think of ways to make input programs even more robust against such errors. E.g. provide "transactions" - either all of the commands in the sequence are performed, or none.
Debatable Problem: Quadro Buttons are too Large, Text too bulky: In Keypad, on my iPhone 6+, I can fit default circular buttons 6 across width, and 9 vertically. Or 5 defaut rectangular buttons across, same 9 vertically. But I can also redue height, so that I can have rectangular 18 rectangular buttons, vertically, with perfectly readable text
In Quadro, I only get 4 across and 6 vertically.
Obviously, I can get much less on a Quadro screen than in Keypad.
Worse, keypad does not have a fixed grid of button sizes - or, rather, it has a grid, but buttons are about 10x larger. So much more aesthetic effects can be attained. It's the difference between a fixed width font and a proportional font with kerning.
Worse still: I find that I can hardly ever create useful 1x1 buttons in Quadro. The icon set is insufficiently self explanatory, and Quadro will not display both text and icon at 1x1. So nearly all of my Quadro buttons are at least 1x2, to get a useful amount of text, or an icon plus a label. 2 acroos, 6 down => 12 total.
I recommend that Quadro allow the text label to be displayed below the icon in a 1x1 box. Oftentimes just a single word, in small type, is enough to let somebody figure out what an icon is for - and eventually visual association kicks in. It is faster to squint at small text than it is to long press to see the note.
I would also like to recommend that Quadro support smaller icons in addition to the current size. But that is a second tier suggestion.
Now, I am surprised that I am thinking about this. I really do advocate "Few Big Buttons", and surely 12 buttons is more than enough?
Probably for "top level" keypads (aka palettes).
But... I sometimes want to escape into larger sets. E.g. in my usual email triage app, I usually only need Archive / Defer Briefly / Defer Longer plus maybe a few top level projects. Currently 10 buttons total, of which one is used only to work around a Quadro limitation.
But even here, the 12 button de-fact limitation means that I cannot use a nice big 2x2 button for more than 1 or 2 buttons.
I.e. allowing smaller buttons for infrequently used tasks allows larger buttons for frequent tasks.
Moreover, this is just in my top level keypad / palette. From this I may escape into a scheduling palette, with a list of standard times, or a list of projects that is larger than my current WIP (Work In Progress) list. Although I can usually only handle 2-4 WIP projects, I often have a dozen background projects going on.
++ Soon, as soon as I am finished reading email
++ This afternoon
++ This evening
++ Tomorrow Morning
++ This weekend
++ At home
++ At work
++ On the beach
++ In the woods
++ Grocery Store
++ Coworker 1
Problem: Error Handling: Quadro misbehaves if Apple Mail (Gmail) / Move to / folder has been renamed or moved: Second time this has happened. I am reasonably certain that there is no other problem, and that the misbehavior - ultimately a hang - has been reproduced, and is due solely to this problem.
So, here's the situation: I want to use Quadro mainly for "Email Triage" - going through my email as quickly as possible. Mainly hitting "Archive" and moving on, sometimes refiling the email in folders such as "Defer", "Defer Briefly" (which means "handle this after I have scanned all of my email), "Delegate to PersonX", and possibly refiling it to a folder associated with one of a small number of projects. Usually, the small number of projects, 2 or 3, is a subset of a larger list. Which projects are in my top-level triage list change regularly. E.g. today my top level projects are "Giving" (receipts for tax purposes for charitable contributions made at the end of the year), and "College Search".
Like I said, these projects change. They move around. Sometimes they get deleted, or at the least renamed. Sometimes they get reorganized, e.g. moved from Projects/Current/Foo to Projects/Completed/Foo.
This is what has just happened. I changed the name of a project. There was an existing Quadro button for the project. When I opened the Mail app and the email triage palette/sheet, Quadro worked - but the button that moved the selected message to the renamed folder did nothing. It dod nt appear to hang, it just did nothing.
However, when I further tried to edit the button, when I opened "Application", Quadro just plain hung - before displaying the application list. Rotating wheel. ... Eventually - 10, 15 minutes later? - it timed out. Since there appears to be no way of cancelling a button (pad) edit in Quadro, I had to tap the check mark. Wt this point I got asked to place the button - then death. The button eded up placed overlapping other buttons. Quadro nonresponsive. Next time I hit checkmark, it just disappears.
When I reopen the Quadro app on the iPhone, it "works", in the sense that I can switch palettes. It thinks that it is connected to the Mac QuadroSync. I get Mac notifications. But none of the buttons do anything.
When I got to this point last time, I restarted both iPhone and Mac. Restarted Quadro. Deleted the button(pad) that I thought might be causing the problem. Was frustrated that that did not solve the problem. Ended up deleting almost all of the Quadro buttons I had created, and then realized that in addition to the "missing move to target", I was not tapping fast enough. And when I recovered from that, the problem seemed to go away. Now, let's see...
Restarting the Mac but not the iPhone. Quadro restarts. Works at first - iPhine Quadro switches between Chrome and Mail when I move between Chrome and Mail on Mac.
But after first time I tap on the possibly bad button(pad), Moving to the renamed folder, same sort of misbehavior. Hangs. Currently I am getting a "Drag the Pad to position", for a pad that I was not editing.
I.e. gives every indication of a bug such as a buffer overflow.
Quadro hung, so I double-click iHone home button, ad swipe it away. Restart. Still hung. At this point I should probably look at the QuadroSync process on Mac. But I have other stuff to do.
No, wait... the QuadroSync process has disappeared. Restarting.
This time, I am very careful to delete the button with the filter that got renamed. NOW I can recreate it, without Quadro hanging (yet). The new button works,
But... I kept a duplicate of the old button in a group. Click on that, same problem. Hangs for a while. Eventually, the Quadrosync app on Mac disappears from the status bar. I assume it has timed out. However, the iPhone Quadro app still; hangs - either it does not have a timeout, or I have not waited long enough without typing at it. If I type at it, eventually it dies. I can hasten its death by double-clicking home and swiping it out.
CONCLUSION: it looks pretty darn sure that if Quadro tries to do Apple Mail.app, "Move to", a folder (mailbox) that no longer exists, that Quadro misbehaves.
This is not a total surprise. This sort of problem often occurs in scripting that is "blind", which does not check the return status of an application. Moreover, it is quite likely that, if Quadro is using AppleScript or te like, that there is no way to check that the Mail app is having a problem. UNIX shell scripts can check, when every command is a separately forked/exec'ed process, by looking at the process exit code. But there are fewer standards for checking the error of a command sent to an app, as if human interaction. UNIX expect scripts can look for error indications, but there must be some sort of error log or console for expect to run on. Again, no standard that I know of for such error handling on Mac.
If there is such a standard, the Quadro is not using it. That would be regrettable.
If there is no such standard, then that is especially regrettable.
Even though I can understand Quadro having this sort of problem, nevertheless the sort of behavior Quadro exhibits is bad. It gies every idication of a buffer overflow. I will sketch out below what proper error handling should liuke like, eve if the underlying Mac tools do not support error handling as well as might be wished.
I was really, Really, REALLY hoping that Quadro, because it is more tightly integrated than a VNC sender like Keypad, might handle such problems. Seems not.
Glew motto: Error handling is the true test of software quality.
TBD: how to deal with errors such as this:
Separate iPhone Quadro and Mac QuadroSync processes, obviously. On the Mac, need separate comm process and process to interact with applications. Possibly more than one of the latter, so that actions such as "Kill Hung Process" can be scripted via QuadroSync. Keepalives and timeouts. On UNIX, siagalrm signal handlers. Report an error when timing out, instead of randomly performing what appears to be a buffer overflow.
Problem: Quadro hangs and otherwise misbehaves on an error such as a "Move to" folder target no longer existing: The first bug is that Quadro hangs wen its button configuration does not match the app configuratuon. Whiole pne might argue that is a user error, it is still bad to hand. (And it is stupid to say that it is a user error.)
Problem: Quadro hangs and otherwise misbehaves on an error such as a "Move to" folder target no longer existing: The second bug is that Quadro should be able to detect when the folder targeted by Mail > Message > Move to ... no longer exists - because Quadro obviously can get the folder list to set up the button. So evn though Quadro should not hang it would be even better if Quadro could detect the error before hanging, and proide an error message that the user can use to figureout which button(s) are bfoken, and fix them.
However, when inspecting a button, all that I can see is the last element "giving".
Problem #1: not necessarily unique. The same name can appear multiple places in the tree.
Problem #2: if a bug such as described earlier, where a target path got moved without updating the Quadro button.... well, it makes it darned hard to update the Quadro button if you cannot inspect to see where the problem is.
It would we really, really, nice to e able to see what the full path is from the Quadro UI.
Having a text readable data format for palettes would go a long way towards this, and more: the I could grep for invalid folders, and/or automatically keep in synch.
Problem: It is annoying to have to reseelect App each time I add a button: My application involves creating many buttons in the same palette for the same app. This will not be just at start: I will have to do this constantly, as projects get added and deleted.
Each time I hit edit (check) and + to add a pad, then applications, I have to scroll a LONG LONG WAY down thelist to find Mail. And then into the mail.
At the very last, Quadro should remeber that the last app accessed was Mail, and take me there.
(Quadro does put the current app at the top. But since log each change in a website, this is always Chrome, never the app that I am adding a Quadro action for, Mail.)
Lesser Problem: Folder (Mailbox) list in Apple Mail.app "Move to.." loses structure: I have three email accounts connected to the Apple Mail.app. Quadro loses some of their structure when it makes them available for the user to choose from.
The snippet below shows the structure, which I will summarize as
- iCloud folders
- Gmail folders
Unfortunately, Quadro, when it makes the folder (mailbox) list available, loses that structure. So, for example, "Google" appears undistinguished from its first folder (mailbox), "Starred".
(Half of the moving of folders around above, that caused Quadro to hang and then crash, was to try to minimize the ugliness of this flattening.)
Problem: Quadro does not understand terminating at an interior node of a menu tree: I will provide first the example that bit me just now, related to email filing. However, this is a generic issue with Quadro which I was already planning on posting about.
Many Quadro actions correspond to traversing a menu tree.
The following example corresponds the menus for Apple's Mail.app, as understood by Quadro. The bold stuff are standard; the italicized stuff are folder names. (Inbox is bold an italic - its a folder name, can even be changed by user, but is standard):
- Mail (Apple's Mail.app on MacOS)
- Move To
- Defer Briefly
- ...generic per server Drafts, etc. ...
- ... etc
This sucks. I have defined a mailbox hioerarchy, and Quadro does not allow me to use it. To make my hierarchy work with Quadro, I would have top create special "other" subfolders all over the place.
This provides a Quick and Dirty way of parameterization. Instead of having the toll snarf down the whole m,enu tree, the tool just traverses the hard part to the obvious part. Often the problem is getting past the first few levels of the menu tree.
- with Karabiner on Mac
- with AutoHotKey on Windows
In fact, that is pretty much the definition of a "macro".
Apple MacOS, however, has long resisted having fully functional set keyboard menu navigation. For example, as far as I can tell there is no standard way to open the context menu from the keyboard. ... Well, there is Accessibility NumPad+Ctl+5 to open the context menu (Fn+Ctk+I/5 on MacBook). Unfortunately, I can find no way to send a numpaf+ctl+5, as opposed to control+5, from Quadro.
Perhaps if I install an alternate keyboard? Damn, yet another thing to research.
(OK, I can see that, since Quadro has a keyboard, and also what amounts to a touchpad with swipes. So obviously Quadro can generate arrows keystrokes.
Now, I want to be ab le to send them from my own buttons. I don't want to have to switch to a keyboard to type them. Besides, in my usage of Quadro, I might as well switch to a real keyboard.
E.g. in my Quadro palettes for Apple's Mail.app, I can move between messages by quadro keys bound to command+P/N keystrokes, which Quadro's shortcut feature allows. But Microsoft's Outlook.app uses arrow keys, and hads to P/N bindings that I can find. So I have to switch to the keyboard.)
I am considering creating Mac OSX shortcuts like cmd+opt+shift+ctl+P/N for arrow motion, etc. Bit this is suboptimal, a pain to maintain, and part of the reason I tried Quadro in the first place.
- cmd+shift+?: get to Help menu in menubar
- in a text box typing a search term.
- now, how do I get out of that text box
- right arrow: wrap around the menu bar to the apple menu
- more importantly, get out of the
It looks like Quadro has concentrated on AppleScript-like scripting, and not so much on raw user input. It only has a limited set of "shortcut keys", and appears incapable of generating function keys and mouse clickls. I believe that I came across a Quadro blog saying"Do that with AppleScript" or the like.
I have started writing custom AppleScripts emitting system events for the stuff that plain old AppleScript and Quadro cannot do. Nooby problems, plus the usual problems with raw I/O macro scripting. Interestingly, the more of these I have, the less I need Quadro - I can probably call them from other systems, like Keypad, or even VNC.
I sure would like it if Quadro providing full "Raw Mouse and Keystroke Event Scripting", in addition to the AppleScript level scripting it sees to be supplying now.
Inpsired to meta-genericize:
I have two versions of apps called "Microsoft Outlook":
1) the Mac native Microsoft Outlook (formerly Accompli)
2) I have the Parallels virtual machine installed, and Windows Outlook in the guest.
Quadro starts the Parallels version. But it sees to send commands to the native version. Te Windows version exports no commands to OSA / AppleScript / Quadro, although the native Mac version does.
While I cannot criticize Quadro too much for this - first world problem, aka power user problem (if I am a power user, and not a wants-too-mich-power-for-his-own-good user) - it is still a problem.
TBD: try to fix by editing resources to give unique names.
TBD: I wonder if Quadro's problems with Gmail are caused by having multiple Chrome windows into Gmail? Hmm....
While I can imagine it might be hard for Quadro to handle multiple instances, it can probably detect and warn user.
Problem: "NOT CONNECTED / Tap here to open connection panel" does not work - the tap here does not work - when editing a page (creating a new pad):
Pretty self explanatory. More detail: I am trying ti create a new pad. I hit "Applications". I get the NOT CONNECTED warning. But "tap here to open connection panel" does not open connection panel. I need to exit out of adding a pad - and, in fact, add a broken pad and then delete it (more reason to want a "Cancel Pad Edit), and then hit Star, Open Library, the display oicon to get to the connection panel.
Typical problem: and error message that may or may not work in one context, but not another. (Interestingly, I do not even get that error message when I am not editing. Nothing happens at all.
Problem (Enhancement): I want 2 distinct pads for same app - Email Triage, personal and work. Many buttons same, but some (folders) different. Quadro's sharing imposes annoyances:
At the moment I have two different sheets for Work/Personal. 5 buttons(pads) that are the same (mark unread/undo/cloise/open/archive). But 4 buttons that are different - particular refile folders. And 1, or 2, that are parallel but different - "Defer Briefly" is in both, but different "Defer Briefly" folders fir the different accounts. Plus "More..." button that takes me to
Now, I know how to have a single sheet for all the common stuff, and different sheets for the per-Account stuff. But that means that I cannot have a single sheet that has the most common buttons for Work/Personal, some of which are common, some of which are not.
Pus, switching sheets is not obvious. I want a button that can switch sheets.
Similarly I know about groups. I could have separate groups for the common stuff, Work Stuff, and Personal stuff. But that requires switching between groups. Does not allow the most common stuff visible all at same time.
SUGGESTION: superimpose sheets.
E.g. Work Triage = Common Stuff with Work Specific Triage stuff superimposed
E.g. Personal Triage = Common Stuff with Personal Specific Triage stuff superimposed
From my main triage palette/sheets, I go into a group to use the actions that do not fit at top level. I hit a button(pad) for the action. But I then have to exist the group to return to the main sheet.
Bug: Quadro just crashed. Jan 7, 2016, 2pm.
I have experienced crashes before, but before I could guess - e.g. accessing a folder that was renamed in Gmail but not in Quadro.
This time, no idea. It just became unresponsive, and then *pop*, the iPhone app disappeared. Apparently the Mac app, QuadroSyc, also disappeared.
I would love Quadro - if it worked reliably!!!
What I have works lovely - when it works. But it has hung a dozen or so times this afternoon. It works for a while, then stops working. And I have not yet been able to figure out a pattern - although I am beginning to suspect it may just be due to having too many buttons/pads.
I have rebooted/restarted both my Mac and my iPhone several times. But I am beginning to see that it may not always be necessary to do a full reboot/restart.
Request: please provide a "Restart QuadroSync" option
While debugging the problems mentioned aboe (or, rather, trying to work through them), I have several ties restarted QuadroSync on ny MacBook. Usually by going to the Quadrosyc icon in the menu bar, hitting its only pulldown Exit, and then reinstalling. There must be a better way.
I highly recommend adding a restart entry to the pulldown menu. If it worked, it wouyld make this much less frustrating.
:-) Almost two hours without a crash or hang: :-) Yippee!!!!
What did I change? Not sure ....
Except that I did put Mail.app into "Offline" mode.
After some of the early hangs I saw warnings like "Mail abort: 2 messages could not be sent to the mailbox "Archive-Exchange".
I conjecture that these networking problems were and are related to the hangs.
Of course, I may just have a lot of such problems that will be reflected as "synchronization errors" when next I connect.
I don't expect Quadro to eliminate such problems. I do expect Quadro to be well behaved in the presence of such errors. Ideally, to provide enough information to help figure out what they are - which things are haing problems.
I was hoping that Quadro, because more tightly integrated (via AppleScript) than a raw keyboard/mouse macro program, might be more robust. While Quadro may be more robust, it is not clear if it is doing all of the error handling that it should be.
Bug: Timing Sensitive Behaviour Observed
I just observed a slight Quadro stall (not a full fledged hang), during which I tapped on the keypad a few times, thonking I may have mistyped. And the events were qyueued up, and applied to the wrong emails
Thank goodness for the Undo command in Mail.app.
All SW should have an Undo command. (Yes, Quadro, I mean you)
I was hopeful that Quadro would be able to observe when actions are complete. But it seems, more and more, that Quadro is largely AppleScript/OSA based, and ApplesScripts often need to add delays.
Timing sensitive programs: bad idea. I wonder how many of Quadro's built-in palettes have delays built in?
Problem: Quadro needs ability to rotate dis
Quadro on my iPhone only runs in Portrait mode. I badly need it to be able to run rotated, in Landscape mode, if only because at my desk at work I can only prop up my phone in Landscape mode. And because the iphone cable gets in the way in portrait mode, coming from the bottom. (I need to plug in charger while using Quadro all day.)
Problem: Quadro annoying error messages llike 'QuadroSync connection error / The daemon in the cellar just shout: 60
I am sure that the developer thinks these error messages are amusing.
Me, I just find them annoying. And off-putting. Non-professional.
Professionalism matters, because a product like Quadro, as I noted above, is a big security vulnerability. This sort of childish error message is the sort of thing that you find in malware and Warez sites. Every time I see an error like this I think to myself "I wonder if the Quaadro guys have stolen my identity and are emptying my bank account now?"
Ditto the poor English grammar: "just shout: 60"
60 what? I assume that it is an error code. Error code returned from what? AppleScript.
Inspires more thinking about security model: Quadro is better than a third party keyboard or mouse, because not all of my I/O goes through it.
Of course, I don't klnow that: being non-open, Quadro might have hooked itself into the OS in a place so that it sees I/O from other devices.
But assuming not that, then the problem is that Quadro can generate everything. Again, if the Quadro events and commands were tagged with a capability, I could make sure that the really security sensitive apps do not accept Quadro input.
Q: tag with a capability given to Quadro? Or tagged with Quadro's ID? Both...
Amusing Quadro side effect: causes smartwartch to count spurioius steps
I wear both a Pebble smartwatch and a Jawbone UP2 fitness band. Long story as to why I suboptinally wear two.
Yestertday, I was wearing watch on right and Jawbone on left. Both counting st5eps.
I noticed that watch reported 16,000 steps, while Jawbone reported 6,000. Usually they are within 10% of each other.
I conjecture that Quadro was causing me to move my right arm more.
I think that is good: big muscle movements rather than small finger and wrist movements. And none of the stretching for modifer keys. I am fairly certain that changing from mouse to trackball had a similar effect, and helped my "computeritis" a lot.
Jan 8, 2016, 11am: I *LIKE* Quadro
I like Quadro so far very much, even with the problems above.
Using Quadro, I have been able to acheive Inboz Zero in my personal email for the first time in months, and am almost caught up with work email.
I continue to like the Zero iPhone app - but I suspect that Quadro will make me much less reluctant to use my laptop.
I like Quadro enough that I am seriously considering buying a cheap tablet to run Quadro on. Larger surface area, more buttons than fit on my iPhone 6+.
Problem: Quadro really needs to be on Android, other cheap tablets
I like Quadro very miuch. Enough that I am considering getting a tablet just to provide extra surface area for more buttons.
Problem: Quadro only seems to be available on Apple iOS, iPhone and iPad.
This is a major obstacle. Cheap Android tablets are widely available. Apple iPads are much more expensive. Even a used iPad first generation costs >90$, at least on Amazon. New Android tablets are available for <40 br=""> (Plus, I have two cheap Android tablets that I never used - they were given away as conference swag. Never used, because too slow. But may be fast enough for Quadro usage.)40>
By the way, it would be nice to have a statement about minimum system requirements. Will Quadro run on a 16GB original iPad?
Long-term - if the Quadro developers really wish to push it - of course, don't even need Android or iOS. Just need a cheap touchscreen and a radio. Probably Linux OS.
The biggest reason to be on Apple is the ecosystem - there is greater certainty that the developer will get paid. Android almost as good, although easier to pirate the software. Linux ... might as well give up hope of getting paid.
But there is probably a market for selling a dedicated Linux I/O device like Quadro. But that gets you into the hardware business, which is not much fun.
Minor Problem: QuadroInstaller.HelperTool left running, even though QuadroSync Exit invoked
I have started looking at the running processes, since I have to restart QuadroSync and Quadro so often I noticed the following minor problem. (The fact that I need to restart so often, that Quadro hangs so often, is not a m inor problem.)
"Exit" should mean "everything". There should be no Quadro stuff left running
Initially QuadroSync is running$ bash $> ps alxwww > ps2$ bash $> grep -i quadro ps20 6125 1 0 31 0 2469944 2688 - Ss ?? 0:00.01 /Library/PrivilegedHelperTools/com.quadro.QuadroInstaller.HelperTool501 6127 1 0 46 0 4123340 90048 - U ?? 0:01.74 /Applications/QuadroSync.app/Contents/MacOS/JavaAppLauncher501 6132 1 0 46 0 2576088 12320 - S ?? 0:00.04 /Library/Application Support/Quadro/QuadroNGui.app/Contents/MacOS/QuadroNGuiI go to the QuadroSync menubar icon, right click, click on exit$ bash $> ps alxwww > ps3$ bash $> grep -i quadro ps30 6125 1 0 31 0 2469944 2688 - Ss ?? 0:00.01 /Library/PrivilegedHelperTools/com.quadro.QuadroInstaller.HelperToolI.e. 2 of the Quadrosync processes were killed, but not the third, the com.quadro.QuadroInstaller.HelperToolThis may be left from installation. Be that as it may, it should no longer be running.$ bash $> uname -a
Darwin SYSTEM-NAME 14.5.0 Darwin Kernel Version 14.5.0: Tue Sep 1 21:23:09 PDT 2015; root:xnu-2782.50.1~1/RELEASE_X86_64 x86_64$ bash $>
Problem: Immense Frustration when Quadro hangs repeatedly; great happiness when Quadro works
Was about to give in. Leading to shopping for other Android apps, XKey physical keypads.
Today, reading email from work on a Sunday, nobody else in office, Quadro worked well enough.
It would be sad if Quadro Mail.app not reliably usable from home. But useful if could consistently use from work. Unfortunately, on other days Quadro has died even at work, so such simple "it works here" do not quite apply.
But even if I can only use something like Quadro once a week, only on a Sunday when network is unloaded, would be useful enough. I just need to learn when it can be reliably used, and when it should be avoided.
Problem: Partial ls of Quadro crash report logs:
But these logs do not seem to include all of the hangs, when I have been able to "cleanly" exit/restart./Users/glew/Library/Logs/CrashReporter/MobileDevice/AG6i/Quadro_2016-01-05-131041_AG6i.crash/Users/glew/Library/Logs/CrashReporter/MobileDevice/AG6i/Quadro_2016-01-05-132416_AG6i.crash
Problem: Must constantly reenter (changing) IP address
(Usual problem with pairing - yet another reason why BlueTooth, with an existing pairing solution, might be a nice way to go.)
Good: works across tether / Personal Hotspot
Works when Mac is wired - still can use Personal Hotspot wifi.
But not when Mac needs wifi to connect to net, when I don't want Mac to send everything across phone.
Problem: Often "bounce" when hitting a group, also hitting button at same position in group entered
Unfortunately, often when I hit the group button/pad, I end up accidentally hitting the button that happens to be at the same position on the screen in the new group, Which means that the incorrect action is often performed.
Thank goodness for the "Undo" button!!! (Which I quickly learned to place on every frequently used Quadro palette/screen.
If this were a keyboard, I would say that the problem was "key bounce".
Key bounce should not apply to a touchpad. But it is almost as if the Quadro is asking to read the touch position on entry - or if somehow that reprogrammed keys are being reread, which a new "press down" event.
If I am very careful and quick, I can quickly tap and release and not get the extra key. But if I press at a moderate speed, this "bounce" occurs.
I do not have this sort of problem with other apps.
Good: Quadro worked well today, no problems: Jan 10
I am going to start recording when Quadro works both with and without problems.
Today, at the office, no major problems. The key bouncing issue on the "More..." button. But no crashes, no hangs. If it always works like this, I love Quadro.
Problem: Quadro timeout when client and targdet on different nets - no way to sto, had to wait until timeout
This raises a bigger issue: normally I have my phone and laptop on different wifi nets, with no peer-to-peer. I can change this at my home - I have done so - but not everyone will be able to do this.
For example, at work my company laptop will be on a wifi SSN XXX-Staff, while my phone will be on wifi net XXX-Staff-BYOD, or XXX-Guest. There will be no peer to peer. I think this means that Quadro will be useless in this environment, unless I set up a tunnel, traversing thew net out and back in.
This has not bitten me at work yet, because my laptop has been using a wired ethernet, and has also been able to use personal hotspot tethering. But it will hurt me when I travel to other offices in the next week.
I do have the option of using personal hotspot / wifi tethering, and sending all of my laptop traffic through my phone's personal dataplan. I am not enthusiastic about that. Plus, will require VPN even when I don't otherwise need it.
Many similar scenarios can be imagined.
In particular, if Quadro-like software is ever on an Internet-of-Things device, not a full iPhone - well, nobody I know who cares about security is going to want to allow IoT devices onto the same wifi segments as the machines that actually matter. (Of course, an extended input device with Quadro arguably really does matter, and possibly should be on the secure network.)
This is one of the advantages of using BlueTooth - even if the Quadro "extended input device" tunnels TCP/IP across BT, the fact remains that computer systems are set up for device-to-device Bluetooth, while having wifi and other networking going elsewhere.
Problem: want more 'Context' than simply app name
I would like option of using the full window title. E.g,. I use Quadro Aplle Mail.app for both personal and work. So I want to use a work palette/sheet for Quadro when window title is 'Inbox - COMPANY 76 messages', and personal when window title is 'Inbox - Google 453 messages'. Regexp?
I know this can be done. RescueTime does it. On Windows, AutoHotKey does.
Unexpected Benefit: RescueTime less confuses
An unintended side effect of Quadro is that, since Quadro's client is running on my iPhone, my RescueTime time tracking is more accurate. Whereas, when I do the equivalent of Quadro using a tool running on my PC, such as AutoHotKey, RescueTime cannot always attribute the time correctly.