Прежде всего, извините за мое незнание X и XKB; Я пытался собрать решение в надежде на то, что смогу достичь того, чего хочу, не требуя его детального понимания.
Я пытаюсь создать карту клавиатуры XKB в Ubuntu 12.04, которая позволяет мне определить, какая из двух клавиш Shift является модификатором Level2. В частности, 4клавиша должна выдавать только $
тогда, когда удерживается правое смещение, а не левое.
Мое чтение до сих пор:
- http://www.charvolant.org/~doug/xkb/html/node5.html
- http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11
- http://www.x.org/releases/X11R7.5/doc/input/XKB-Enhancing.html
- Много поиска!
Я попытался определить пользовательский тип, а затем явно обратиться к нему в карте символов:
/usr/share/X11/xkb/types/mbfisher
:
default xkb_types "mbfisher" {
type "RIGHT_SHIFT" {
modifiers = None+Shift_R;
map[None] = Level1;
map[Shift_R] = Level2;
};
}
/usr/share/X11/xkb/symbols/mbfisher
:
default
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "mbfisher";
key <AE04> {
type= "RIGHT_SHIFT",
symbols[Group1]= [ 4, dollar ]
};
};
Затем я выбираю карту с помощью графического интерфейса пользователя Ubuntu.
Это, очевидно, отключает буквенно-цифровую клавиатуру отдельно от 4клавиши, но знак доллара все еще можно набрать любой клавишей Shift.
Я собираюсь написать огромный вопрос с большим количеством бесполезной информации, поэтому я остановлюсь здесь; пожалуйста, спросите обо всем, что я пропустил.
Есть идеи?
# xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
Вот что наконец сработало! Я использовал
xmodmap
и~/.Xmodmap
файл, а не конфигурацию xkb.~/.Xmodmap
:2 закомментированные строки (начиная с
!
) показывают заголовки столбцов до и после моих изменений. Это позволило мне указать столбец 2 как Shift_L и столбец 3 как Shift_R, поскольку я сопоставил shift_R как Mode_switch.Изменения вносятся путем запуска:
setxkbmap us
устанавливает карту США по умолчанию, чтобы вы работали с чистого листа, иxmodmap
добавляет к ней пользовательские изменения.Когда реализовано
!
,@
,#
,$
и%
символы могут быть напечатаны только с правой клавишей сдвиг, и^
,&
,*
,(
и)
может быть введено только с левой кнопкой переключения.Теперь я могу продолжить, сопоставив все клавиши на левой стороне клавиатуры, которые будут изменены только правой клавишей Shift (т. Е. Буквенные символы и их модификации в верхнем регистре), и наоборот; это решение означает, что мне нужно только переназначить левую сторону.
Другие полезные ссылки, найденные по пути:
Большое спасибо @Trudbert за то, что он дал мне большую часть пути к ответу!
источник