
Saya baru-baru ini melihat sebuah posting yang mengundang pengembang ke proyek Flipper Zero dan melamar. Saya ditambahkan ke repositori firmware dan saya mulai banyak berpikir tentang kegunaan perangkat. Saya bermimpi bahwa saya perlu memindai sekumpulan kunci gantungan kunci dari pintu masuk yang berbeda. Dalam mimpi itu, ada orang yang berbeda, apartemen, hujan, dan untuk beberapa alasan mereka memberi saya segenggam putaran kuning ini, berbeda satu sama lain hanya dalam jumlah kotoran di atasnya. Dan tentu saja, untuk mengatasi kekacauan ini, saya memutuskan untuk menambahkan semua kunci ini ke Flipper Zero.
Tepat dalam mimpi, saya memasukkan pengenal baru dan semuanya ditambahkan ke menu sebagai "Kunci", yang membuat tindakan itu semakin tidak berarti. Hasilnya adalah daftar besar, hanya terdiri dari kata "Kunci". Saya pikir saya perlu menulis ulang firmware. Dan inilah keuntungan tepat dari tidur - semua yang dikandung menjadi kenyataan sekaligus. Kunci mulai ditambahkan dengan sufiks acak sebagai "Kunci 74", diikuti oleh "Kunci 22". Nomornya acak, jangan bingung dengan checksum atau hash. Pada prinsipnya, jika Anda memiliki ingatan yang baik, Anda dapat mengingat bahwa Key 22 dari Lenin 54, dan Key 74 dari Pushkin 29. Saya pikir alangkah baiknya untuk mengedit angkanya, langsung di Flipper, tepat di daftar kunci: kami memiliki tombol kiri-kanan gratis, biarkan mereka menaikkan / menurunkan jumlahnya! Tahan lama akan memanggil keyboard lengkap! Tapi hentikankeyboard apa yang menggambar? Qwerty standar dengan beralih ke Ytsuken? Russified Yaverta? Kami memiliki layar hanya 128x64 piksel, selain itu, perlu untuk menjejalkan output dari apa yang sedang diketik ke dalamnya! Bagaimana cara menyesuaikan semua ini? Apakah mungkin untuk memasukkan teks dalam kode Morse?
Keyboard primitif
Mengatakan bahwa mengetik apa pun pada papan ketik seperti itu jelas tidak mungkin dilakukan. Yang mana juga cepat. Kesederhanaan dan kumpulan simbol yang besar adalah satu-satunya hal yang bisa Anda dapatkan di sini, tetapi sebaliknya Anda ingin menjalankan dari keyboard seperti itu dan tidak melihat ke belakang. Anehnya, metode masukan ini cukup umum di masa lalu.
Qwerty
Jadi, bagaimana jika Anda menggunakan keyboard Android standar, menerapkan efek lensa dan lihat apa yang terjadi? 10 jam di After Effects dan ini dia:
Saya memiliki skrip yang mengubah grafik menjadi palet CGA, setelah diproses ternyata seperti ini:
Saya menyukainya, dan bahkan menyukai halftone. BERHENTI. Flipper memiliki layar hitam dan putih! Tetapi di sisi lain, ia memiliki energi, yang berarti Anda bisa mendapatkan seminada dengan mengaktifkan / menonaktifkan piksel dengan cepat. Saya harus menciptakan dither versi saya sendiri. Dalam prosesnya, Smoker Dither ditemukan:
Ini adalah variasi dari dither Baer dan matriks distribusi error Bill Atkinson yang sedikit dimodifikasi. Setelah beberapa debugging dan memperbaiki kesalahan 9000, ternyata seperti ini:
Bukan untuk mengatakan bahwa saya lebih menyukai opsi ini, tetapi pada layar LCD ini akan terlihat lebih baik, setengah nada harus sangat bagus karena rotasi matriks yang konstan. Saya belum menerima Flipper, jadi saya tidak bisa benar-benar mengujinya, tetapi secara teori seharusnya terlihat bagus.
Hmm, bagaimana jika Anda mencoba menggambar keyboard sekecil mungkin?
Pada prinsipnya, itu berhasil dengan baik. Semuanya cocok jika Anda mau. Secara opsional, Anda dapat menghentikan kunci RUSLAT, seperti banyak kunci berguna lainnya. Tapi yang mana? Naik ke standar HID dan tekan kopi dan tombol merah dari sana?
Tata Letak
Tata letak QWERTY standar memiliki beberapa fitur berikut:
- Didesain untuk mesin ketik yang membutuhkan input manual (dua jarum)
- Seharusnya berpindah tangan saat mengetik. Saat satu tangan menekan tombol, tangan lainnya bersiap untuk menekan. Namun, banyak kata dalam bahasa Inggris yang hanya dapat diketik di sisi kiri keyboard.
- Susunan diagonal tuts kembali ke tatanan fisik tuas pada mesin tik
Kata-kata berikut diatribusikan ke August Dvorak, pencipta “Keyboard Dvorak”, sebuah alternatif untuk QWERTY:
, , , , . , , . , , , .Tetapi kebetulan baik Dvorak maupun penggantinya, Kolemak, tidak mendapatkan popularitas.
Tapi kembali ke Flipper. Apakah kita memiliki pengaruh padanya? Bisakah saya menggunakan 2 tangan sekaligus untuk mengetik? Apakah masuk akal untuk mengganti tangan? Apakah kita ingin menggunakan jari kelingking kita dengan lebih efektif, seperti yang diiklankan oleh Kolemak? Apakah kami memerlukan kompatibilitas dengan hotkey Windows populer seperti CTRL + C / CTRL + V? Jawaban dari semua pertanyaan ini adalah TIDAK. Kesimpulan: kita perlu menciptakan layout kita sendiri, karena QWERTY tidak memenuhi tugas dan tujuan kita.
Balon
Saya mengambil beberapa artikel dari Wikipedia, menyalin teks dari mereka dan menghitung karakter unik, ini dia: Lucu, tetapi tidak ada tanda kutip ganda ", tetapi ada" Pohon Natal ". Saya mencoba memvisualisasikan frekuensi penggunaan setiap huruf, tetapi saya segera harus menerapkan skala logaritmik, untuk melihat setidaknya sesuatu: Mari pikirkan tentang cara mengatur karakter ini di layar sehingga lebih nyaman bagi pengguna untuk memasukinya? Ide pertama adalah menghitung frekuensi penggunaan huruf ini atau itu bersama dengan tetangga. Dan menggunakan data ini, mulai simulator "Balls", di mana ada beberapa gaya tarik antara bola, sama dengan frekuensi penggunaan huruf-huruf ini di lingkungan tersebut. Pengalaman pertama adalah sebagai berikut:
!$%&'(),-./01234567
89:;?ABCDEFGHIJKLM
NOPQRSTUVWXYZ[]a
bcdefghijklmnopqrstu
vwxyz|£¥«°²»àéœ́
—’“„…№
↑▲
Ada sedikit yang bisa dilihat, tetapi jika Anda melihat lebih dekat, Anda dapat melihat bagaimana huruf Cyrillic dan Latin telah membentuk kelompok, praktis tidak terhubung satu sama lain, dan karakter yang jarang digunakan terbang keluar dari ruang angkasa.
Setelah 9000 jam debugging dan pain, simulasi yang lebih menyenangkan dibuat:
Yang membuat saya kecewa, simbol-simbol tersebut sangat mengganggu pergerakan satu sama lain. Saya mencoba bermain dengan gaya gravitasi, mengubahnya secara dinamis, bahkan mengatur "pusaran" manual, tetapi tidak ada yang membantu.
Dapat dilihat di sini bahwa walaupun cluster sudah terbentuk sebagian besar, namun mengandung unsur asing. Kita perlu menemukan cara lain untuk mengatur kunci ...
Di sisi lain, jika kita memasukkan semua ini ke dalam diagram Voronoi ...
Tampak sangat keren! Hmm, dengan keyboard seperti itu, Anda bahkan dapat meninggalkan Flipper dan mulai memproduksi keyboard asli Anda sendiri! Siapa lagi yang butuh keyboard 1 jari? Apa yang harus saya tulis di kickstarter? Aku akan menangis di atas bantalku atas penemuan tak berguna berikutnya.
Genetika
Oke, setelah menangis, saya melanjutkan penelitian saya. Sebagai dasar, saya mengambil prototipe keyboard berbahasa Mandarin :
Yaitu, saya mengambil matriks ruang familiaritas 16x16 dan meletakkan satu set karakter di dalamnya dalam urutan acak. Secara umum, pada awalnya saya ingin mengemasnya dengan indah, menggunakan data frekuensi pada simbol tetangga, analog pohon Huffman melintas di kepala saya, tetapi saya tidak dapat melahirkan sesuatu yang masuk akal. Oleh karena itu, saya hanya menempatkan kunci di tengah, menempatkannya dalam bentuk spiral dari sel pusat. Kemudian, saya juga mulai mencampurnya, jadi cobaan dengan pohon Huffman tidak perlu.
Dan kemudian saya baru memulai pencarian genetik sederhana: Saya membuat satu set untuk mutasi, memilih yang terbaik (lihat di bawah), menjadikan mereka orang tua dari generasi berikutnya. Dan sampai hang, mis. tidak akan mengalami lubang evolusi.
Ada banyak eksperimen:
- 2 , ,
- 30 3000. , , — 30.
- , , .
- , - 5 ,
- , , . - ,
Kemudian saya mempertimbangkan seberapa efektif mutasi ini atau itu. Saya harus menciptakan sistem penilaian saya sendiri. Untuk melakukan ini, saya mengambil teks dari Wikipedia, dan membuat sesuatu seperti simulator proses pengetikan. Keyboard virtual 16x16, joystick virtual, teks virtual. Di akhir simulasi, saya melihat berapa banyak klik yang diperlukan untuk mengetik teks ini. Ini adalah peringkat efisiensi. Jika jumlah penekanan tombol lebih sedikit daripada variasi mutasi lainnya, dan terlebih sebelum tombol diatur ulang, maka “mutasi” ini ternyata lebih baik dan digunakan untuk melanjutkan perhitungan. Hasilnya, ternyata seperti ini:
Di beberapa tempat saya sangat menyukai numpad yang dihasilkan, di beberapa tempat Cyrillic dan Latin telah membentuk semacam kemiripan dengan "Yin dan Yang", hampir di semua tempat simbol dolar, euro dan pound bersebelahan, serta simbol persen. Angka di sebelah kiri berarti berapa kali Anda perlu menekan tombol joystick untuk mengetik teks tes. Mungkin, jika saya menjalankan simulator selama seminggu, akan ada opsi yang lebih menarik, tetapi saya memiliki komputer lama untuk eksperimen semacam itu. Dan pembaca yang penuh perhatian juga akan menemukan tas setengah paskah: hampir semua opsi tata letak mengandung kata KFC, karena itu dilatih pada artikel tentang KFC dan beberapa pemain tenis.
Pada prinsipnya, saya tergoda untuk mengambil dan mengatur ulang beberapa kunci dengan tangan saya, terutama Cyrillic Y, yang ternyata selalu dekat dengan alfabet Latin, atau Latin X, yang kadang-kadang terjadi di antara alfabet Cyrillic, dan simbol-simbol itu didistribusikan secara merata dalam lingkaran atau ditumpuk menjadi tumpukan, tapi ... Dan apa jawaban evolusi? ini adalah? Seberapa efektif penataan ulang seperti itu? Ya, saya terlalu malas untuk menulis penyusunan ulang yang interaktif. Tetapi itu menjadi lebih baik: sekarang saya tahu bahwa bahkan untuk alfabet Sirilik / Latin dapat ada beberapa tata letak, dan biarkan pengguna memilih yang terbaik untuknya.
Jika Anda tertarik dengan opsi lain untuk tata letak yang dibuat selama penghitungan, lihat file anon.fm/articles/flipper-keyboard/layouts.html dan anon.fm/articles/flipper-keyboard/layouts-more.html
Anda bisa bereksperimen dalam waktu lama, berikut beberapa ide untuk bereksperimen:
- Meringkuk tepi ruang di atas satu sama lain. Itu. bukan kursor yang bergerak melintasi keyboard, tetapi keyboard bergerak, dan saat bergerak ke satu sisi layar, ia muncul di sisi lain.
- Penolakan ruang dua dimensi dan membungkus bidang menjadi semacam objek tiga dimensi, katakanlah, membentang di atas bola dunia atau beberapa bentuk geometris lainnya. Ada lebih banyak kemungkinan untuk ruang perulangan.
- Menambahkan simbol yang umum digunakan di beberapa contoh. Misalnya, mengapa tidak menambahkan selusin spasi? Di sini, di Kolemak ada 2 ruang belakang, hanya saja dalam kasus kita ini adalah ruang untuk berkembang biak.
- , , . —
- , , Dasher
Jika ada yang tidak tahu tentang Dasher, jalankan di sini: f-droid.org/en/packages/dasher.android - di sini semuanya tentang perangkat kami dan bahkan lebih banyak lagi: input teks dari joystick, trackball, mouse, pelacak mata, dan satu tangan lainnya, satu jari dan perangkat yang dapat dikenakan. Antarmuka dapat diluncurkan bahkan pada 32x32 piksel tanpa mengorbankan kegunaan. Bekerja di Pocket PC dan bertahan selama bertahun-tahun! Tapi, tidak peduli seberapa besar saya penggemar hal ini, meskipun banyak pilihan pilihan, saya belum belajar bagaimana menggunakannya, sambil merasakan kenyamanannya, jadi bagi saya ini lebih merupakan kemungkinan tekno-demik, kemungkinan berinteraksi dengan mesin. Jika seseorang ingin menggunakan Dasher, silakan, tambalan masih datang ke repositori secara teratur, saya pikir akan banyak yang ingin melihat hal seperti itu di Flipper mereka.
Di sini Anda juga dapat menambahkan berbagai opsi untuk keyboard akor, atau keyboard layar dari era Palm, seperti MessagEase. Ide di balik MessagEase sangat bagus, tetapi masalahnya adalah menahan 2 tombol secara pribadi tidak dapat diterima bagi saya, jadi secara pribadi saya tidak akan mengubah Flipper menjadi keyboard akor. Tapi saya yakin perangkat peretasan sungguhan tidak dapat bertahan tanpa keyboard akor, jadi orang lain pasti akan menambahkannya.
Kesimpulannya: ada banyak variasi pilihan keyboard. Tetapi saya tidak hanya harus membayangkan bagaimana seharusnya, tetapi juga menerapkan semua yang dijelaskan di atas. Jadi, jika Anda mau, Anda dapat mencoba, tetapi saya harus bekerja.
Penerapan
Dan di bagian selanjutnya kami akan mencoba menerapkan semua yang telah kami bayangkan. Kami akan menulis emulator kecil dan mencoba menciptakan API.
Terakhir, berikut adalah beberapa animasi lainnya dengan konsep keyboard:
Keyboard membentang di atas apa yang disebut Max Torus Knot:
Dan ini adalah upaya untuk menarik burung hantu di atas globe ^ W ^ W ^ W keyboard di atas sebuah bola. Di sini saya bereksperimen sedikit dengan dithering, dan saya juga menambahkan Epileptic Dithering ke Dithering of the Smoker.
Mirip dengan yang sebelumnya, hanya untuk CGA.
UPD: Saya benar-benar lupa melampirkan sumber dari semua aib ini. Apakah mereka menarik bagi siapa pun?