:
يتم إعطاؤك مقتطف رمز يمثل جزءًا من تطبيق تحرير النص. يعرض المقتطف جزءًا من التعليمات البرمجية التي تتعامل مع اختصارات لوحة المفاتيح للتنقل في مستند نصي. يوفر التطبيق اختصارات لوحة المفاتيح التالية:

1. B_LEFT: لتحريك علامة الإقحام حرفًا واحدًا إلى اليسار.
2. B_RIGHT: لتحريك علامة الإقحام حرفًا واحدًا إلى اليمين.
3. B_HOME: ينقل علامة الإقحام إلى بداية السطر.
4.B_END: ​​ينقل علامة الإقحام إلى نهاية السطر.

قم بتنفيذ وظيفة تسمى "handleKeyboardShortcut" والتي تحاكي سلوك تطبيق تحرير النص. يجب أن تأخذ الوظيفة ثلاث وسائط:
1. `currCaretPos` (عدد صحيح): الموضع الحالي لعلامة الإقحام في المستند.
2. `الاختصار` (سلسلة): اختصار لوحة المفاتيح الذي تم الضغط عليه. سيكون الاختصار أحد الثوابت B_LEFT أو B_RIGHT أو B_HOME أو B_END.
3. `تحديد` (منطقي): علامة تشير إلى ما إذا تم الضغط على الاختصار بالتزامن مع مفتاح التحديد.

يجب أن تقوم الوظيفة بإرجاع الموضع المحدث لعلامة الإقحام، مع مراعاة اختصار لوحة المفاتيح وعلامة التحديد.

ملحوظة:
- يعتمد موضع علامة الإقحام على 0، حيث يكون موضع الحرف الأول هو 0.
- عند تعيين علامة "تحديد" على "صحيح"، فهذا يعني أن المستخدم يريد تحديد نطاق من النص بدءًا من موضع علامة الإقحام الحالي.
- يجب أن تتعامل وظيفة "handleKeyboardShortcut" مع جميع الحالات المحتملة لكل اختصار من اختصارات لوحة المفاتيح.

توقيع الوظيفة: `def HandleKeyboardShortcut(currCaretPos: int, Shortcut: str, Select: bool) -> int:`

مثال:
```
HandleKeyboardShortcut(5, "B_LEFT", False) => 4
HandleKeyboardShortcut(10, "B_RIGHT", True) => 10
HandleKeyboardShortcut(13, "B_HOME", False) => 0
HandleKeyboardShortcut(6, "B_END", True) => 6
```
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}