| |
 | Posted by Ali Çehreli in reply to Salih Dincer | Permalink Reply |
|
Ali Çehreli 
Posted in reply to Salih Dincer
| Bu, olması gerektiğinden çok daha karmaşık bir konudur:
- F6'ya bastığımız ortam, örneğin terminal programı F6'ya özel bir anlam yüklemiş olabilir ve o anlama karşılık gelen karakterleri üretiyor olabilir.
- D (ve C, ve C++, vs.) gibi dillerde klavye diye bir kavram yoktur. O yüzden, platformun sunduğu özel kütüphaneleri kullanmak zorunda kalabiliriz.
- D vs. diller, stdin' karakter akımı olarak kullanırlar. Çoğu durumda da UTF-8 kodlaması kullanıldığından F6'nın nasıl okunacağını ben bilmiyorum.
On 7/20/25 8:22 PM, Salih Dincer wrote:
> Şurada bulduğum bir cevap ve yazdığım InputRange kodum var:
> https://forum.dlang.org/post/lamvoipydbejhatcffvm@forum.dlang.org
Evet, 0x1A ^Z'ye karşılık geliyor çünkü değeri 26 ve ^A 1'den başlayınca 26 ^Z oluyor.
> Sanırım Linux'da bu çalışmayacak çünkü Windows'ta F6 tuşu bazen
"bazen" olması şaşırtıcı ve tabii büyük güçlük doğurur. (?)
> doğrudan
> ^Z (ASCII 26, SUB) karakterini terminale gönderirken, Linux/macOS
> sistemlerinde ^Z genellikle terminalde bir "suspend" (durdurma) sinyali
> olarak yorumlanır ve çalışan programı arka plana atar (SIGTSTP sinyali
> gönderir), sonlandırmaz.
>
> Linux'ta bir programın standart girdisini sonlandırmak için genellikle
> Ctrl + D (ASCII 4, EOT - End of Transmission) kullanılır. Bu, programın
> `stdin.rawRead()` çağrısında 0 byte okuduğunu algılamasına neden olur ve
> bu durumu EOF (End of File) olarak yorumlar.
>
> Bu durumda empty() içinde birkaç satır değiştirmem gerekiyor. Örneğin
> `rawRead()` bir değişken üzerinden okutup 0 byte bilgisini alabilirim.
> Kodu Linux'da deneme fırsatı olan varsa sevinirim.
>
> SDB@79
Evet, Linux'ta denedim ama Emacs'in derleme penceresinde. F6 hiçbir karakter göstermedi.
Bir terminalde (xfce4-terminal imiş) çalıştırınca şunları gördüm: ^[[17~
Ali
|