Я подтвердил все нижеперечисленное на ThinkPad P1 с Pop! _ОС (производная Ubuntu 18.10 )в GNOME.
Запустите xev
в терминале и начните печатать. Данных много, но что вы ищет обычно вторая 3-я строка блока после словаkeycode
:
KeyRelease event, serial 37, synthetic NO, window 0x3c00001,
root 0x1a5, subw 0x0, time 291165043, (404,446), root:(454,634),
state 0x0, **keycode 107** (keysym 0xff67, Menu), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Есть некоторые клавиши, для которых xev
не печатается код клавиши, например Print Screen. Для этого вы можете просмотреть файл, созданный в следующем разделе.
xmodmap
Вы можете вывести текущие сопоставления в стандартный вывод, запустив xmodmap -pke
. Вы избавите себя от некоторых потенциальных головных болей, предварительно сделав резервную копию макета xmodmap
. в файл:
xmodmap -pke ~/.Xmodmap.orig
Этот файл также служит простой справочной информацией о том, где находятся ключи, если они не отображаются. в xev
.
cat ~/.Xmodmap | grep Print
keycode 107 = Print Sys_Req Print Sys_Req
Вы это уже знаете, но просто подтверждаю:
xmodmap -e "keycode [number] = [keys...]"
Это временно переназначит ключ для вашего сеанса. Бег xmodmap -pke
снова отразит эти изменения.
xmodmap
использует столбцы, разделенные пробелом -, для обозначения различных модификаторов/режимов. для keycode
.Слева направо они:
Например:
xmodmap -e "44 = j J Down Next"
Это устанавливает клавишу "J" "j" сама по себе, "J" при нажатии с Shift, стрелка вниз при нажатии с переключателем режима _и Page Down при нажатии с переключателем режима _и Сдвиг.
Mode_switch
Mode_switch
— это отдельный общий модификатор, аналогичный Shift. я не думаю многие клавиатуры уже поставляются со специальной клавишейMode_switch
(AltGr ), но вы можно настроить с помощью xmodmap
.
# Set left Alt as Mode_switch
xmodmap -e "keycode 108 = Mode_switch"
xbindkeys
Я не знаю, как запускать произвольные скрипты с помощью xmodmap
. Есть, однако, несколько простых способов.
В документации i3 есть примеры по используя директивы bindsym
/ bindcode
в вашем файле ~/.config/i3/config
.
bindcode 214 exec /home/you/some_script.sh
Я еще не настроил i3, не проверял, но прямо от пользователя руководство. Я предполагаю, что коды совпадают с тем, что вы найдете в xmodmap
и у друзей.
Проверьте Настройки > Устройства > Клавиатура > Сочетания клавиш . Нажмите плюс и добавить комбинацию скрипт/ключ. Обратите внимание, что вы должны указать полный путь (от корня )до скрипт и убедитесь, что он исполняемый.
В моем тестировании GNOME не позволяет использовать некоторые клавиши, такие как Home и End.
xbindkeys
xbindkeys
может перехватить любой вместо этого нажмите клавишу и запустите скрипт.
Также просмотрите несколько примеров файлов конфигурации, запустите xbindkeys --defaults > $HOME/.xbindkeysrc
и просмотрите файл.
Обратите внимание, что он не открывает терминал, а просто выполняет файл в процессе.
Вот фактические команды для выполнения того, что вы хотите. Обязательно подтвердите свое ключевые коды, это как раз то, что у меня есть.
xmodmap
# print screen --> use as another super key, print screen with Mode_switch
# Note: On GNOME, it appears Super_R doesn't work the same as Super_L
xmodmap -e "keycode 107 = Super_L NoSymbol Print Sys_Req"
# left alt --> mode_switch key
xmodmap -e "keycode 64 = Mode_switch NoSymbol"
# escape key --> tilde and backtick
# Note: this can have unexpected consequences if you use `xcape` to map
# Control/Caps to send Escape when tapped. It will instead send `/~ when you
# press Caps Lock attempting to get Escape.
# A solution might be to switch the keys around and use a non-op key as a
# placeholder, like in the xcape README
# https://github.com/alols/xcape/blob/master/README.md#examples
xmodmap -e "keycode 9 = grave asciitilde grave asciitilde"
# original tild and back tick --> backspace
xmodmap -e "keycode 49 = BackSpace"
# backspace --> delete, and
# mode_switch + backspace --> home
xmodmap -e "keycode 22 = Delete NoSymbol Home"
# mode_switch + delete --> end
# Note: This won't work when combined with `xbindkeys`, since `xbindkeys`
# hijacks the entire Delete key from X.
xmodmap -e "keycode 119 = Delete NoSymbol End"
# mode_switch + h, j, k, l --> additional arrow keys
# Bonus: capital J/K are Page Down/Up, H/L are Home/End with Mode_switch + Shift
xmodmap -e "keycode 43 = h H Left Home"
xmodmap -e "keycode 44 = j J Down Next"
xmodmap -e "keycode 45 = k K Up Prior"
xmodmap -e "keycode 46 = l L Right End"
# Write current config to a file
xmodmap -pke > ~/.Xmodmap
# Load the config into xmodmap
xmodmap ~/.Xmodmap
Добавление последней команды выше к вашему ~/.profile
или ~/.bash_profile
будет загружайте его всякий раз, когда вы входите в систему, при условии, что у вас стандартная настройка. Для меня это было немного медленно, вы можете просто добавить все команды xmodmap -e
вручную.
xbindkeys
Убедитесь, что xbindkeys
установлен, и добавьте его в свой файл ~/.xbindkeysrc
:
# disable home, end, insert, delete keys and map them to run some script, and
"some-script-in-PATH"
Home
"some-script-in-PATH"
End
"some-script-in-PATH"
Insert
"some-script-in-PATH"
Delete
Затем перезагрузите xbindkeys -p
.
Вики-страница Emacs о переназначении
Вики-страница Emacs на xmodmap
Arch Wiki о Xmodmap
Подробнее о режиме _включить StackExchange
Более полное и трудоемкое решение состоит в том, чтобы просто написать свой собственный клавиатура макеты .
Думаю, вы можете быть уверены, что установлен ssh, но не nc. В свете этого вопрос может иметь смысл.
Используйте параметр -p. Например, порт открыт:
$ ssh -p 111 192.168.1.16
ssh_exchange_identification: read: Connection reset by peer
Порт закрыт:
$ ssh -p 112 192.168.1.16
ssh: connect to host 192.168.1.16 port 112: Connection refused