На самом деле, функциональность CapsLock привязана к значению keysym нажатой клавиши. Чтобы увидеть отображение кодов клавиш на keysyms, выполните xmodmap -pke
. Отображение CapsLock (ключевой код 66) должно быть таким (| grep 'keycode 66'
):
keycode 66 = Caps_Lock NoSymbol Caps_Lock
Вы можете немного поиграть с xev
. Подробнее читайте в ArchWiki: Xmodmap#Introduction.
Как я могу отсоединить клавиши (коды клавиш), чтобы отключить их функцию как модификаторов?
Вам нужно изменить отображение CapsLock.
Чтобы отключить CapsLock, нужно снять его отображение:
xmodmap -e 'keycode 66 = NoSymbol NoSymbol NoSymbol NoSymbol'
Чтобы включить CapsLock, нужно снова отобразить его на значения по умолчанию:
xmodmap -e 'keycode 66 = Caps_Lock NoSymbol Caps_Lock'
Что на самом деле делает команда clear?
Она очищает отображение модификатора, а не отображение кодов клавиш. Подробнее на ArchWiki: Xmodmap#Modifier_keys
TL;DR :вы можете использовать сокеты UDP в режиме подключения или оставаться без подключения, это выбор реализации, зависящий, среди прочих факторов, от простоты или масштабируемости. Это не изменит содержимое пакетов в сети и не отследит любой сделанный выбор.
netcat
используетbind(2)
для выбранного порта, использует только один разrecvfrom(2)
с опцией MSG_PEEK
, чтобы даже не потреблять данные, извлекает источник, затем используетconnect(2)
для этого источника, изменяя состояние сокета на ESTAB
, и теперь можно продолжить простыми вызовамиread(2)
и write(2)
.
Другие приложения (, например :socat UDP-RECVFROM:7777,fork -
вместо socat UDP-LISTEN:7777 -
, и, очевидно, openvpn )просто никогда неconnect(2)
к источнику и, таким образом, остаются в состоянии UNCONN. Они будут использовать толькоrecvfrom(2)
и будут передавать данные, используяsendto(2)
.
Эта разница в использовании частично объясняется вrecv(2)
и send(2)
:
The send() call may be used only when the socket is in a connected state (so that the intended recipient is known). The only difference between send() and write(2) is the presence of flags. With a zero flags argument, send() is equivalent to write(2).