This is great, btw. Kinto is 100% a sanity saver. Please note the following rant is mostly tongue-in-cheek.
'cuz it turns out, I personally hate how Windows and Linux do things with `ctrl`. Coming from a Mac, my biggest and most consistent annoyance is that the `ctrl` key is fucking useless at best...
One of the most common use cases for the `ctrl` key is COPYING shit and followed by PASTING shit and it DOES NOT WORK in a fucking TERMINAL... Because `ctrl-c` sends an interrupt, I don't know what `ctrl-v` sends and I don't give a shit as long as it is not pasting my fucking buffer.
Seriously... on Linux this has got to be the worst default ever made. Sure `ctrl+shift-c` will copy things but it's fighting decades of fucking muscle memory... and if I miss the shift, "boom" repl killed. Great experience for someone totally new to the OS, just follow this tutorial, start by copying this from your spooky new black box: "[^C program exited." I'm willing to bet I ran into that exact thing years ago in highschool and just attributed it to me being a dumbass and gave up: "damn, I can't even copy paste shit in this, I'll never figure it out" instead of that being the worst most absurd default on a *nix system ever.
And the "Windows/Hyper" key? Ah yes, here's a key that was created to globally disrupt whatever you are doing. So where is the obvious location? In-between two keys that are ONLY used as modifiers; so, when you accidentally hit the wrong one you always lose focus. Even better is when you accidentally do so on both characters; enabling some obscure setting or window you can't correctly undo because you don't know what you pressed!
I'm glad to know there are at least some other sane people out there who have realized 1992 may not have been the pinnacle of desktop computing...
I'm having difficulty parsing your rant. I can't tell if we agree or not. :)
Ctrl+C is a method of generating a standard ASCII character which has meant "ETX" (end of text, sometimes "interrupt") for many decades.
Other control chars are useful too. In addition to C, I use S, Q, D, Z, V, O, N, I, G, H, M, L, J, Y, A, E, K, W ... probably others ... fairly regularly.
So in the early 1980s, along comes MacOS which needs keyboard shortcuts for GUI actions. What does Apple do? They add a key to the keyboard, an Alt or Meta equivalent called "Command". OK, awesome.
Then Windows comes along. Microsoft says "eh, who cares let's break it all", (or more charitably "we don't control the hardware and can't add a key, so let's break it all") and reuses Ctrl+C for copy. Et cetera.
Then Linux desktop environments come along and say "well people really like Windows...we don't, but most people who might try our DE probably do, so let's borrow the bad ideas from Windows instead of the good ideas from Unix or MacOS. Let's use Ctrl+C for copy! But also the command line is kind of important on Linux, so let's screw everything up and use Ctrl+Shift+C for copy in the terminal only because who cares about usability and UX consistency? Not us!"
That was 25 years ago. Nothing has improved since then. Alas.
> They add a key to the keyboard, an Alt or Meta equivalent called "Command". OK, awesome.
Apple added three keys on the original Mac keyboard. The Command key, the Option key (which is used, more or less, as a second Shift key) and the Enter key (not to be confused with Return). The Enter key eventually was deprecated and made equivalent to keypad-Enter. It's now mapped to Shift-Return on Macs. The Option key, not the Command key, is now mapped on modern keyboards to Alt. The Command key is its own wonderful beast. Both ESC and Control were missing; both were added back later.
This is true, and it's an evolution from the Apple II (//, ][, etc) days which had two Apple keys (Open Apple and Closed Apple), one on each side of the space bar.
I recall reading somewhere that Jobs hated Open Apple and Closed Apple. But thank goodness for ⌘ !
Actually, the Mac's keys are derived from the Lisa, whose release well predates the Apple IIe (the first II with the apple keys). Except for the numeric keypad, the Lisa keyboard differed from the Mac only in that the Lisa used an Apple symbol whereas the Mac used ⌘.
I remembered that the Mac Plus (1986) had ⌘, and that the //e and //c both had Open/Closed Apple keys, but wasn't sure about the transition through Lisa and the original Mac.
Wikipedia has both the //e and the Lisa with a release date of January 1983. But of course the Lisa project goes way back!
I should have been more clear, indeed, I find sending signals to the system using the `ctrl` good and proper. I have no problem with the control key, sequences, or characters. My issue is ignoring the sheer, maddening, brilliance of the command key...
> Then Linux desktop environments come along and say "well people really like Windows...we don't, but most people who might try our DE probably do, so let's borrow the bad ideas from Windows instead of the good ideas from Unix or MacOS. Let's use Ctrl+C for copy! But also the command line is kind of important on Linux, so let's screw everything up and use Ctrl+Shift+C for copy in the terminal only because who cares about usability and UX consistency? Not us!"
Yes :jacknicholsonnoddingandsmiling:
Linux and non-mac *nix systems emphasize how powerful the command line is but totally fucking ignore even the most fundamental of modern use case(s): copying and fucking pasting. It's just fucking silly. Yew (being a fancy terminal box thing) ain't that powerful if yew cain't (yeah, that's can't + ain't) copy and paste some shit. It's like someone bragging about how fast they can type with their feet, "...cool brometheus... how about you get a fucking job and pay rent for once?"
> "we don't control the hardware and can't add a key, so let's break it all"
But they do control it enough to add the Windows logo key and the context menu key.
I use the Windows logo "Super" key a lot (mostly for workspaces) and I miss the context menu key which is there on my office keyboard but lacks on my laptop (which even has a keypad). Being able to open a context menu without using a mouse is a very useful convenience.
>Microsoft says "eh, who cares let's break it all", and reuses Ctrl+C for copy.
It wasn't Microsoft though. Common GUI hotkeys like Ctrl+Z/X/C/V/P were introduced in Xerox Alto first, and everybody else used this as a convention, including Microsoft.
I'm not sure what hotkeys Alto Executive used, and whether there was a mnemonic conflict at all.
I just solve that terminal issue by using a terminal that has "smart copy". The two I know of that do are pantheon-terminal (from elementaryOS) and kitty. The idea is that Ctrl+C behaves normally (sends SIGINT) unless you have text selected, in which case it will copy the selected text then clear the selection. So if you had something selected, you just hit Ctrl+C twice to send an interrupt if you need to, with the convenience of Ctrl+C working just like you'd expect in every other app.
This sounds to me like one of those ideas that's great in theory but real-life situations are too fragile to make it work. Suppose you're trying to copy something out of the window with a long-running process. You select some text and then press Ctrl-c, but whoops your hand jerked and you tapped c twice. Process killed. Or as you moved your hand to hit the shortcut, whoops you bumped the trackpack and clicked, deselecting your text, and Ctrl-c killed your process.
Obviously either of these would rarely happen, but every time I use a terminal in macOS I end up accidentally killing a process because I can't keep the modifier keys straight, so I'm sensitive to introducing the issue on Linux. (On Linux, I have the opposite problem, which is that I try to Ctrl-shift-c in Firefox, which opens the dev tools.)
“your hand jerked and you tapped c twice. Process killed”
I don’t see how that can happen. If you tap c twice, you either copy twice (copying keeps text selected), which is harmless, or, if you release the control key between the taps, type a c, which doesn’t kill the process.
The accidental deselect, on the other hand, can indeed be problematic.
This is a fair concern, but personally, 99% of the time I'm copying from a terminal, it's when there is not an active process (usually copying an unexecuted command from the current prompt). So I don't see any issue with this for my use.
I _don't_ want that though. I use text selection as a reading aid, so selecting stuff immediately clobbering my buffers is very much not what I want. I prefer to be explicit about when I want to copy stuff.
I kind of disagree (I mean, ctrl+insert/shift+insert works consistently, right?)
The one time I get really frustrated with conflicting keyboard shortcuts is when trying to do terminal work in a web browser, through, like the odd KVM session when SSH is down. The number of times I instinctively pressed Ctrl+W to correct a word in bash and instead close the whole session... Or, depending on emulator, inability to paste. Even more frustrating that these situations are commonly high-pressure.
The insert key is consistent, but it’s so far away that it comes with a bunch of typos. I just can’t consistently hit keys that are so far away from the home row.
Same with the Windows home/end for sending the cursor to the beginning/end of line. That entire block of keys is only useful for navigating documents, they’re just unergonomic to use when you’re also typing.
The problem with the Japanese keyboard is it adds too many keys. Keys added in the last row are OK, we can pick one serving as “Command”; but keys added in the home row, number row break your muscle memory thoroughly(as enter and backspace are frequent keys).
I bought one, threw it into garbage the second day.
nice, just tried to find some places where can find more models, like smaller layouts etc, but couldn't anything, neither on ali, amazon and ebay. Where do people buy Japanese keyboards except in Japan?
No the Lenovo ThinkPad Compact USB Keyboard with TrackPoint(I don't mind the differences so much.) Using SharpKeys this is really easy. I do have a traditional Thinkpad keyboard non Japanse though.
All you do is press the key in the "Type Key" blank in SharpKeys.
I have actually gotten a Japanese Thinkpad keyboard for my laptop although its for the T420 model. I would have to check my Desktop to see how this works again(on a laptop right now) if you want the actual scan codes. I will say I haven't gotten this to work on Linux just Mac and Windows unfortunately.
(1) Where did you get the (internal) JP keyboard for your Thinkpad, Ebay or Lenovo parts sales?
(2) Imagine those 5 keys on your JP keyboard...
_ _ _____ _ _
|1||2||Space||4||5|
...how convenient is it for your left thumb to hit 1 and 2 and for your right thumb to hit 3 (Space), 4 and 5, each on a scale from 0 to 10? Bonus question: do you have small, medium or big hands?
And how did you get the idea to use a JP keyboard?
2) I have 2 of the 3 Japanese keys mapped to control/modifier and and the third mapped to space. Your picture seems to be off there aren't four modifier keys but three. The switch is quit seamless between a Mac and Windows. Medium Hands. I was analyzing keyboard layouts.
Hey me again, just checking out buyey.jp in order to order some stuff as well, so this is not just a freight-forwarder but an agent, means they do the actual buy of the product on the respective merchant sites such as Yahoo Auction etc.
How was your experience, would you use them again? And I assume you did a full managed buy?!
If this thread is getting restricted you can also PM me on reddit with the same username.
I had mixed reviews with Japanese auction site - one item arrived with good shipping, the other item did not and had freight shipping I believe. It was not a big deal to me but I would give them a low pass because there are no other options. This may be because of corvid.
I love the Mac shortcuts because most are centred around the thumb and left hand, instead of having to awkwardly pinky the ctrl key or stretch for a alt-f4.
The solution that works perfectly for me is to remap the keys, L Alt -> L Ctrl , Win Key -> L Atl , CapsLick -> Esc.
Probably this will not work for many people but is great for me since I have tons of keyboards shortcuts in my IDE and DE that use ctrl and shift . I think I use Alt only for Alt+tab but I don't need it that often because I have 7 virtual desktops that I reach using Ctrl+f1/f7
The ctrl-c for interrupt is a default of terminal, it can be changed with stty. Eg "stty intr ^g" will make the terminal interpret a ctrl-g character as a signal to generate the interrupt signal.
(And Linux the OS doesn't have any opinion on GUI terminal keybindings. You may be tempted to point your finger of blame towards X11 next, but X11 traditionally the text selection is mouse based with implicit copy on select - paste defaults to shift-insert in the bundled X11 terminal emulator.
The shift-ctrl-c charade was created by gnome-terminal I think)
To me precise about ctrl-c being default of the terminal meant in this context: it's the default of the Linux kernel tty driver. Which is a different thing from the terminal emulation program. So stty manipulates the kernel tty settings with system calls without involvement of the terminal emulation program like xterm or gnome-terminal. And what interprets the ^C / ^G in this case is also the kernel.
If you find this annoying, a way around is to set your terminal to use ctrl+c and ctrl+v for copy/pasting and ctrl+shift+c and ctrl+shift+v for the original chars it sends.
After switching development from Mac to Windows I wrote an AutoHotkey script that maps most ctrl+ combinations to alt, which is the physical location where cmd on the mac was.
so alt+c for copy, alt+v for paste etc. it solves the terminal problem AND it reduces strain on the thumb.
capslock to ctrl works really well on thinkpad keyboards. with the fn key in the corner instead of ctrl, you can press fn with the base of your palm and then press the F keys with your middle finger. i can reach F8 without mashing any other keys with my palm
The conflict between Ctrl+C Copy vs SIGINTR could be resolved by making the Escape key be the interrupt key which would actually be the correct behavior from user standpoint... but everyone would have to relearn it.
> One of the most common use cases for the `ctrl` key is COPYING shit and followed by PASTING shit and it DOES NOT WORK in a fucking TERMINAL... Because `ctrl-c` sends an interrupt, I don't know what `ctrl-v` sends and I don't give a shit as long as it is not pasting my fucking buffer.
Ctrl + Shift + Ins (paste) and Ctrl + Shift + Supr (copy)
Ctrl + Shift + v (paste) and Ctrl + Shift + c (copy)
That's not a solution. Having different hotkeys in the terminal than in every other application is horrible UX. Like I said elsewhere, I use the "smart copy" feature from kitty, which makes Ctrl+C actually copy when I want, if text is selected (and Ctrl+V works as normal).
> One of the most common use cases for the `ctrl` key is COPYING shit and followed by PASTING shit and it DOES NOT WORK in a fucking TERMINAL... Because `ctrl-c` sends an interrupt
Most terminals today have a copy-on-select feature, which means you don't need to ctrl-c at all. Just select and ctrl-v.
A large number of keyboard shortcuts are in conflict. "One specific keyboard shortcut has a mouse-based workaround" is not really a good answer.
The Windows GUI copied the Mac’s keyboard shortcuts (originally from Lisa?) but didn't have a dedicated key for them so re-used the existing Ctrl key, which already had a meaning on text-based operating systems. (This happened because Microsoft had no input into hardware keyboard layouts, and wanted to make software compatible with the plethora of IBM-Model-M-layout keyboards available in 1985–1990.)
Then Linux GUIs wholesale copied every feature of Windows they could including the keyboard shortcuts, in a context where this was even worse, because now existing Ctrl-based shortcuts from terminal software were directly in conflict with new Ctrl-based shortcuts from Windows.
That's why I never connect a mouse on my laptops. I've got a touchpad that's part of the keyboard. I select text with it and paste with its middle button. I only buy laptops with three physical buttons precisely because of this user case. A mouse would slow me down.
Where a mouse is really needed is in action games. A touchpad is too slow there.
Maybe, but I'm not sure about it. They are very different in location and interaction patterns.
In this context there is a lot of difference between a mouse and a touchpad. For example, I select text with the keyboard most of the times in emacs and in any other input box (not in vim, is it even possible?). So I'd lose time by reaching to a mouse. I hardly have to move my hands to use my touchpad.
I want to chip in here with a rant of my own because I absolutely fucking hate this feature. The idea that something I think of as a passive action—selecting text—can destructively alter my clipboard makes my skin crawl, and it's baffling that anyone thinks it's a replacement.
The thing is it's the default on iTerm2 on the Mac, so every time I set it up I spend a week thinking "why is my clipboard always completely full of shite" before I remember and turn it off.
(YMMV, you may like this, you may actually have proper clipboard management, and so on. I didn't say this was a logically consistent rant.)
I don't think Mac OS actually natively supports select to copy so ITerm2 as an app implements it by filling the same clipboard buffer you would otherwise use.
X11 by contrast has by default 2 buffers so you never clobber your buffer filled by control+c however some clipboard management software optionally syncs the 2 buffers bringing back the behavior you dislike.
That’s not true, iTerm2 doesn’t overwrite your clipboard. It, like it’s forebears, uses a separate selection buffer. The only way to paste from it is middle mouse button as far as I know.
Usually in Linux (specifically in Xorg) it's select to copy and middle click to paste; which uses a separate buffer from the C-c/C-v clipboard.
Personally I find this method much more usable than the traditional windows-style clipboard.
Either way, you want to generally avoid C-c for copy in terminals because it's already bound to the all important "send sigterm signal to foreground process". This is on a long list of ancient cruft that exists in terminal emulators and shells.
The nice thing about how I wrote Kinto is that it supports numerous Terminal applications and the Cmd key location becomes Ctrl+Shift+(the_key_press), so you effectively have everything you'd want without needing contort your fingers for another modifier key.
I am serious about not wanting users of Kinto to feel like they are dying a death of a thousand paper cuts because they have to stop what they are doing and add yet another keymapping. Kinto can't get every app remapped right 100% of the time - but it gets awfully close still.
Initially I did not write Kinto that way because I didn't think it to be all that possible and with setxkbmap it was very difficult to understand and properly implement such a configuration. Probonopd, who does write some wonderful articles about UX related topics that I've also seen hit the frontpage here mentioned not wanting to remap terminals at all - I agreed and eventually delivered. He also made sure that I worked out wordwise hotkeys as well.
Also with it being rewritten, several months ago, to use xkeysnail it is also very simple to add additional hotkey remappings to as well.
Control chars are in-band signalling. This is always "bad", but sometimes it's all you have. Certainly back in the early days of wired serial connections, that was the case.
So if you have in-band signalling, you need a method to generate those signals. I don't think there was any other viable way to solve this problem, and honestly it has worked almost flawlessly.
Of course Microsoft is a big exception, but that could hardly have been predicted 20 years earlier.
So your entire point is that control characters are still good because they were a good solution to a problem that only existed 20-30 years ago? I'm not convinced.
My point here is that we are so steeped into tradition that usability suffers.
I really don't think that's true. It's not tradition, it's practicality -- control characters are good because they are established, standardized, and work perfectly to solve an ongoing need.
In-band signalling is inherently a bit of an architectural challenge. But the problem is solved. The entire internet is run on in-band signalling! We're going on 35 years for TCP/IP, and more like 50 for ASCII control chars. They work very, very well.
Yes, Microsoft broke control character generation for users of their OS, but that's a compartmentalized failure, and easily avoided. The Ctrl+Shift GUI workaround in Windows (and copied in Linux) is not elegant. But any alternative without control chars would be a total loss of functionality.
Ctrl+C being broken by Copy is a trivial example. There's a whole alphabet of control chars (in fact there are 32), and we all use more of them than most people realize[0]. Some have dedicated keys on the keyboard (backspace, return), but obviously not all of them.
I use about a dozen control characters regularly. This is not unusual for someone who works closely with server operating systems.
[0] I'm not sure how to gauge your knowledge of communication signalling or protocols, so I apologize if I'm being pedantic. It sounds like you have ideas about alternatives (and this is interesting to me), so I am curious about any specifics you can share or link to.
> Either way, you want to generally avoid C-c for copy in terminals because it's already bound to the all important "send sigterm signal to foreground process". This is on a long list of ancient cruft that exists in terminal emulators and shells.
stty intr ^X
Then ctrl-c will no longer bother you, and your muscle memory will quickly adapt as X is very close to C
I mapped intr to control g some 30 years ago. It's the interrupt key in emacs. I gave up after some months because I still had to use control c on any terminal that I didn't control.
By the way, I don't even know if I could paste with control c or control shift c back then. Maybe there was only middle click.
That's actually the worst though. I use selecting to highlight text that I'm reading as an aid. Copy-on-select is a huge dealbreaker for me because it clobbers my clipboard when I don't want it to.
To be pedantic X11 has a copy on select feature which works on virtually all applications. This means you get by default 2 different clipboards although some environments/applications have an option to sync them among other additional features like being able to select from the last n pastes which may be optionally persisted through reboots for example.
'cuz it turns out, I personally hate how Windows and Linux do things with `ctrl`. Coming from a Mac, my biggest and most consistent annoyance is that the `ctrl` key is fucking useless at best...
One of the most common use cases for the `ctrl` key is COPYING shit and followed by PASTING shit and it DOES NOT WORK in a fucking TERMINAL... Because `ctrl-c` sends an interrupt, I don't know what `ctrl-v` sends and I don't give a shit as long as it is not pasting my fucking buffer.
Seriously... on Linux this has got to be the worst default ever made. Sure `ctrl+shift-c` will copy things but it's fighting decades of fucking muscle memory... and if I miss the shift, "boom" repl killed. Great experience for someone totally new to the OS, just follow this tutorial, start by copying this from your spooky new black box: "[^C program exited." I'm willing to bet I ran into that exact thing years ago in highschool and just attributed it to me being a dumbass and gave up: "damn, I can't even copy paste shit in this, I'll never figure it out" instead of that being the worst most absurd default on a *nix system ever.
And the "Windows/Hyper" key? Ah yes, here's a key that was created to globally disrupt whatever you are doing. So where is the obvious location? In-between two keys that are ONLY used as modifiers; so, when you accidentally hit the wrong one you always lose focus. Even better is when you accidentally do so on both characters; enabling some obscure setting or window you can't correctly undo because you don't know what you pressed!
I'm glad to know there are at least some other sane people out there who have realized 1992 may not have been the pinnacle of desktop computing...