شاشة القفل

تحمي شاشة القفل T-Deck من الاستخدام حين يُترَك بلا مراقبة. ويمكن إطلاقها يدويًّا، أو بإيماءة ضغط من أي شاشة، أو تلقائيًّا بعد مهلة خمول قابلة للضبط، أو عند كل تشغيل (lock boot on).


القفل

قفل يدوي

CMD> lock

يقفل فورًا بلا طلب PIN. بلا تأكيد.

ضغط كرة التتبّع (من أي شاشة)

اضغط زرّ منتصف كرة التتبّع 3 ثوانٍ من أي شاشة — المِحثّ، مسح جارٍ، عرض wguard، أي مكان. وتظهر شاشة القفل لحظة تركك الزرّ.

عتبة الـ 3 ثوانٍ تمنع القفل العرضي. فالنقرة الوجيزة لا تُطلِقه.

مهلة الخمول

CMD> lock timeout 120    # القفل بعد دقيقتين بلا ضغطات
CMD> lock timeout 0      # تعطيل القفل التلقائي

بمجرّد الضبط، يقفل الجهاز تلقائيًّا بعد المدّة المحدّدة بلا نشاط. وتصفّر ضغطاتُ لوحة المفاتيح وحركاتُ كرة التتبّع مؤقّتَ الخمول — فلا يُطلَق القفل إلّا حين لا يُستخدَم أيّ إدخال طوال المهلة. وتبقى المهلة بعد إعادة التشغيل (محفوظة على SD).


فتح القفل

بلا PIN مضبوط

تعرض الشاشة الخاملة قفلًا ورسالة Press [SPACE] x3 to unlock. اضغط Space ثلاث مرّات متتالية للفتح. وأي مفتاح آخر بينها يصفّر العدّاد — وتعرض الشاشة تقدّم (1/3) / (2/3).

ثلاث ضغطات بدل واحدة تمنع الفتح العرضي من ضغطة مفتاح والجهاز في حقيبة أو جيب.

مع PIN مضبوط

تُفعّل أوّل ضغطة طبقة إدخال PIN:

PIN:  * * * _

[DEL] delete     [Enter] unlock

اكتب PIN (أي أحرف قابلة للطباعة، حتى 16)، ثم اضغط Enter. وتُقنَّع الأحرف بـ * أثناء الكتابة.

المفتاح الإجراء
أي مفتاح قابل للطباعة إلحاق بمخزن PIN
DEL / Backspace حذف آخر حرف
Enter تأكيد — يفتح إن كان صحيحًا
Esc إلغاء الإدخال، والعودة للشاشة الخاملة

يُطلِق PIN خاطئ ومضةً حمراء 1.5 ثانية قبل إعادة المحاولة.


إدارة PIN

CMD> lock new       # ضبط PIN جديد (يُطلَب مرّتين للتأكيد، 4 أحرف على الأقلّ)
CMD> lock update    # تغيير PIN (يتطلّب الحالي أوّلًا)
CMD> lock clean     # إزالة PIN (يتطلّب الحالي)
CMD> lock wipe      # إزالة PIN عند نسيان الحالي — انظر قسم الاسترجاع أدناه
CMD> lock boot on   # اشتراط PIN عند كل تشغيل
CMD> lock boot off  # الإقلاع مباشرةً للأوامر (الافتراضي)
CMD> lock status    # عرض الحالة: مقفول؟ PIN مضبوط؟ قفل عند الإقلاع؟ المهلة

عند تفعيل lock boot on (وPIN مضبوط)، يعرض العنقاء شاشة القفل فورًا عند الإقلاع — فلا يصل أحد للأوامر بلا PIN. ويُخزَّن الإعداد في /config/lockscreen.conf (lockonboot=1). ولا أثر له حتى تضبط PIN بـ lock new.


الأمان

لا يُخزَّن PIN نصّيًّا أبدًا. فعند lock new يحدث:

  1. Salt — 8 بايتات عشوائية عبر esp_random()، تُخزَّن 16 حرف هيكس
  2. HashSHA-256(saltHex + pin) عبر mbedTLS، يُخزَّن 64 حرف هيكس
  3. تُكتَب hash وsalt وtimeout وlockonboot في /config/lockscreen.conf على بطاقة SD

وعند إدخال PIN للفتح، يُحسَب التجزئة نفسه ويُقارَن. ولا يمكن استعادة PIN الأصلي من التجزئة المخزَّنة.

التخزين على بطاقة SD بالتصميم. فـ PIN عمدًا لا يقيم في فلاش الجهاز الداخلي — إبقاؤه على البطاقة يجعل استرجاع نسيان PIN بسيطًا (أخرِج البطاقة) ويُبقي البطاقة مقروءة على الحاسوب. المقايضة: جهاز يُقلع بلا بطاقته لا PIN ليحمّله فيُقلع غير مقفول.

أحداث كرة التتبّع محجوبة تمامًا أثناء القفل. فالتمرير أو النقر لا يفعل شيئًا حتى الفتح بلوحة المفاتيح.

نطاق الحماية. تحمي هذه الجهاز العامل ممّن يلتقطه. ولا تحمي محتويات بطاقة SD: فالبطاقة FAT عادية، مقروءة في أي حاسوب، وإخراجها يعطّل القفل. لا تعامل القفل كتشفير.


الاسترجاع (نسيان PIN)

الأسهل — إخراج بطاقة SD

  1. أطفئ T-Deck
  2. أخرِج بطاقة SD (فـ PIN على البطاقة فقط)
  3. شغّل — لا إعداد ليحمّله، فيُقلع غير مقفول

أعد إدخال البطاقة وشغّل lock new لضبط PIN جديد.

أو — راية إعادة الضبط على البطاقة

إن فضّلت عدم إخراج البطاقة، استرجِع من حاسوب: افتح /config/lockscreen.conf وأضِف سطر reset=1، ثم أعد الإدخال وشغّل. في ذلك الإقلاع يمسح العنقاء PIN، ويعيد كتابة الملفّ بلا الراية (لمرّة واحدة)، ويُقلع غير مقفول. وتُحفَظ إعداداتك timeout وlockonboot؛ فقط شغّل lock new.

كلا مساري الاسترجاع لراحة المالك لا أمانًا إضافيًّا — فأيّ من يملك البطاقة يستطيعهما.


ملفّ الإعداد

/config/lockscreen.conf — مفتاح=قيمة، يكتبه أمر lock، ويقيم على بطاقة SD.

المفتاح المعنى
timeout ثواني الخمول قبل القفل التلقائي (0 = إيقاف)
hash SHA-256(salt + PIN)، 64 حرف هيكس
salt 8 بايتات عشوائية، 16 حرف هيكس
lockonboot 1 = شاشة القفل عند التشغيل
reset أضِف reset=1 يدويًّا لمسح PIN عند الإقلاع التالي (لمرّة واحدة؛ يُزال تلقائيًّا)

لا تحرّر hash/salt يدويًّا. والحقول المخصّصة للتحرير اليدوي هي reset=1 وlockonboot.