This repo contains two keyboard layouts, "Czech BB" and "English BB", created with Ukelele.
-
Copy the keyboard layouts to
/Library/Keyboard Layouts
(not~/Library/Keyboard Layouts
since that would not allow them on the login screen and in password dialogs):sudo cp -r Czech\ BB.bundle /Library/Keyboard\ Layouts sudo cp -r English\ BB.bundle /Library/Keyboard\ Layouts
-
Add as Input Sources.
- Moves
`
(backtick) to the top left corner. The overwritten§
symbol can be written with Alt. - Moves
\
and|
to the key next to the left Shift (where backtick originally was).\
and|
are still at their original location next to Enter.- ❗️
Cmd-\
shortcut doesn't work in in VSCode or in Google Sheets, see this Ukelele support thread and its conclusion. It only works with the original key (next to Enter).
U.S. | English BB | |
---|---|---|
⌥ | ||
⇧ |
Note: this layout could also be built from 'British – PC', and you can find an attempt called 'English BB 2' in the repo history. The only change that needed to be done is to fix some Shift combinations: swap
@
and"
and restore#
toShift+3
.
The general idea is to bring it closer to English U.S., incl. the two keys left to the backspace that are often used for zooming etc. This creates a "problem" for Czech accents, e.g., mód
is now written as m Alt-<key next to backspace> o d
.
Details:
- Moves
`
to the top left corner. The overwritten<
is near the right Shift (with Shift). - Puts
/
to bottom right corner where-
normally is. Many apps useCmd-/
. - Moves
-
and=
to their EN locations. This makes zooming in Chrome etc. work.- The new location of
=
overwrites a "dead key comma", e.g. for writingmód
. This now works with an Alt key (Alt-=
). - Accent for
ť
is at its original Czech location, i.e.,Shift-<key next to backspace>
, but it also works with Alt.
- The new location of
- Also moves
Alt--
(n-dash) so that it's at the same location as on the U.S. keyboard. This rewrites°
dead key for which there's no new location (ů
is still available at its normal location which is good enough).
Czech QWERTY | Czech BB | |
---|---|---|
⌥ | ||
⇧ |
According to Chrome's menu and documentation, it zooms via Cmd-+
. However, that's not entirely true – on an U.S. keyboard, the key between backspace and -
is not +
but =
so actually, Cmd-=
is being pressed. Chrome somehow makes this work but it's undocumented (at least I couldn't find anything) and it doesn't work for the Czech BB layout even if the key next to backspace is the same =
as on the U.S. layout.
(Maybe if I also re-mapped +
to be above =
as on US keyboard, that would work but I didn't try that.)
A way to fix this is to create a custom shortcut via system Keyboard preferences:
(Under investigation.)
U.S. keyboard is the same whether I have or haven't Cmd pressed:
However, Czech keyboard changes:
vs.
The goal is to modify Czech BB so that when Cmd is pressed, it looks exactly like U.S. It could solve a couple of issues with Chrome zoom, GDocs shortcuts and similar.
Get Ukelele: brew cask install ukelele
. Then:
- Open an existing bundle or create a new one via File > New From Current Input Source.
- Double-click the keyboard layout.
- On the virtual keyboard, double-click a key you want to remap and enter a character.
- Give it a name via Set Keyboard Name and Script... (this is a different thing than a filename!)
- Install the keyboard and test it.
- Update this README – screenshots and changelog.
Initial work on "U.S. - PC".
- Move
`
(backtick) to the top left corner.- The overwritten
§
symbol can be written with Alt.
- The overwritten
- Move
\
and|
to the key next to the left Shift (where backtick originally was).- The keys are still at their original location next to Enter.
Added "Czech - BB" layout.
- Move
`
to the top left corner. The overwritten<
is near the right Shift. - Put
/
to bottom right corner where-
normally is. Many apps useCmd-/
. - Move
-
and=
to their EN locations. This makes e.g. zooming in Chrome work. - Move the dead key comma (e.g. for writing
mód
) to Alt+= (next to backspace)- The new location of
=
overwrites a "dead key comma", e.g. for writingmód
. This now works with anAlt
key (Alt-=
). - Accent for
ť
is at its original Czech location, i.e., Shift+, but it also works withAlt
.
- The new location of
- Also move
Alt--
(n-dash) so that it's on the same key. This rewrites°
dead key for which I didn't bother to find a new location yet (ů
is still on its normal location).
- Create a Git repo, deprecate the original Google Drive folder.
- Try to make the
Cmd-\
keyboard shortcut work.- It's not possible, a note with explanation has been added above.
- Cleanup and rename the keyboards to 'Czech BB' and 'English BB'.
- Heavily update README.
Various notes gathered as I was working on the layouts.
Each dead key has a "state" (which is just its name) and a terminator – a character that is either added to an applicable character (like á
) or written before, like '1
(numbers can't have accents). The terminator is also committed to the text when a Spacebar is pressed after it.
For Czech BB keyboard, which is a copy of Czech QWERTY, the dead keys are there but they need to be re-mapped. The following cheat sheet is useful for that (the state name / number is visible after double-clicking the key, for example, for ´
, Ukelele tells Currently, it goes to state "1", which has terminator "'"):
- 1:
´
(acute) – next to backspace - 2:
¨
(umlaut) – next to enter - 3:
ˇ
(caron) –Shift+'
- 4:
^
(circumflex) –Alt+'
- 5:
˚
(overing) –Alt+-
(two keys next to backspace)
There are also some other ones with Alt+Shift but I never used them.
Now, for example, to move an acute to Alt+<key next to backspace>
, it's important to honor the original state / name. So for example, in Ukelele:
- Press the modified (Alt) and double click the key
- On the Change State tab, enter 1.
- Click OK. The key should automatically update to acute (remember that the dead key definition already exists, we're only assigning it to a specific key and a modifier) and when you open the dialog again, it should say Currently, it goes to state "1", which has terminator "'".
U.S. | British - PC | |
---|---|---|
⌥ | ||
⇧ |