Nedenini merak ediyorum Shift+ Arrow Keybirinde sonucu A
, B
, C
veya D
harfler.
Neden diğer harfler değil? Neden herhangi bir mektup?
Shift + Arrow Keys
hiçbir şey yapmaz.
Nedenini merak ediyorum Shift+ Arrow Keybirinde sonucu A
, B
, C
veya D
harfler.
Neden diğer harfler değil? Neden herhangi bir mektup?
Shift + Arrow Keys
hiçbir şey yapmaz.
Yanıtlar:
Gibi Terminal emülatörlerine gnome-terminal
(Ubuntu "Terminal") değil, aynı zamanda xterm
ve urxvt
bir bilgisayarın sadece ekran vardı eski terminal davranışı yeniden çünkü "taklitlerini" olarak adlandırılır. Bu tür terminaller bilgisayar ile metin tabanlı bir protokolle haberleşmiştir ve başlangıçta sadece metin almak için tasarlanmıştır. Çabuk, daha fazla kontrol gerekiyordu: bir çizgiyi silmek nasıl? Renkleri kullanmak? Veya imleç konumunu değiştir?
Kaynak: Unix Kullanılabilirlik Sanatı - Komut Satırı Arabirimleri
Kaçış dizileri her terminal için böyle şeyler yapması için tasarlandı. Onlar adlandırılır kaçış onlar ASCII kaçış kodu ile başlar, çünkü: 33
. Bu tür bir karakteri doğrudan yazdırmanın hiçbir yolu yoktur, bu da bu tür dizilere uygun bir özelliktir. Hala bu karakteri göstermek istediğimizde ^[[
, kullanılır ve açıklamalarımda kullanacağım şey budur.
Terminal alındığında ^[[A
, "print ^ [[A" değil, "kullanıcı yukarı ok tuşuna bastı" anlamına gelmiyordu. Buradaki "A" tamamen keyfidir: sadece herkesin üzerinde anlaştığı mektuptur, çünkü DEC VT-52 ve halefi popüler VT-100 terminalinin kullandığı şey budur.
Kaynak: DEC VT-52 Bakım Kılavuzu 1976
Bu hala terminal emülatörlerinin bugün çalışma şeklidir: $TERM
değişkene bağlı olarak, adlandırılmış bir veri tabanı terminfo
kabuğa hangi kodların gönderileceğinden (bash, sh, zsh ...) sorumludur, bu daha sonra onları anlamak ve tepki vermekle yükümlüdür. onlara.
Şimdi, Shift+ için kod upşu şekilde olur ^[[1;2A
: terminal emülatörü bu kodu kabuğa gönderir, yorumlamaya çalışır ^[[1;2
ancak hiçbir şey göstermez, çünkü o kaçış dizisini bilmez. Ancak A
kaldı ve görüntülenir.
^[[A
bunlar terminalde bir işlem çalışırken ok tuşlarına tıkladığımda anlam ifade ediyor.
cat >/dev/null
ve tamamladığınızda Ctrl + C (veya Enter ve sonra Ctrl + D) tuşlarına basabilirsiniz.