Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
Signed-off-by: Sergey Udaltsov <sergey.udaltsov@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
In the August 2023 revision of the DIN 2137-1 standard,
some changes to the keyboard layers were made.
Most importantly, the third layer of the w, t, and i
keys was switched around. That was already accounted for
in a previous commit.
The other changes were all in "group 2" of the keyboard.
Those changes are included in this commit.
A summary of the changes in the standard is freely available at
<https://www.dinmedia.de/de/norm/din-2137-1/353663175>, in German,
under "Änderungsvermerk". Relevant for this commit are points f),
g), h), and i).
|
|
This is a partial layout that is meant to augment an existing layout.
The group name should not be set in `apl(level3)`, otherwise it would
override the original layout name.
|
|
New option `non-latin-layouts-list` (off by default), to produce 2 CSV
files (one per main rules set):
- `non-latin-layouts-base.csv`
- `non-latin-layouts-evdev.csv`
These files are needed by e.g. the Debian installer to automatically
add a US layout in case the selected layout cannot output required
Latin characters.
Activate this option in our CI.
|
|
This produces a CSV file with (non-)Latin layouts by analyzing all the
keysyms of each layout and check for required ones. This is more reliable
than checking the language tags of layouts, because a language may have
multiple scripts and the language tags may be incorrect or incomplete.
Method:
1. Get layouts via `xkbregistry`.
2. For each layout, check if it has all the basic Latin letters.
3. Export the filtered layouts as CSV.
Note that some layouts are “almost” Latin as they miss only a few
letters. Such layouts are considered non-Latin but raise a warning.
|
|
Add various useful functions, in particular `ForeignKeymap.get_keys_levels`
to iterate over all key, group, levels and get the corresponding keysyms.
This provides a way to analyze available keysyms in a layout. We can
then e.g. determine if a layout is “Latin” by checking it can produce
all the basic letters of the Latin alphabet.
|
|
Added `caps:return` to make the `Caps Lock` key an additional `Return` key.
|
|
These values are hardcoded in various places, e.g.:
- libxkbcommon
- xf86-input-evdev
- xf86-input-libinput
Added a warning to not modify them without synchronizing the
corresponding projects.
|
|
Previous commits attempted to use bugbot to handle stale issues and MRs,
but bugbot only reacts on labels presence, it does not add them based on
some conditions.
The workflow is:
- An issue or MR is tagged automatically as stale after some period of
inactivity, unless it has the label “skip: stale triage”.
- An issue or MR can be tagged manually as stale if it seems relevant
to the maintainers. This is useful because the inactivity period in
the previous section is quite long.
- A tagged stale issue or MR is closed automatically.
- When an issue or MR closed by the previous rules is re-opened, its
labels related to its stale status are removed.
This commit adds a pipeline dedicated to triage, that is run only when
scheduled. The previous jobs are modified to run only if the pipeline is
*not* scheduled.
|
|
Commit originally by Simon Ser in wayland/wayland-protocols!305.
Currently our CI setup has a downside: for each push on a merge
request, two pipelines are triggered. The first is triggered in
the context of the forked repository, and the second is triggered
in the context of the MR in the parent repository.
Replace the uorkflow rules with the ones in the official docs [1],
so that a branch pipeline isn't triggered when a MR exists for that
branch.
[1]: https://docs.gitlab.com/ee/ci/yaml/workflow.html#switch-between-branch-pipelines-and-merge-request-pipelines
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/741>
|
|
|
|
|
|
|
|
|
|
|
|
According to our doc and practices, symbols should be defined only for
the first group. There are still a few layouts defining simultaneously
two groups. One of them is `nec_vndr/jp`, which has also a dedicated
rule. This commit fixes only this layout in preparation of a refactor
for `inet` rules.
- Split `nec_vndr/jp(pc98)` into two sections: `pc98` and `jp`, and
make the latter the default section.
- Fix the rules to ensure using this layout with the model `pc98` will
load *explicitly* 2 layouts, as this is the case for other models.
- Make the rules match `jp` layout, not `nec_vndr/jp`. No other rule
used the vendor path to match a layout.
The remaining layouts with 2 groups should also be fixed someday.
|
|
This option swaps right `Alt` with right `Win`. Symbols are already
there, so this commit just adds the corresponding rules via the registry.
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/731>
|
|
Since c4f76b584fe10bc2037966a70efad9bc5b682a4a we merge rule sets
with and without explicit merge modes (i.e. *explicit* merge mode
are section starting with either `+` or `|`). This is wrong, as
these are not supposed to be matched at in the same rule set.
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/729>
|
|
The previous update c4f76b584fe10bc2037966a70efad9bc5b682a4a removed
the initialization of a dictionary in the `merge` function, leading to
duplicates, namely the files *not* starting with a rule header.
While we introduced `defaultdict` previously to avoid initializing lists
manually, we still need to initialize the `dict` in order to keep it in
sync with `section_names`.
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/729>
|
|
Diktor is an ergonomic alternative to the JCUKEN layout (see:
`ru(winkeys)`), adapting Dvorak design principles for Russian.
Although it is popular, there is no track of the original author.
The original implementation targeted Windows. The closest to an
“official” web page is: https://olegp.name/software/diktor-keyboard-layout/.
|
|
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/728>
|
|
Layout compatibility rules are broken in configurations with 2 or more
layouts, e.g.:
- Works:
- config: `--layout fi --variant basic`
- symbols: `pc+fi(classic)+inet(evdev)`.
`fi(basic)` is correctly remapped to `fi(classic)`.
- Does not work:
- config `--layout fi,us --variant basic,`
- symbols: `pc+fi(basic)+us:2+inet(evdev)`.
`fi(basic)` is not remapped and leads to an include error.
- Does not work:
- config `--layout us,fi --variant ,basic`
- symbols: `pc+us:fi(basic):2+fi(classic):2+inet(evdev)`.
`fi(basic)` is not remapped and leads to an include error.
I initially thought merging the following rules sets to fix it:
1. `model layout[n] = symbols`
2. `model layout[n] variant[n] = symbols`
but it does not work: `*` wildcard does *not* match empty values.
There is another issue: using a variant will check and match *both*
rules sets. In the first rule set, compat rules are only for deleted
symbols files (e.g. `dev`). But when the symbols file exists, we end
up with an invalid include statement (see `fi(basic)` examples above).
This is because the first rules set has a catch-all rule that will
always match, while we want it to match only in the second rules set.
Unfortunately such rules cannot be expressed in rules files. So the
solution is to append generated compatibility sections in the
corresponding symbols files and remove the corresponding current rules.
Section name clashes are checked and will raise an error.
E.g.: currently we append the following to `symbols/de`:
partial xkb_symbols "lld" {
include "it(lldde)"
};
If we already had a section named lld, this would produce the following
error:
Cannot add compatibility section in symbols/de: "lld" already exists
Also:
- Move symbols handling in meson into the symbols subfolder.
- Sort compat layout rules.
- We ensure that rules with variant take priority over rules without one.
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/728>
|
|
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/728>
|
|
- Merge section with same header, independently of the whitespaces.
- Improve Python (typing)
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/728>
|
|
|
|
Switched the Alt-Gr characters on AE11 and AE12 as it is more intuitive to have ≠ and ± next to = and +.
Previous mapping:
_ ± + ÷
- ≠ = ×
Current mapping:
_ ÷ + ±
- × = ≠
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/722>
|
|
Make `Caps Lock` an additional `Ctrl` and `Shift + Caps Lock` the
regular `Caps Lock`.
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/673>
|
|
Use Caps Lock key as additional 3rd lever chooser, Ctrl + Caps Lock for
original Caps Lock behaviour.
The 2023 DIN standard for German keyboards recommends it as an option:
- https://de.wikipedia.org/wiki/E1_(Tastaturbelegung)#Feststelltaste/Umschaltsperre
- https://en.wikipedia.org/wiki/Caps_Lock#Abolition
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/687>
|
|
While adopting the `neo_base/neo` approach, each of the following
variants are included in only one other variant, which is useless.
- Merge `adnw_base` into `adnw`
- Merge `bone_eszett_home_base` into `bone_eszett_home`
- Merge `koy_base` into `koy`
- Merge `neo_qwerty_base` into `neo_qwerty`
|
|
These have no clear use and look superfluous.
|
|
Previously the compatibility rules where incorrect:
- Lines with a comment starting by “//” where parsed incorrectly,
because comments where in fact not supported.
- `variantsMapping.lst` was added to rules without variant.
This resulted in incorrect rules with MLVO = (model, layout), e.g. the
beautiful following rules:
```
! model layout = symbols
* mao(nz(mao)) = pc+//(Delete)
* ben(basic) = pc+in(ben)
```
Fixed the issue and ensure to raise an error if expectation on layout
variant is broken.
|
|
|
|
Fixes #442
https://colemakmods.github.io/mod-dh/keyboards.html is the reference page for Colemak-DH layouts.
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/714>
|
|
|
|
Add latest available keycodes.
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/709>
|
|
`Shift + Caps` locks the digits on the digits row, `Caps Lock` alone
behaves as usual (Azerty layouts).
The `Shift + Caps Lock` combination inverts the first two levels only.
Originally designed for layouts with digits on the second level of the
digits row (e.g. Azerty layouts).
This allows users to have direct access to digits while keeping
usual capitalization via `Caps Lock`.
Also add the `FOUR_LEVEL_LOCKABLE_LEVEL2` key type, a variant of
`FOUR_LEVEL_MIXED_KEYPAD` that uses `LevelFive` instead of `NumLock`,
to avoid interaction with the keypad. Originally created to lock the
digits on layouts with digits on the second level of the digits row
(e.g. Azerty layouts).
|
|
`<LSGT>` key on Kinesis Advantage and Advantage2 keyboards was
incorrectly labeled `INS`. It only acts as `INS` with the keypad
overlay.
See the manual[^1]: it is called the “international key”. Page 10
confirms it should be the `<LSGT>` key.
[^1]: https://kinesis-ergo.com/wp-content/uploads/kb500-user_manual.pdf
|
|
This should allow us to accept Gitlab private commit email.
See: https://docs.gitlab.com/ee/user/profile/#use-an-automatically-generated-private-commit-email.
|
|
|
|
|
|
Towncrier is a utility to produce useful, summarized news files.
See:
- https://pypi.org/project/towncrier/
- https://towncrier.readthedocs.io
Custom configuration for xkbcommon:
- New fragments are located in the `changes` directory.
- 5 sections:
- Model: `changes/models`
- Layout: `changes/layouts`
- Option: `changes/options`
- Miscellaneous: `changes/misc`
- Build System: `changes/build`
- 3 news fragments:
- Breaking changes: `.breaking`
- New: `.feature`
- Fixes: `.bugfix`
`ChangeLog` is renamed to `ChangeLog.md` because the tool requires `.md`
extension to write in markdown format.
|
|
Fallback with package `strenum` is required for Python < 3.11.
Part-of: <https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/merge_requests/702>
|