Hacker News new | past | comments | ask | show | jobs | submit login
Kinto: Mac-style shortcut keys for Linux and Windows (github.com/rbreaves)
237 points by yankcrime on March 11, 2021 | hide | past | favorite | 242 comments



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!


Hmmm, I seem to recall the //e being released much later in 1983. But yeah, maybe they were co-released.


Amazing how little it takes to completely transport a person back in time. Hadn’t thought about “Open Apple” in a long time – thanks for that!


Before there was “Ctrl - Alt - Delete”, there was “Ctrl - Open Apple - Reset”. Those were the days...


We most certainly agree, friend :)

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?"

shakes fist menacingly at the ether


> "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.


You can open it with Shift + F10.

But I agree it was a good thing to have.


>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.


Originally Microsoft used Alt+Backspace,Ctrl/Shift+Insert/Delete, Ctrl+ZXVC was introduced later (probably around XP... maybe earlier in Office)


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.


It was explicitly stated that copying deselected text and that ^C^C copies and kills.


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.


You don't even need to use Ctrl+C in kitty. You can just select it and it will be in your clipboard.

And then just middle click to paste again.


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.


Ah yes but it’s not in your clipboard, it’s another buffer entirely.


With Kinto I really don’t care which terminal you use, new or outdated - it’ll work the same as they do on a Mac.

Also eOS implementation has its issues, smart copy needs to be disabled too for Kinto to work - thankfully it’s practically the only one.


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.


Yeah I get you.

For home/end:

Ctrl+A/Ctrl+E for all shells, ^/$ otherwise


Get a Japanese[1] keyboard and remap some keys around and you can accomplish this on Windows.

You will need SharpKeys[2] and Autohotkey[3] at least in my set up.

[1]: https://images-na.ssl-images-amazon.com/images/I/61oeDlRN4QL...

[2]: https://www.randyrants.com/category/sharpkeys/

[3]: https://www.autohotkey.com/


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.


For a European keyboard there is hardly a difference but ANSI sure. I have backspace remapped as normal.


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?



Ok this was easy. Don't know why I haven't checked Amazon JP...

Just checked and you can even order from Amazon JP and let ship to Europe. Nice, problem seems to be solved. Did you ever order something from them?


I have a Thinkpad Japanese keyboard from them.


The TrackPoint Keyboard II?

Do you know what scan codes (or in general what characters) those Japanese keys next to the spacebar send when the keyboard layout is set to US?


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.


Hey, I got the scan codes, they're 7B and 79, check here https://www.win.tue.nl/~aeb/linux/kbd/scancodes-8.html

(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?

ps I use AHK, have to check out Sharpkeys!


1) that was slightly tricky I had to use buyee.jp

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.


I might suggest remapping caps lock to control on hold and escape on tap [1].

https://gitlab.com/interception/linux/plugins/caps2esc


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).


It is indeed frustrating. ElementaryOS gets this mostly right. I wish Elementary was a rolling release distro...


> 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.


>One specific keyboard shortcut has a mouse-based workaround

Except for that particular action (select some text on terminal then copy) you have to use mouse to do the "select" part anyways.


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.


Doesn't the word "mouse" include trackpads in most context?


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.


It 100% does. The "Copy to pasteboard on selection" option causes selected text to overwrite whatever's on the clipboard, and I just checked.

It's possible that this isn't enabled by default, but I'm virtually certain it is because it catches me out every time.


Aha well then, we have differing experiences


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.


> generally avoid C-c for copy in terminals

Absolutely. But it's not cruft. It's the original meaning of the character, and the standard method of generation.

Ctrl+C is just like any other keypress which maps to a standard ASCII representation.

The error is in reusing ASCII chars for GUI actions. This was an obviously-bad idea in 1985, and it has never become a better idea.


That's the traditional perspective.

My perspective is that control characters were a bad idea from the beginning. Then again, so are ubiquitous predefined keyboard shortcuts like C-c.

Having user interaction predefined makes it more difficult to change keyboard layouts and shapes.


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.

I could try again now and see what happens.


I didn't know you could do this before this thread this is a great idea.


Muscle memory doesn't help with "not quite what I'm used to, but it's very close". It doesn't handle conditional statements.


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.


As a user of mac, ubuntu and windows, 100% agree.


You could use a Mac and avoid all of this nonsense entirely.


And then deal with all the Mac nonsense? No thanks.


+1 I'm not touching a mac without swapping ctrl/command and finding an app for proper Alt+Tab window switching.



The difference between Mac and PC keyboards is a real usability problem. If you're used to PC's or Linux, moving to a Mac and dealing with their shortcuts is painful, and vice-versa. The worst is using a mixture of both Mac's and PC's on a daily basis. Moving back and forth between platforms daily means you either have to get used to hitting the wrong shortcuts or use a hack to swap keys around on one platform so you can have standard shortcut key positions across platforms.

Different people will have a preference for one layout vs the other but, in reality, the layout that feels good is what you're used to.

The PC and Linux worlds are not going to adopt Mac keyboard layouts. As the one oddball computer manufacturer that uses their own layout, perhaps it's time for Apple to offer PC keyboard layouts as an option on their machines out of consideration for people who have to use multiple platforms.


> The PC and Linux worlds are not going to adopt Mac keyboard layouts. As the one oddball computer manufacturer that uses their own layout, perhaps it's time for Apple to offer PC keyboard layouts as an option on their machines out of consideration for people who have to use multiple platforms.

I switch between Mac, Linux, and Windows. The Mac is the only one with a usable, consistent terminal. Linux and Windows both have really fucked up copy/paste. Shift+Insert, Control+Shift+V, right-click, middle-click… what a goddamn mess. For some reason, Windows, which was supposed to have “right-click brings up a contextual menu everywhere” decides to make right-click do some weird almost X11-like copy-pasting in the terminal. Linux at least has the half-sane Control+Shift+C and Control+Shift+V but there’s multiple clipboards, and different applications may only use a subset of those.

Mac? ⌘C copy. ⌘V paste. Everywhere. Terminal, no terminal, same everywhere. Hands stay in center of keyboard where they belong. No reaching for the “insert” key, which is a recipe for typos.

Let’s not make the Mac worse just to make things consistent.


I absolutely agree. I work on a Mac but have to remote into a windows machine daily and this still trips me up. The Microsoft Remote Desktop app had the option to keep some Mac shortcuts for copy paste and such but it’s still an absolute usability nightmare.

I used windows machines an overwhelming majority of my life but I find the Mac OS shortcuts to just be much easier to remember and reach with one hand. For example cmd Q for quit as opposed to alt f4 just makes sense.


> The PC and Linux worlds are not going to adopt Mac keyboard layouts.

And that’s a damn shame, because they make much more sense.

> As the one oddball computer manufacturer that uses their own layout, perhaps it's time for Apple to offer PC keyboard layouts as an option on their machines out of consideration for people who have to use multiple platforms.

Lol no. I use Linux, Windows and macOS each about a third of the time (Linux for work, Windows because I have to, and macOS for fun and working from home), the last thing I would want is my Mac at home getting significantly worse just to reach the lowest common denominator. Besides, you can use any PC keyboard already if you really like the window key.

The use of control as the modifier key for keyboard shortcuts is an unfortunate historical accident, not the better way.


> the last thing I would want is my Mac at home getting significantly worse just to reach the lowest common denominator

Yeah, then what would mac have going for it ?


I work roughly 60/40 from my office (Windows workstation) and home (macOS laptop). I have a significant insight into how they work and their shortcuts; not only that, but I use Sublime Text and VSCode in both, and am familiar with the differences between macOS/Windows for those shortcuts. That being said, in terms of productivity, ergonomics, and things generally being well thought-out, Windows is nowhere near macOS. It does certain small things right, like Win-Shift-S copying to clipboard by default (you need to hold Ctrl while releasing the capture to get the same behaviour on macOS), and overall is much snappier due to macOS being a bloated mess. Overall, though, Windows is garbage for developers (yes, yes, if you're using Microsoft technologies or oblivious to what happens outside of your IDE you will probably be happy enough) -- and I have tried WSL2, Cygwin, working from a VM (yuck), and many other similar options.

I've recently discovered VSCode's remote functionality (more specifically, how incredibly well it works), so I've set up an SSH box and can now seamlessly work from anywhere (side note, having tools that only serve you is incredibly fast if you're used to things like GitHub or managed CI).


as a person who loves Macs and their keyboard shortcuts, I'm really excited to find this project! and as somebody like yourself, who has to work on both platforms (Apple/PC) every day, I'm very happy it exists. would the answer to your problem not be a reciprocal library for Mac that ports over (or makes possible) your preferred shortcuts? I believe this already exists, which should be good news for you.


I empathize with you, but from the other side. I got a Mac at work while being on Linux for a long time; and the differences in keyboard combos are driving me mad, so much that I don't even use said Mac anymore. The differences in keyboard layout are so unnecessary from technical point. The only reason for them to exist is to lock people into the corresponding ecosystem. Whoever got that going deserves get a swift kick in the nuts for every time I missed a key due to that nonsense


> The only reason for them to exist is to lock people into the corresponding ecosystem

Or maybe Mac users have had that keyboard layout for decades and are happy with it? Anyone who really wants a Windows-style layout could just change their own anyway, so people must not be that bothered.


> The differences in keyboard layout are so unnecessary from technical point. The only reason for them to exist is to lock people into the corresponding ecosystem.

Surely you’re aware that these keyboard shortcuts have been in use on Macs for about a decade before Linux existed, right?


That's the same argument Emacs developers use to justify alt (sorry, "meta") + w as copy. But it's a terrible argument.

(In the Mac case at least using cmd+c is superior, and even works in Emacs!)


Is that the default meta key? If so then thanks. I've had a really hard time getting that info from emacs users so I haven't been able to try it.


Meta is usually Alt in emacs, but it should be noted that everywhere else, Meta usually refers to Super (which is called "Cmd" in Macs and "Windows Logo Key" in Windows).

(And macOS's built-in emacs keybindings available in every textbox uses ctrl+opt for meta.)


The main difference is that command-c makes sense ;)


I dislike using Macs for the same reason, when I had one for work I managed to use Karabiner to remap a ton of shortcuts to at least make it tolerable. And by tolerable, I mean "only cursing at the OS every minute or so rather than on every second keyboard combo attempted".


offer PC keyboard layouts as an option on their machines

They actually do/did, in a combination of custom shortcuts in system settings, plus an obscure and ancient .plist to change input navigation shortcuts. But Electron ruined everything, because instead of understanding the underlying platform's input methods, apps like Slack hard-code mac-ish keyboard shortcuts and behavior of home/end keys.


My main computer is a mac but I have to remote into windows machines often and switching between is horrible. I've remapped my gaming pc to mirror the mac layout because the instinct is so much stronger than whats written on the keys.


I have done pretty extensive testing, but I can confirm that my Kinto app does work with your type of configuration. The RDP applications that work is mentioned in the readme.


Amazing. I can install applications (thankfully) on the RDP instance I connect to, so I shall definitely give it a whirl.


I switch very regularly and had difficulty until I begun to just swap out keyboards between macOS and Windows. That somehow ties my muscle memory for each OS much better. I pretty much have exclusive keyboards for different OS even if I use VMs on my laptop.

Plus, after much searching, there is not a good non-Apple keyboard for the Mac and the Apple keyboards aren't good for Windows. One example: the right side of of the left ⌘ key should be vertically flush with the right side of the X key. This makes it much more natural to reach for all those ⌘ shortcuts (particularly ⌘ + r and ⌘ + t, and for me I have many ⌥ hotkeys setup with BTT). On most Windows keyboards, Alt is left of Spacebar, and Alt's right side lands vertically on the middle of the X key, not on the right side.


It’s not explicitly a Mac layout, but I find the HHKB layout to be quite comfortable for both Mac and Windows. But if you don’t like the home row positioning of the ctrl key you may find it problematic


Durgod K320 works nicely with macOS. You can get replacement key tops from eBay for about $20 to get cmd/opt back etc


> there is not a good non-Apple keyboard for the Mac

I have been very happy with my successive Matias keyboards over the years.


Ok, I spoke too soon, I see a TKL Matias with ⌘ aligned with X. I may have missed this one because when I search for a replacement I usually focus on mechanical keyboards. The mechanical Matias I see is not aligned so it's not for me at least.


You're right. I never really paid attention to that, actually (my current one is a non-mechanical one, and the X is ~1mm to the left compared to the command key).


> Different people will have a preference for one layout vs the other but, in reality, the layout that feels good is what you're used to.

While it's true that a familiar system will initially feel better than an unknown alternative, this doesn't mean that some systems can't be better than others.

From my personal experience and from the comments in this thread, I think it's safe to conclude that the Mac is better here.


I’m using the two platforms but I would like the reverse: Windows shortcuts on Mac. I like the fact ctrl is further away from c and v, making it easier to type. Also Mac shortcuts in general are pretty wild (not to say insane) with 3 or 4 key to type at once... when shortcuts would gain to be shortcuted, the UX isn’t too good.


That's a feature built into macOS - you can easily change the location of your modifier keys on a mac and even if you couldn't Karabiner Elements works well and there are terminal based methods for rebinding as well.


From what I remember, I wasn't able to rebind the function (fn) key without using Karabiner. Has that changed recently?


Yep, it shows up as remappable for me on Catalina.


Welcome to my world


This is why I don't bother investing too much time learning 'shortcuts' in the first place - it's a false economy.


If you constantly have to switch between the two, I can see your point. But if you're going to be on one platform for the majority of your time, it wouldn't hurt to save a few minutes here and there by learning some shortcuts.


How long can you work on making a routine task more efficient before your spending more time than you save across 5 years.

https://xkcd.com/1205/

5 seconds 5 times a day is 12 hours

By 50 times a day you are spending 5 whole days.

Seems objectively worthwhile.


Apple’s MO all along has been lock-in to their ecosystem any way they can make it happen, whether it be through their usability, their OS, their App Store, or iTunes.

They don’t want to be interoperable because then you might realize you’re paying a huge premium for an inferior product.


I switched to Apple computers relatively recently (from mostly linux-based systems, and a little bit of Windows).

Very quickly, the Mac keyboard shortcuts have totally won me over with how much better they are. They’re actually a big part of the reason I got into the computer in the first place. It’s SO much nicer once you get used to it.

Doubly so because I use an ergonomic split keyboard, so the Mac layout means it’s much easier to do most actions without twisting my hands in weird ways. Copy in terminal? Cmd+C. Compared to Ctrl+Shift+C.

Ctrl still works for all of the standard terminal functions.

And, as a big vim user, I can use a vim emulator within my IDE. I can still get all of the IDE shortcuts with The Cmd key, but also all of the vim actions with the Ctrl key still work and don’t conflict. This is arguably the biggest win of all.


Mac keyboard shortcuts were created before Windows existed. And I don't think there was any keyboard-shortcut standard at all in X-land at the time.

It was Microsoft who chose to be different here.


It's more a case of parallel and somewhat divergent evolution.

Current PC keyboards, minus the Windows key, are nearly identical to The IBM model F that came with the IBM 3270 in 1983 [1] (the arrow keys are quite different). (Note: IBM is responsible for this, not Microsoft)

The Apple IIe also came out in 1983 [2] but had a very different layout from what Apple uses today. The "open apple" and "closed apple" (two different modifiers) were all that was on the bottom row, similar to left and right command. Control was located above, and option was missing.

Macintosh's keyboards kept evolving well after PC keyboards reached their final form, aside from the addition of the windows key in 1994 (that was microsoft, not surprisingly).

[1]https://en.wikipedia.org/wiki/Model_F_keyboard#/media/File:I...

[2]https://upload.wikimedia.org/wikipedia/commons/9/9f/Apple_II...

Edit: Just for giggles, here's the 1982 Commodore 64's keyboard:

https://upload.wikimedia.org/wikipedia/commons/e/e9/Commodor...

And the 1984 Commodore Amiga 1000's keyboard:

https://www.oldcomputr.com/wp-content/uploads/2014/07/commod...

Every platform has had it's own ideas about what keyboards should look like. In terms of current user-base, the clear winner is the IBM PC keyboard. It was more justifiable for manufacturers to go their own way in the wild and wooley early 80's while everyone was inventing their own way of doing things. Today, when the same software runs on multiple platforms, it's an annoying problem.

One more fun edit:

Here's the 1977 Apple II keyboard.

https://upload.wikimedia.org/wikipedia/commons/9/98/Apple_II...

Just imagine using a computer with the power key right next to the Shift key and where the CTRL key is today!


>They don’t want to be interoperable because then you might realize you’re paying a huge premium for an inferior product.

As someone who've been on linux for almost a decade on different notebooks and then switched to mac - no, not an inferior product in any way.


Providing an extra key for shortcuts is hardly lock-in. “Doing it better” is not lock-in.


I wish someone was making Symbolics/Space Cadet-layout keyboards that worked with modern computers. I'd put all those modifier keys to good use!

https://en.m.wikipedia.org/wiki/Space-cadet_keyboard


The real tragedy is the USB HID spec, which is weirdly extravagant (including dedicated space for golf simulators) while also being totally parsimonious with the modifier keys.


I used to get annoyed by the differences between platforms and apps. I had my Windows desktop tweaked out just so, and I knew how to set it up that way on a new install in a matter of hours. It kept me tied to Windows for longer than it should've. Then I went switched to Apple and stuck with it for many years, learning a new way. Then, just like with Windows, the rug was pulled out and I had little say in it, and I finally went to GNU, where I have some choice.

Over the years, I've been through so many platforms and apps, back and forth, so many times, all with their own conflicting shortcuts and different input modes day-to-day, that I've just accepted it as part of my "mindfulness practice" to always be aware of where and how I am before I press or click anything.

Reminds me of Altered Carbon, just a much more geeky version.


I've got this way with e.g. Typescript and Rust syntax. They're similar in a lot of ways and I write a lot of typescript in my day job and at times my hobby projects are primarily Rust. Typescript uses semicolons at the end of each field definition in an interface, while Rust uses comma seperators between each field in a struct, and each time I switch from one to the other it takes a while for my brain to remember what language I'm writing (similarly for -> vs : for return type specification). Java, which is the other language I use a lot in work is sufficiently different that I don't seem to run into this.


> Typescript uses semicolons at the end of each field definition in an interface

You can use semicolons, commas, or newlines: https://tsplay.dev/wXR7om


What made you switch from Windows to Mac? Was it the Metro UI everyone hates? Because you can get rid of that in 5 minutes and forget it ever existed after that.


I switched from Windows to Apple around 2010, after using Windows 7 for a year, and away from Apple a year or two ago, after Mountain Lion.

With Windows and Mac both, it wasn't any one thing in particular, just a "death by a thousand cuts", so to speak, of a general feeling of the platform changing shape without me having any say in it, without any bi-directional feedback, just changing at someone else's whim, and having little power over it.

Not only was it changing, but it was continuously disempowering me, with more and more things becoming controlled by the OS system, also without me having any say in it.

In the beginning, with Windows there was the seemingly additional friction of the whole drive letters and backslashes thing, and my doing most of my development in GNU-land... But then I realized that Mac GNU is almost as far away from what I develop on anyway, and I found it more comfortable to use a GNU/Linux VM to write code on anyway. I only used Mac for stuff like media playback and low-risk web browsing.

After that, it was only a matter of time.

Stallman was right, and I'm so grateful to have this wonderful platform which works reasonably the way I want it to, doesn't upgrade without my consent, and is infinitely configurable and meldable to my liking. Sure, there's a whole slew of crap being grafted onto it like systemd, Wayland, Chromium, etc... But it's all optional, and I don't have to use it. Thank you, GNU, thank you rms, thank you all the devs! I'm forever grateful to you for all your hard work.


> Mac GNU

There’s no such thing as "Mac GNU", since the userland and outermost kernel interface is of BSD lignage.

Which does a double whammy on the "GNU/Linux" pedantry, since the Linux-based system described above has only a very limited part of it that are actual GNU projects, or even GPL licensed.

That is, unless I’m mistaken and parent uses a system without Xorg, and only lives with bash, glibc, make, GCC, coreutils, and emacs. GNU/Linux is quite an ascetic system these days.


> There’s no such thing as "Mac GNU", since the userland and outermost kernel interface is of BSD lignage.

first thing I install on my macs are the gnu coreutils. bsd are so useless in comparison


You call it pedantry while writing a three-paragraph comment about why the term I used out of convenience and habit is not precisely correct. Bravo!


Haha okay thanks, gotcha, sounds like you're pretty happy with Linux :) glad it worked out for you!


> Sure, there's a whole slew of crap being grafted onto it like systemd, Wayland, Chromium, etc...

But... you don't have to use any of this

(in fact, I can't even use Wayland at all, even if I wanted to [because of Nvidia])


That,s almost word for word the next sentence in my comment.


Probably employment, that was my case.


I preferred Windows over the Mac by far, and worked as a developer on Windows for over a decade and a half. Then I had to start using Macs.

The state of the Windows UI now is a disgrace. Its design defects and lack of organization confound users of every expertise level, and its defects make every task a day-ruining ordeal.

Microsoft even took away one UI facility that always made it superior to the Mac: user-definable color schemes. WTF? I was using my own "dark mode", a charcoal color scheme, since the early '90s. Now I challenge you to find the color-scheme editor in Windows. Just as everyone finally realized that inverse color schemes are stupid, Microsoft started forcing one on you.

And it doesn't look like Microsoft has any inclination to overhaul its failed mess. But really, what motivation do they have? Who uses Windows now who doesn't have to do so for work, using some specific software?

Even Visual Studio, which I held out as the gold standard for IDEs, suffers from the same dumb defects it did 25 years ago. They were tolerable then, but now everyone else has caught up and surpassed it. Even Xcode.


Wow, I'll have to try that out.

For reference, I really like how shortcuts work in MacOS. This won't solve the lack of a standard that developers try to adhere to on other platforms.

But it's immensely annoying to have to shift between ctrl+c and ctrl+shift+c depending on whether or not you're on a terminal versus another application. As a bonus, I press command with my thumb which is both stronger than my pinkie and has very little to do other than press space normally.


With Karabiner Elements, AutoHotkey, and AutoKey you can get your favorite shortcuts on all three


I don’t get the fascination with macOS keyboard shortcuts, people always mention the copy thing that you did and it doesn’t seem like that big of a deal.


Here's why it's, objectively, the best thing:

- Super key isn't wasted on window management (a thing you basically are doing a handful of time per sessions). A nicely-placed key is used for things that you do a lot!

- No "oh wow the start menu showed up randomly" BS when you fat finger.

- Control commands "just work" everywhere! Terminal usage is of course easy, but ctrl-a/ctrl-e also work for cursor movement. You get great text maninpulation! Seriously, being able to move the cursor around in any text field is a game changer.

- Isolation of most system-level operations to that key mean that you are unlikely to hit weird conflicts. And if you fat-finger you can Super-Z out of your issue most of the time.


There's two parts to it. One, that macOS has a proscribed way for apps to compose command, ctrl, and option for shortcuts, whereas it's basically the Wild West on the other platforms. So it's just generally nice on macOS.

The terminal thing is, in the grand scheme of things, minor, but a very nice QoL. It's annoying to mode shift from ctrl as a desktop environment modifier to ctrl as a unix modifier. Especially when ctrl+c can be quite a bit more destructive than "copy".

It's not like it's impossible to adjust, but it's very nice to have command+c do the same thing, everywhere.


> It's not like it's impossible to adjust, but it's very nice to have command+c do the same thing, everywhere.

Yeah, I would sum it up as reducing the number of discrete shortcut sets to remember to the bare minimum, instead lumping as much as possible into the global set.


> One, that macOS has a proscribed way for apps

Presumably, “prescribed”; “proscribed” is essentially the opposite.


Take your pinky and touch it to the tip of every other finger on the same hand, now take your thumb and do the same. Which is easier?

This is the difference between a command based shortcuts and ctrl based shortcuts (unless you are using a non-standard ctrl key).

There is a reason why people get "emacs pinky" but no-one gets "mac thumb".


It feels a lot more ergonomic, especially if you switch between cli and gui applications a lot. It's one thing I really miss when going from my work Mac to my home Linux machine.


Who puts the table of contents in the middle of the content? Below that is where you'll find the "What does this do exactly?" section, which really should be the first thing on the page. Why does the opening section say "Seamless copy and paste with all apps and terminals"? Seems to have nothing to do with the project.

https://github.com/rbreaves/kinto/#table-of-contents


I read the “what exactly does this do?” section and still don’t know what it does. Maybe I’m just dumb, but there doesn’t seem to be any “user story” to succinctly describe what the heck this accomplishes... I just use ctrl-c on windows and cmd-c on Mac, it’s not that hard. But maybe this is way bigger than just... remapping win-c to ctrl-c? Idk? There’s no story about this utility directly in the Readme...


As a general user or a developer, I want Linux and Windows to type and work like a Mac.

As a developer I want terminals, code editors and any other commonly used dev related applications to have the same keymaps as macOS out of the box.

As a user I want to seamlessly use and/or easily switch between official Apple keyboards, 3rd party Apple keyboards, Windows keyboards, chromebook keyboards, or IBM style keyboard (w/o a Win key).


There's a link to the Table of Contents near the very top of the Readme right after the basic and short description. I prioritized the info to make it a little faster to get up and running versus the need to scroll past an ever increasingly long ToC. For the most part people shouldn't really need to read something a mile long to get it up and running.

I really need to get Kinto packaged officially into the repos for various distributions.


I'm actually pretty interested in the project and will definitely take a look into it when I next set up a Linux desktop for whatever reason. That said, I'm only interested in it because I had to spend a lot of effort to figure out exactly what it would be useful for.

> I prioritized the info to make it a little faster to get up and running versus the need to scroll past an ever increasingly long ToC. For the most part people shouldn't really need to read something a mile long to get it up and running.

This is fair! But I don't want to "get set up and running" on something I've never heard of and don't know what it's going to do. I still don't understand why it says "copy and paste with all apps and terminals"... is it because you can copy and paste with a keyboard shortcut?


> is it because you can copy and paste with a keyboard shortcut?

To be honest the genesis of Kinto came from my Dell XPS 13 Developer Edition days in 2016 - I was wanting to make Ubuntu my primary OS, but I was highly annoyed by 2 things.

1) Copying and pasting btwn the general GUI apps and the terminal had inconsistent hotkeys because of the need to hold down shift on the terminals. That has always stuck w/ me and I have never liked the need to carry or backup dotfiles around for hotkey configurations of individual apps or being forced into creating a global, always on, hotkey (aka xmodmap, setxkbmap, etc). Autokey was also not good enough & my early python based attempts at context switching was far from what it needed to be.

2) The Dell XPS 13 had a hardware level bug that would cause the kernel on either Linux or macOS to halt the system randomly. I reported it to the community & as far as I know that bug still exists to this day. Only Windows would ignore it, so I sold it and bought another macbook pro after that.

You have to understand that I decided to commit 100% to the macOS keyboard layout in 2012 - up until then I had been switching back and forth btwn Windows, macOS and Linux distros, but I wanted to get a lot more serious about programming and it felt like too much additional mental overhead to keep changing that gear, especially as I was learning new keymaps in code editors that were not consistent btwn OS's. I also committed for ergonomic reasons and the how the terminal behaved.

Back then Apple was still making fairly good decisions and updates to their OS unlike how I feel about that platform in the last few years.

Kinto is just a culmination of an itch I've had for a very long time - it's just I've been extra motivated to scratch it in the last 2-3 years and it's really come together pretty well in the last several months. It's literally the program I wish had always existed for Linux and the one I wouldn't have had to write in the first place lol.


Consistent cmd+x/c/v is great.

I've tried replicating this experience in Linux in many different ways over the years, but the best approach was to add `altwin(ctrl_alt_win)` to xkeyboard preferences together with custom `ctrl_space_toggle` for layout toggle. It achieves almost the same effect as Kinto without an additional daemon: physical Alt maps to Ctrl (Cmd in terms of Mac layout), Ctrl works as Super and Super/Win works as Alt — the closest, I think, to Apple keyboard layout. It event works fine in Wayland (sway).

Considering the terminal, remap your favorite terminal emulator to send control codes via Super+A..Z (physical Ctrl+A..Z), and unmap/remap to the required action Ctrl+A..Z (physical "Cmd"+A..Z). It works fine in Konsole and great in Alacritty. (unfortunately, I also have to add a second set of mappings for my native non-latin keyboard layout, because at toolkit-level keys are translated to latin layout, but remapping works only for a single layout).

Of course, it's only a half of the equation. Another part is Option/Compose. On Mac I used MathUnicode.keylayout. It was great, and it was a pleasure to tweak it for my needs. Xkeyboard with .XCompose (e.g. [1]) has two disadvantages: you can't use a key as both Multi key and e.g. Alt modifier simultaneously, and you don't see the composition preview. On Lenovo at least you can use `compose(prsc)` to make your left Win key an «Option-modifier» and its right PrtSc counterpart an «Option-compose». [1]: https://github.com/kragen/xcompose

Maybe one day I will buy another Mac... but shall we prefer comfort to freedom?


I was pleased to discover recently that Microsoft PowerToys are a thing again and include a Keyboard Manager utility. It's really simple to use and works flawlessly.

It's nice to use an "official" product to remap the ctrl / cmd keys on my Apple keyboard while using my Windows PC.

https://docs.microsoft.com/en-us/windows/powertoys/keyboard-...


Powertoys is pretty powerful and I have offered a few suggestions to them that I hope they will implement with their own remapping solution and last I heard they may very well be working on allowing for groups of applications to share similar key remaps.

I don't think Kinto will be switching over to leveraging PowerToys though because AutoHotKey has been able to accomplish everything it needs to do so far and frankly much more complicated remaps than what Powertoys can currently do. I did have some doubts about whether AutoHotKey would be better in all cases - as I initially ran into issues with RDP sessions, but have since worked those problems out for the most part. The problems that remain appear to be isolated to chromebooks RDPing into Windows & probably wouldn't impact 99% of the people that would use Kinto over RDP still. It's a very specific combo & most of the time it executes normally and I am the author and I dog food this project daily.

Additionally the remaps are non-permanent so there's no need to log off or back on like you would if were to use sharpkeys to do the remapping. Also it is by design - if you want to pair program with a co-worker and they don't share you're affinity for mac style hotkeys then toggling Kinto off is a couple of simple clicks of the mouse.


What a great timing. I just built a gaming PC this week to go along with my Hackintosh and you wouldn't believe the amount of times I've locked Windows since Cmd+L in macOS selects the address bar but using the same key combination on the Windows machine does Win+L for lock.


What I really want, though, is Mac-style character-entry in Linux. It's so much easier to type accented characters in Mac.


Have you tried altgr-intl layout? us-altgr-intl is a variety that exposes accented characters through AltGr-combinations. I have to type in Scandinavian, Germanic, French and Latin languages and they're all covered. As a bonus it's consistent between platforms, included by default on all distros I know of, and except the Altgr-combinations it's just like the vanilla layout.

If you're on X11 you can try out the en-us variant by

  setxkbmap -layout "us" -variant altgr-intl


It’s a good step, yes! A life saver if you often need to type accented letters or weird letters. What bugs me is the difference between Alt and AltGr, which is very annoying. Alt is much better located for this.


You will inevitably need dedicated keys (e.g. use the numbers row for this, keypad for numbers) for accented characters if you use type in an accented language actively.

For cases when you just want an accent occasionally compose key is great.

The Mac way (long-press, select) looks cool but it hardly is convenient to press and wait seconds for every accent if it's there in almost every word.


Ah, I meant the older Mac way, which is similar to some Linux approaches. Option+[key], then the character you're trying to modify.


This exists on linux (PopOS). I think it’s called compose key under GNOME settings.


not true, had this for decade, never grew on me bc it's just unintuitive. US International keymap on demand on Windows is far superior


Same, I was hoping this did that but judging by your comment I guess it doesn't


Out of scope for Kinto - although this topic has been brought up a number of times in the issue tickets and I did do some early research into the topic. I found at least 1 or 2 existing projects out there that could be a nice jumping off point to create something along these lines - but it isn't something I have the bandwidth to work on or include with Kinto.

I think it's a possible thing to do however from what I have seen for anyone that wants to put in the effort.


My biggest annoyance with linux is that for an OS where you supposedly can adjust and modify everything. Changing the keyboard shortcuts (even with kinto) is absolutely impossible. Not all programs work... things like CMD+arrow to move the cursor to end/start of line needs custom scripts. Its a mess.

Surly this could be better?


Custom scripts? No it doesn’t, it takes 1 Python script (Kinto) & it ought to cover pretty much every scenario you throw at it. I’m the author of Kinto & I feel pretty certain that you haven’t actually tried it based on what you just wrote because the Cmd+arrow stuff you mention is completely covered.


I use this on my Manjaro KDE work machine and it has been a life saver since switching from Mac after 10+ years.

It works shockingly well.

Only annoyance is that applications are not necessarily aware of the new mac layout so if you're using an unfamiliar application looking up the keyboard shortcuts won't map exactly to what you need to press.


Everyone is talking about keyboard shortcut but just 2 months old mac user (due work) the biggest "fuck you" feature I encountered in Mac was key-repetition.

In PC and Linux, if you push down any letter key and keep it pushed, it repeat the key with a certain speed. In mac you can't by default do this. You have to use the terminal and go to a system file, change a variable and reboot the mac. You can, in system preferences change "speed" and "delay" of this behavior but by default this only applies to the space/backspace/arrow key. As a vim user this was probably the most annoying thing I encountered in years.

Something so fundamental being different was like being told "yea, at mac land gravity is going upward. Better get used to it!". I sent a request to change my laptop to dual boot PC/Linux the next day


Huh. I am also a "vim user", and I somehow never noticed this after using macOS for now over a decade. I guess I am confused by your comment, though, as the reason I seem to have never noticed is directly because I am a "vim user"... Terminal and iTerm both do key repeat (and in fact when I first tested just now I was like "I mean, seems to work?" and then I decided "oh, I guess I should check apps other than vim"... but why would anyone use software other than vim ;P).


There's a risk that I'm mixing things up at the moment, but I do remember that the "hjkl" navigation did not work properly on VS code with VIM extension. Since I've already switched this behavior now Terminal & iTerm have adapted to it.

For a while I couldn't put my finger at why this was, and then I realized that scrolling up/down is essentially disabled without key repetition for vim. It also seems to act slightly funky between apps for the "scroll speed/delay" sensitivity. It works fine in vim now, but somehow it's very sensitive on slacks app and browser. (but not VS code)

I guess I'm just used to keep my hand mostly on keyboard, and would like to use mouse/touchpad as little as possible.


I mean, VS Code != vim, so that explains the problem.


I would have done the same thing these days.

Although when I first transitioned to Macs I was not a heavy terminal user like I am now - always been into dev work, mostly web development back then. And I do recall changing that setting via the terminal, but I was never annoyed by it though as I tended to do far less customization to the OS than Windows or Linux.

And this is awesome to be replying to Saurik! Thank you so much for the work you've done in the iOS jailbreaking community.


Look, every OS has to choose its defaults. They give you the option to change it through the defaults command:

defaults write -g ApplePressAndHoldEnabled -bool false

and you don't need to restart your computer. Every OS is going to do things their own way — but as long as you can easily change it, I don't see the point in complaining.

Command taken from https://osxdaily.com/2011/08/04/enable-key-repeat-mac-os-x-l... after about a minute of searching.


>Look, every OS has to choose its defaults. They give you the option to change it through the defaults command

Yes totally, now let's use the same argument to change next mac release keyboard to Dvorak or Colemak layout. Look, you just need to go and change it in language setting! (to its credit both options, Dvorak & Colemak keyboard exist in Mac by default) The reason Mac doesn't do this, is ofc because strong majority of people are used to the QWERTY layout.

And I know how to change it, it was the first thing I did. and No you did need to restart apps/computer. (it even says that in your link!)

My point is that keyboard shortcut is a muscle memory thing, no point in lamenting over it too much if one shortcut exist in the next system, albeit another place, if it's same behavior (looking at you Alt-Tab). But how the input work is another matter; makes no sense to me to remove the steering wheel of a car and replace it with a flight stick, especially when there's already cross-platform apps that make certain strong assumptions about the users platform. (keyboard, mouse, certain keys such as copy-paste is reserved, etc)


I am very confused. I am using a Mac for work and I am using Windows at home. And after reading the readme, I am still not sure what this thing does. Can someone explain?


How do hotkeys work on a mac? That's how they will work on everything else with Kinto. If you haven't used a mac then it will be more difficult to understand and explain because it does a lot more than just swapping a few keys around - but that is part of it.


On a slightly related note: does anyone else map caps lock to control (and vice-versa)?

I’ve never really understood why caps lock gets a huge key in the middle of the keyboard, while control gets a regular-sized key at the bottom. Generally speaking, caps lock is used much less than control.


At home (Linux with a PC keyboard), I just map capslock to control, and don't map anything to capslock: I have to type in all caps so little that it doesn't justify a key of its own, and holding down the shift key for several characters once in a while isn't much hardship.

At work (MacBook Pro), things get a little hinkier:

- I map capslock to command

- in iTerm2 only, I swap command and control.

This means I can use the honking big key to the left for my cutting/pasting/window-switching needs when not in the terminal, and still use my muscle memory for Vim and the command line when I am in the terminal.

The (not insignificant) downside is having to remember to use the physical control key (rather than capslock or physical command) for copying/pasting/window-switching when in the terminal: but I can live with that.

I also had to disable iTerm2's default command-W shortcut for closing tabs, as I kept hitting it by accident when trying to ^W on the command-line.

Separate but still (just) related point: I've had to train myself to use ^[ for Escape in the terminal (especially in Vim), as the escape key on the MacBook Pro's touchbar is next to useless. I guess could have just mapped capslock to Escape, but having that big fat control/command key is just too useful.


I map it to escape. I find using the caps lock key as a modifier to be too awkward, I prefer the position of the control key for that. Escape being all the way up at the top left is much more of an inconvenience. I don’t remap the original escape key to caps lock, though, I have xkb set to trigger caps lock by pressing both shift keys.


As a Vim user, Esc is quite common, but I still end up straining my hand more when reaching for control. Remapping control has helped me a lot with that.

If strain wasn’t an issue, Esc would be my next choice.


or just put both esc and ctrl to caps lock, which got common in the kb community for a few years


Yes. As a long time Emacs user I do that routinely on _every_ machine I use.

For those that don't know, there are a handful of control key sequences that perform basic cursor movements that are the same in Emacs, bash, zsh, and every text pane in Mac apps. Using caps lock as a control key makes this very pleasant.

I am unlikely to give up this habit since I despise moving my hands from the home row to use arrow keys -- for me, this is the main pain point when switching between Windows and Mac several times per day.


Capslock is dual-role for me, tap for Enter, hold for acting like a custom modifier. Shift is tap for escape, hold for normal shift, tilde is backspace, my pinky gets busy. The best Ctrl replacement is spacebar, the only windows program that does it flawlessy is touchcursor


i had space when pressed remapped with ahk but couldn't get it to work reliably typing above 80wpm, how is it with touch cursor?


I can type 100+ wpm reliably with touch cursor. AHK is not recommended for space bar dual role functionality for the reasons you mentioned.


Ok good to know, I just installed it together with AHK and somehow they must interfere which each other even if I suspended or paused AHK's script.

TouchCursor sometimes is deactive and then after a few seconds again it works again...


Kinto supports remapping Capslock to Ctrl or Esc, it is in the Tweaks menu, at least on Linux. I have not implemented the Tweaks menu for Windows just yet, besides that the 2 versions are pretty much at parity with each other.


I map it to alt+tab. One press and it call most recent window, another press and it switch back.

I mean, you can press alt+tab quickly. But I like the simplicity of one button.


It's sufficiently common that one of my keyboards has a built-in DIP switch to enable that


Every few years I try linux and hit this problem and each time the “solution” is to modify my behavior to ctrl+shift+c.


lol - or to do a kiss remapping that involves xmodmap or setxkbmap that still doesn't solve the problem either and then you are expected to individually remap whatever terminal you use per the terminal app preference settings or dot files that you ought to keep with you everywhere you go.


I'm a fan of standup comics and love when comics in podcasts (like Rogan and whatnot) start ranting about "clean comedy", which means "not using the bad words".

But: every comment in this thread that uses a bad word is at best misguided, while comments without bad words are informative and keep the general mood in check.

I know people tend to bypass word filters by occluding letters ("B*rcelona") while retaining meaning; but maybe a word filter would cut dang's work by $A_LOT %.


Shameless plug: wincycle makes win/cmd+backtick to cycle between Windows of the same app work. This and iMessage were the two things I missed leaving macOS for Windows and so I solved them both for myself :)

https://neosmart.net/blog/2017/easy-window-switcher/


Great! I just search for a way to do this in Autohotkey a couple of months ago(not going very well, of course) Thanks for shameless plug! :)


How did you solve iMessage?


I didn't link to that because it's unfortunately not something that I can share a download to like I could with wincycle: https://neosmart.net/blog/2018/imessage-for-windows/


I solved it with AirMessage by SparkDev - runs directly on my iPhone. There air similarly named apps and macOS based implementations as well that would work, but I prefer keeping it on my phone instead.

As far as the Alt- switching goes.. that was honestly one of the more difficult things to solve for both Linux and Windows. For Linux because of the sheer number of DEs (a few absolutely hated it to allow certain remapping, had to send in patches for one of the DEs too!) and Windows because it initially appeared that the most simple remapping methods would clobber each other - but after working with Autohotkey enough it was apparent that it was indeed up to the task & I also kicked Sharpkeys registry hacking off to the side and no longer needed users to log off and back on. (Also makes pair programming a bit easier too.)


Does this do more than remap copy/paste keys? Nothing wrong with just doing that, but I was a bit confused from the leading examples.

Needless addition that nobody asked for: Having recently switched to Ubuntu from MacOS as my primary development environment, I very much felt the pain of losing many keyboard shortcuts I had grown accustomed to (amongst other subtle things, like the really good default PDF viewer in MacOS, and yeah yeah yeah I know there are Linux alternatives). I ended up installing a jetbrains marketplace plugin that as-best-as-possible mimics the MacOS bindings and then just re-learned the rest and.. it wasn't TOO bad, probably a week or so of feeling like a limb was missing.


Jetbrains is supported by Kinto & the remap is better than their macOS remap layout. Leave it on their default layout & Kinto will remap it 100% to what you’d expect.

The hotkeys in the drop downs will not always line up - but that’s the price for this implementation.


I have to use a Mac, a Linux, and a windows laptop. Three different keyboards. Then I have a couple of different external keyboards at the office, a couple at home, and a couple at my partners where I’m spending weekends. I basically have three modifier keys, A,B,C (that I don’t understand the rational behind - but thanks, I learnt a few things from this thread) that I have to try -in turn - whenever I want to use a shortcut (not exactly a shortcut any more). There isn’t a day goes by that I don’t want to burn it all down and start from scratch building a new keyboard/OS. Or run vim on the metal and use that as the OS, or switch to voice control, or mind control, or anything!


I just switched back to Windows at work for the first time in like... almost 20 years. I'm dying without readline-style controls. If this can offer those, I'm going to jump for joy. I already have the Magic Keyboard Utilities to let me use my mac keyboard as a Windows keyboard and put things in sensical places. (Left Fn & Ctrl -> Ctrl, Left Option -> Meta, Left Command -> Alt, Right Command -> Function modifier, Right Option -> Windows Key) But my god no readline (^a / ^e etc) and I'm just losing my mind.


What you call readline controls I call wordwise - but yes that is indeed supported by Kinto. You will want to undo any of your custom remaps on modifier keys before you install Kinto as it will not be aware of your own remapping attempts. Going forward you would also be best served by updating new keymaps in ~/.kinto/kinto.py if you can do so.

I do not yet have a method though to help you easily keep your changes when upgrading to newer Kinto versions. I will try to add a git like merging ability to the updates later on though, so custom local changes will be preserved.


I got ^a and ^e with PowerToys' Keyboard Manager with the remap setup as https://imgur.com/a/HXTxPSU. Works well with Windows Terminal + WSL.


Nope, guess not.


Can you elaborate what you mean by readline style controls? Looked it up but that didn't help.


"GNU readline" is the name of the library that handles interactive shell. It has support for emacs and vim keyboard shortcuts.

https://en.wikipedia.org/wiki/GNU_Readline


On macOS, Ctrl+a (^a) goes to the beginning of the line, Ctrl-e (^e) goes to the end. On Windows you can do [Home] and [End] respectively iirc.

I think "readline-style controls" refers to a more letter-based approach, instead of special keys? i.e. ^a, ^e, ^w...


Ah I see. I didn't know that. Usually I use option arrow keys or command arrow keys for that. Hopefully this supports those.


This seems like a collection of shortcut remappings instead of a general window key to ctrl remap. That means that for example if Ctrl+p is not remapped, you can't use the win key.

I have an ahk script that's have a more general approach which maps window key to ctrl. It also remap the text navigation and mac style window switching.

https://github.com/stevenguh/autohotkey-windows-mac-keyboard


It’s not a “collection” of remappings, it is in fact a general modifier key swap w/ dynamic modifier key swapping for a variety of Terminal apps, layered w/ an additional set or collection of remaps for code editors geared towards developers as well.

I’m sure your project is good but I think Kinto is better fleshed out than you’d assume.

Also your Windows key, in Kinto, tends to land on the physical Ctrl key during a normal GUI app or non-terminal. Ctrl+P is otherwise on your Cmd key location.. as are all primary modifier combos tend to be.

It does not interfere with or lack any particular remapping that I am aware of.


I use a osx keyboard on my linux laptop that act as desktop, the only thing annoying is the switch between tabs (Super key on OSX, alt key on Linux)

The copy and paste in terminal was annoying at first, and used to remap it to super-c super-v but then I embraced it and doesn't seem to bother the context switch when I am back on OSX.

The only difference for me between linux and osx is the fonts.. not sure why but alas i start to get use to to the linux fonts, i used to really be bugged about it before.


This also frustrated me when I was using OS X and Linux in parallel when I was using an identical Apple keyboard on both - really messes with your muscle memory. As long as I did not use an external keyboard on my MacBook I was fine.

It seems my muscle memory is application dependent, i.e. I never hit ^C when I intend to copy in a terminal. On the other hand I might hit Ctrl+Shift+C on browsers once in a while if I am switching context a lot... ;)

Unfortunately this requires X11 anyway :(


I’m hijacking the thread, but does anyone know if a Linux utility that replicates OS X’s ability to enter special characters with option? For instance on a QWERTY keyboard, you can type option-backtick followed by `e` and it will combine it into `è`. There are several other combinations I forget to enter other Unicode chars that don’t have a key and that feature works systemwide. It’s the one thing I miss on Linux from OS X.


You're probably looking for the compose key: https://help.gnome.org/users/gnome-help/stable/tips-specialc...


You need to set your keyboard layout. Assuming you have some desktop environment, look in its keyboard settings for “English (Macintosh)”. You may also have to configure an AltGraph key (== Option); the default is likely right Alt, since that's what Windows does.


Is it useful for anything besides copy-pasting in the terminal? Do I need it if I'm okay with Ctrl+Shift+C?


Kinto is also a "minimalist JSON storage service with synchronisation and sharing abilities" made by Mozilla

https://docs.kinto-storage.org/en/stable/overview.html


I might need this when we finally go back to the office and I have to switch from the MBP w/ Magic Keyboard at home to my Ubuntu Dell workstation

now if I could only override some of the application shortcuts that can't be changed (like ctrl-w closing a tab or window)


Although I do prefer the cmd setup, one thing to note is that the physical button on a Mac keyboard is 1.2-1.5x bigger. This makes it easier to press and less likely to miss.

On windows with a windows keyboard, the lcontrol button is easier to press because it is in the corner.


Can someone comment on how this works with GNOME, which uses the super key to show the window overview/launcher? Does that just get remapped to control, or does it do something special to keep it on the super key while remapping super+other key combos?


Super key mapping is removed during the install, if it is bound to anything, and ought to be the only system level key that is undone to prevent triggering of any menus. If you uninstall Kinto then it restores the keybinding, beyond that all remappings are non-permanent to the system level OS/distro.


I use this daily with linux/i3 and it has been very pleasant! Installed it and it basically does exactly what you expect. Only issue was some conflicting default i3 shortcuts that conflicted, but were easy enough to remap


Moved to Win after a decade on a Mac, this doesn't make sense, most Mac keys are not much better and you are just used to it, rather install AHK, something which no other platform has, and remap keys in a sane way.


Using control for the most common operations is much more straining for the hand. It is especially noticeable by heavy keyboard users such as software developers. Using your thumb to hit CMD (or Alt on a Win keyboard), is much less straining.


i haven't used the original ctrl keys for a decade, nowadays everyone puts control on caps, even on a mac haha. then your left pinky is closer to ctrl + faster than your left thumb to command and if you want you beloved spotlight just install ms powertoys which has powerrun, it's the same, bind to alt-space


Interesting use case. I have ESC bound to Caps Lock. (for Vim/Emacs keybinds)


Kinto uses AHK on Windows already - it just does an insane level of remapping for you out of the box.

The Author


I do like the project, however after mapping caps-lock to ctrl (or command on MacOS) the cognitive load from switching platforms has been decreased significantly.


How are Mac shortcuts different from Linux and Windows?


Let me write you a story thousands of lines long. I'll call it Kinto :P.

Windows/Linux - Primary, Tertiary, Secondary, Spacebar

Mac - Tertiary, Secondary, Primary, Spacebar

A thumb driven Primary modifier is nice, but beyond that hotkeys trip over each other less during terminal usage. The arrow keys w/ modifiers and emac style binding are highly useful for programmers and terminal users as well.


BTW how do you use keyboard to select terminal text in the first place? Also, is there a way to use clipboard in text mode consoles (without X)?


Maybe a n00b question, but will this give me Emacs keybindings in text fields on KDE? If so, I might be able to tolerate switching to Linux now.


Yes, but if you find any hotkey not working just let me know in an issue ticket and I will get it added. I also accept PRs.


I'm glad to see this here. I recently switched from mac to linux and Kinto makes it almost seamless.


i've always lamented the incompleteness of mac keyboard shortcuts compared to windows, but it's been a long time since i've used windows, so it's hard for me to remember specifics. but i do remember that multi-key shortcuts generally made more sense in windows. and you could alt-tab easily between windows of different applications, not just applications or just tabs/windows of the same application.


Although I too have lost my muscle memory, not having used Windows as my primary O/S in a while, one thing I miss is the ability to traverse through menus with a series of keystrokes; e.g., Alt-F, then p to print, as opposed to Ctrl-P. This came in handy for menu items with an obscure shortcut, or no shortcut at all.

Similarly, I would preface some programs in the Start menu with a unique number; e.g., Win, P, 1 opened File Explorer; Win, P, 2 opened the Command Prompt, etc. With the Windows 10 start menu, I just start typing, but it sometimes exhibits weird behavior, where it finds what I want after one or two characters, then changes to the wrong thing after I type another (correct) character.

I generally prefer the Cmd-Tab / Cmd-Tilde split on macOS to the Alt-Tab on Windows. However, after all these years, I still can't always predict which window is next--will I go back to the window I was just on, or keep going forward to another one?


You can access the menu by keyboard with Ctrl-F2, but it isn't exactly what you want; that said, a nifty property of macOS is that you can modify the keyboard shortcuts if any app--including adding shortcuts for things that don't have one--in the Keyboard Shortcuts settings panel under App Shortcuts (it works by doing a string match on the menu item name).


I will only respect this project if it completely breaks alt+tab on windows and linux to make it useless like OSX, where you cannot go to a specific terminal window. ha!

sarcasm aside, I wish there was something that was the exact opposite. I tried to map cltr+c/v on OSX but it doesn't work on some applications, like firefox. And using Switch application that fixes alt+tab to all windows (not programs) for some reason the default shortcut (Option-tab) is stolen on iterm2 which is exactly where I wanted it to work.

man, having to use OSX at the office is like having to use Windows with Outlook in the past. So silly.


Hear, hear. Alt-Tab is abysmal on Mac. I have no idea why people keep going on about Ctrl-C in the terminal, as if we haven't had terminals on both Windows and UNIX that copy-on-select for 20+ years. Broken Alt-Tab is far bigger impediment to my workflow.

I guess you have tried Karabiner-Elements[0] to help remap the keyboard? It's infuriating that it doesn't work properly in all the apps. Especially the browsers all seem to map their own keyboard shortcuts or hijack keys. If you use IntelliJ then that's a whole nother level of pain to try to map properly. I don't think I have ever succeeded in making arrow key movement inside text fields work consistently across all applications on a Mac.

Another app I think is a must is the BetterSnapTool[1]. It's the only app I've found that does a reasonable job of snapping like Windows. There are dozens of other ones, but none of them work quite properly. BetterSnapTool doesn't either, for example you can't snap a window from a half to a quarter and back up to a half again, then restore it back to the original size before you snapped. But you can snap it to half, full and original size. Most of the other tools on Mac don't remember the original size.

I also like uBar[2] to get rid of the dock and replace it with a more useful task bar. It's not as good as the one on Windows 10, but if you're forced to use a Mac for work then pretty much anything helps.

[0] https://karabiner-elements.pqrs.org/

[1] https://www.folivora.ai/bettersnaptool/

[2] https://brawersoftware.com/products/ubar



There are DOZEN of those apps. The one i use/contribute is https://github.com/numist/Switch

OSX is like using windows in the 90s. You need a dozen weird apps for basic stuff.

iterm2 still steal Option-tab on all of them.

and replacing command-tab breaks in other apps.

There's no solution other than to suffer it.


My theory is that Apple purposefully switched alt and control around to create a sort of usability trap; everytime a mac-user ever touches a different brand pc, their experience is filled with frustrations, making sure they'll never switch away. Of course the fact that every mac since needs an apple-certified keyboard is 'just a happy (very profitable) coincidence' for apple.

Disguising this move under the banner of 'be different'™, mac-lackeys immediately went to work spreading the gospel of 'it's better because it's closer together'.

Ultimately there already was an international standard, there is value in keeping practices standard, and Apple was the one who broke the standard. It should not be celebrated, it should be ridiculed as the shameless cash-grab trap that it is.

Instead of making an app for every platform out there that makes that platform more 'mac-like', there should be an app for mac, that makes that platform behave like the established standards.

OFC Apple don't allow such modifications, because what they say goes, and what they do, apple-fanboys will like anyway.


If you think OSX is user hostile because of intentional vendor-specific keyboard keys, note that Windows computers have a “Windows” key. Is that an international standard?

I think most commercial keyboards (just about all laptops) are terrible and If there really are international keyboard standards, they’re not great design. I personally think all keyboard layouts are ultimately wrong because the underused caps lock is in prime real estate and should be replaced by the CTRL key (check out the ADM-3). As for Macs requiring a certified keyboard, that’s just plain wrong.

The ultimate gripes come down to key placement and window manager shortcuts, both of which can be modified on either OS.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: