Мне нравится perl
, поэтому я предлагаю решение Perlish:
#!/usr/bin/env perl
use strict;
use warnings;
my %highest_version_of;
for ( glob ( "*.flg" ) ) {
my ( $filename, $version ) = m/^(\w+)_V(\d+).flg/;
if ( $highest_version_of{$filename} //= 0 < $version ) { $highest_version_of{$filename} = $version };
}
foreach my $filename ( sort keys %highest_version_of ) {
print "${filename}_$highest_version_of{$filename}.flg\n";
}
@Goro в своем ответе перечислил хорошие инструменты для распознавания нажатой клавиши, например xev . Но вторая часть его ответа была не тем, что я искал.
Я хотел изменить поведение клавиши Tab , а не клавиши Windows . Например, чтобы активировать скрипт в оконном менеджере i3 для смены окна, я могу нажать Tab + 1, чтобы переключиться на первый экран. Win + 1(по умолчанию ). Но я все еще могу использовать Вкладку , чтобы сделать отступ, если нажму только ее.
Чтобы заставить его работать, я использовал xmodmap и xcape .
spare_modifier="Super_L"
echo $spare_modifier
xmodmap -e "keycode 23 = $spare_modifier"
xmodmap -e "remove mod4 = $spare_modifier"
xmodmap -e "add Win = $spare_modifier"
xmodmap -e "add mod4 = $spare_modifier"
xmodmap -e "keycode any = Tab"
xcape -e "$spare_modifier=Tab"
Вам нужны две командные -линейные инструменты, xev и xmodmap .
Вы можете использовать xev
для переназначения клавиши. Запустите окно терминала и запустите xev
, затем нажмите клавишу, поведение которой вы хотите изменить. В вашем случае клавиша Tab .
xev
покажет вам информацию о клавише Tab . такие как:
KeyRelease event, serial 37, synthetic NO, window 0x4000001,
root 0x75, subw 0x0, time 4090453521, (461,542), root:(468,620),
state 0x10, keycode 23 (keysym 0xff09, Tab), same_screen YES,
XLookupString gives 1 bytes: (09) " "
XFilterEvent returns: False
Третья строка является наиболее важной, где Tab
— это имя поведения, которому назначена клавиша в данный момент, числовой код клавиши 23
— это внутренний идентификатор для распознавания клавиши Tab.
или информация о клавише Windows :
KeyPress event, serial 37, synthetic NO, window 0x4000001,
root 0x75, subw 0x0, time 4090816069, (681,389), root:(688,467),
state 0x10, keycode 115 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
Опять же, третья строка является наиболее важной, где Super_L
— это имя поведения, которому назначена клавиша в данный момент, числовой код клавиши 115
— это внутренний идентификатор для распознавания ключа Windwos.
Вы можете использовать xmodmap
, чтобы поменять местами две клавиши. Вот туториал . Например:
xmodmap -e "keycode 115 = Tab"
Это изменит поведение клавиши Windows и сделает ее точно такой же, как клавиша Tab. или
xmodmap -e "keycode 115 = Tab j"
Это изменит поведение клавиши Вкладка + j и сделает ее поведение аналогично клавише Вкладка .