OS X has a fairly sophisticated keyboard layout handler (better than xkb IMO) that allows you to define arbitrary dead keys in addition to the usual accents. For instance, in my usual layout, I have ‘⌥G’ as a ‘dead Greek’ key, such that for example pressing ‘⌥G’ followed by ‘b’ yields ‘β’. Similarly I have dead-key layers for superscripts, subscripts, math, blackboard bold, Hebrew letters, keyboard symbols, and so on. Layers can also be chained, so, for instance, I have a fraction chain such that ‘⌥F 3 4’ yields ‘¾’. (An X-style Compose key could be done that way, though I haven't.)
Ukelele¹, free software from SIL, provides a reasonably good GUI for defining and manipulating OS X keyboard layouts.
I went through much of the same process in the past week, as I started at a new job where I was not easily able to use linux. I'm a HHKB pro 2 user also - although I actually have really grown to enjoy the placement of the arrow keys and not having to physically move my hand over to use a separate set of specialized keys. As a user of the colemak keyboard layout, I've grown accustomed to rarely needing to stray far from the home row, and this keyboard helps me take the same economy of motion to the next level. For software, I arrived at KeyRemap4MacBook at the recommendation of the colemak website, and between that and standard mountain lion system preference remaps of where command is mapped to etc... (caps lock -> control on the actual laptop keyboard is MANDATORY) I'm finally starting to enjoy using osx as a tool for interacting with text editors.
But - I was fiercely at war with manual placement of windows and the horrendous methods I knew of for changing windows. I'm an xmonad user, and really just wanted something that would put windows exactly where I wanted them and to swap focus easily enough. I found slate, and although it may take a few minutes to write a conf that you're happy with I was able to replicate the major functionality that I wanted.
Ahh... ok now I can finally get stuff done without constant vacations to the mouse, and I can start to notice some of OSX's visual niceties.
Check out xnomad. It seems to me the closest imitation to Xmonad, and doesn't need messing with a config to get working (that is, comes with good default keycommands and limited layouts). It's not in Haskell, but the authors experimental ObjC-based-but-many-times-cleaner-and-cooler language.
It only looks good for me when I'm plugged into a big thunderbolt display. The rightmost window intentionally goes off the screen boundary so that it can maintain its size and not cause any kinds of resizing artifacts when switching it in and out of the wider center pane.
The way I'm arranging center panes and switching focus to them is definitely a hack, and doesn't work when there are other windows open on the screen.
Whatever happened to that keyboard with LCD keys (I've completely forgotten it's name, otherwise I'd surely answer my own question). Did it ever become available or is it still vapourware?
That seemed like a good idea at the time.. I mean, muscle memory is fine if all you do is programming (which I do a fair amount of), but sometimes one moves into different domains that have their own keyboard layouts, for which type of keyboard would be a boon.
EDIT: Of course, actually googling beforehand would have brought up 'The Optimus'.. And of course the Optimus Maximus is "unavailable", though I fail to see why except that perhaps it was horribly expensive?
Some aircraft have pushbuttons that contain dot-matrix display used to change the legend that appears on the button. This change is done under the aircraft's computer's control so that the buttons can be relabeled on the fly. The advertising copy for one brand of these buttons made some human factors claims. or one thing, fewer buttons would be needed in the limited cockpit area. For another, avionics and other system changes could be effected without having to rewire the cockpit.
From the perspective of cognitive science, good labels enhance visibility. Assuming that the person choosing the labels bothers to test the wording, to make sure that the chosen labels are effective and unconfusing, it is, on the face of it, a good idea.
But more careful thinking reveals a number of potential pitfalls to the product: All legended buttons get obscured– by the very finger you are using–just as you are about to press them, obviating a last-second check that you are pressing the right button. But this is a minor problem, for normally you have looked at the legend before you press the button– if you have looked at all. (I am certainly not looking at the legends on the keycaps of my keyboard as I type this)
Then there is the deeper problem of the disappearing button. You want to enable, say, the manual controls on the cabin air conditioner. There is, you recall, a button labeled MANUAL AIR, but it is nowhere to be found. The reason is that it now says COMM BACKUP. You have to figure out how to get that button to light up the way it did before. Perhaps a switch or a button somewhere else changes the legends on the buttons. Or perhaps the legends are context sensitive and won't allow you to change the air conditioning right now. Whatever the cause, when a button has variable legends, the button you want will perhaps have vanished because the system is in a different mode.
But the gravest problem has to do with habituation. Imagine the experienced pilot reaching up and pressing a button. The radio's not working; something's wrong. A communications problem: Time to enable COMM BACKUP. She jabs out expertly at the COMM BACKUP button. Click! Too bad. The copilot was adjusting the cabin temperature in response to a passenger complaint, and the buttons are now in climate control mode. The pilot has just achieved complete manual control over the air conditioning system.
Variable-legend buttons could be useful, for instance, if several people use the same console, each using it in such a way that the buttons do not change meaning for any one user. But this is a situation seldom encountered. Soft keys, whereby a display has changable legends that affect on-screen buttons or buttons adjacent to the display, have the same liability as do variable-legend buttons. A similar problem exists with the use of function buttons, labeled F1 through F11 on many computers. If their functions are unchanging, the labeling is mnemonic. If their functions change, you cannot use them automatically. In either case, they are a poor design."
That's a reasonable criticism, but I don't see how it's applicable to the Optimus keyboard. The Optimus only changes the labels to more accurately reflect the function the button already has in a given context- such as replacing "U" with a rectangle symbol in Photoshop, or showing accented characters when you hold down the right modifier key. The Optimus doesn't add any new key re-definitions.
Indeed, and the Optimus would likely not be used by two people at the same time, thus one might be marginally less likely to suffer the kind of context switches described above (which are of course valid, but in that context).
There are lots of use cases that are not as safety-critical as an aircraft cockpit, which the author is deliberately ignoring in order to justify his dismissal of a new technology he doesn't like.
Here's one implementation, and having used this myself I can report that it works awesomely well:
See in particular image #5, which shows in close-up the buttons which display soft channel assignments. Per picture #2, you can see that this mixer accepts 32 audio signals as inputs and can route them to 16 different outputs, with varying degrees of additional signal processing along the way. In a studio or live situation, you do use broadly similar configurations from day to day - eg you may default to always putting the drums on channels 1-8, even if that leaves a few channels unused sometimes - but it's never exactly the same and sometimes the requirements can be radically different. Part of a sound engineer's skill is being able to keep track of what sound sources are assigned to what channel and mix the signals in some musically or narratively appropriate fashion (eg for a dialog and FX in a movie). Now, one can do that on autopilot for perhaps 8 channels but for 16, 24, or 32 that's not practical. The traditional way of dealing with this is to put a tape strip along the bottom and write down what the channels are assigned to; some engineers swear by a product which consists of colored magnetic tiles that attach to the (usually steel) panelwork of the mixer.
Here, dynamic LCD buttons are used to good effect in a realtime situation where performance matters, albeit not in the life-and-death way of an aircraft cockpit.
Yes, this was the site that I found once I googled.. and which told me it was unavailable. No obvious info as to why or if they're planning on resuming production.
I've been thinking a lot lately about a completely pimped out keyboard interface...
It starts with hardware (Type Matrix, Kinesis) and hardware accessories (petals, extenders). It continues with a keyboard layout you're happy with (Workman seems to be the most hardcore), either built into the keyboard hardware or selected via the OS. The keyboard layout in the OS can be modified as well. Then come deeper software hacks like PCKeyboardHack and KeyRemap. Then, softer stuff like keyboard shortcuts go in your favorite launcher/macro/shortcut app.
Interesting that he talks about _what_ he wants to do (same commands, everywhere), then shows an app that controls _how_ to do things (use caps lock for escape and control).
Isn't he consciously aware of what he wants, or isn't he getting there yet?
I started reading this, saw "Super Duper mode" and F19, and the assignment of Control+Shift+Option+Command to some newly created "Hyper" key, and seriously thought it was a parody of those projects trying to improve and innovate on computer input methods (e.g. vim, colemak, various ergonomic keyboard designs).
I then realised it wasn't a joke. Now I actually think this is pretty cool at what it does, but it did make me think about how much effort people seem to put into finding the perfect interface, and yet the QWERTY keyboard has (generally) been the unchanging standard for decades now...
What I want is a keyboard with two big keys below the space bar, each half the width of the space bar, that I could map to Escape (the left one) and 3rdLevelShift (the right one). With Ctrl left of A, and Backspace just above Enter (aka the Unix Layout), I would be able to type without having to resort to ridiculous contorsions.
Loads of bonus points if the keyboard has the same kind of keyswitches as the IBM 5100 computer. If you are familiar with modern keyboard switches and folding knives, the IBM 5100 switches are to Cherry blues what a Chris Reeve Sebenza is to a Walmart-bought Buck knife.
Related: http://www.neo-layout.org — also has the arrow keys on one of the upper levels, plus tons of useful characters all over each of the levels :).
Ukelele¹, free software from SIL, provides a reasonably good GUI for defining and manipulating OS X keyboard layouts.
¹ http://scripts.sil.org/ukelele [Edit: fixed link]