{
	"issue": {
		"url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
		"repository_url": "https://api.github.com/repos/laurent22/joplin",
		"labels_url": "https://api.github.com/repos/laurent22/joplin/issues/7755/labels{/name}",
		"comments_url": "https://api.github.com/repos/laurent22/joplin/issues/7755/comments",
		"events_url": "https://api.github.com/repos/laurent22/joplin/issues/7755/events",
		"html_url": "https://github.com/laurent22/joplin/pull/7755",
		"id": 1581182391,
		"node_id": "PR_kwDOBLftOs5JyjcA",
		"number": 7755,
		"title": "Desktop: Fixes #7692: Added \"Move Line Up\" and \"Move Line Down\" shortcuts",
		"user": {
			"login": "Polaris66",
			"id": 64375061,
			"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
			"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
			"gravatar_id": "",
			"url": "https://api.github.com/users/Polaris66",
			"html_url": "https://github.com/Polaris66",
			"followers_url": "https://api.github.com/users/Polaris66/followers",
			"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
			"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
			"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
			"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
			"organizations_url": "https://api.github.com/users/Polaris66/orgs",
			"repos_url": "https://api.github.com/users/Polaris66/repos",
			"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
			"received_events_url": "https://api.github.com/users/Polaris66/received_events",
			"type": "User",
			"user_view_type": "public",
			"site_admin": false
		},
		"labels": [],
		"state": "closed",
		"locked": true,
		"assignee": null,
		"assignees": [],
		"milestone": null,
		"comments": 23,
		"created_at": "2023-02-12T09:11:26Z",
		"updated_at": "2023-02-21T17:09:22Z",
		"closed_at": "2023-02-21T10:55:18Z",
		"author_association": "CONTRIBUTOR",
		"sub_issues_summary": {
			"total": 0,
			"completed": 0,
			"percent_completed": 0
		},
		"active_lock_reason": null,
		"draft": false,
		"pull_request": {
			"url": "https://api.github.com/repos/laurent22/joplin/pulls/7755",
			"html_url": "https://github.com/laurent22/joplin/pull/7755",
			"diff_url": "https://github.com/laurent22/joplin/pull/7755.diff",
			"patch_url": "https://github.com/laurent22/joplin/pull/7755.patch",
			"merged_at": "2023-02-21T10:55:18Z"
		},
		"body": "The bug was that the shortcuts \"Alt+Up\" and \"Alt+Down\" cannot be used for \"Move line up\" and \"Move line down\" functionality during custom sort.\r\nIn NoteList.tsx, I applied same logic that is used for custom sort currently for moving notes using \"Alt+Up\" and \"Alt+Down\".\r\nI created a function noteItem_noteMove for modularity. Also, the code asks the user to move to custom sort, if they try to use these shortcuts with any other ordering configuration.\r\n",
		"closed_by": {
			"login": "laurent22",
			"id": 1285584,
			"node_id": "MDQ6VXNlcjEyODU1ODQ=",
			"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
			"gravatar_id": "",
			"url": "https://api.github.com/users/laurent22",
			"html_url": "https://github.com/laurent22",
			"followers_url": "https://api.github.com/users/laurent22/followers",
			"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
			"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
			"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
			"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
			"organizations_url": "https://api.github.com/users/laurent22/orgs",
			"repos_url": "https://api.github.com/users/laurent22/repos",
			"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
			"received_events_url": "https://api.github.com/users/laurent22/received_events",
			"type": "User",
			"user_view_type": "public",
			"site_admin": false
		},
		"reactions": {
			"url": "https://api.github.com/repos/laurent22/joplin/issues/7755/reactions",
			"total_count": 0,
			"+1": 0,
			"-1": 0,
			"laugh": 0,
			"hooray": 0,
			"confused": 0,
			"heart": 0,
			"rocket": 0,
			"eyes": 0
		},
		"timeline_url": "https://api.github.com/repos/laurent22/joplin/issues/7755/timeline",
		"performed_via_github_app": null,
		"state_reason": null
	},
	"comments": [
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1426981278",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1426981278",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1426981278,
			"node_id": "IC_kwDOBLftOs5VDgGe",
			"user": {
				"login": "github-actions[bot]",
				"id": 41898282,
				"node_id": "MDM6Qm90NDE4OTgyODI=",
				"avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/github-actions%5Bbot%5D",
				"html_url": "https://github.com/apps/github-actions",
				"followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
				"following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
				"gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
				"organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
				"repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
				"events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
				"received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
				"type": "Bot",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-12T09:11:43Z",
			"updated_at": "2023-02-21T10:33:00Z",
			"author_association": "CONTRIBUTOR",
			"body": "****CLA Assistant Lite bot**** All contributors have signed the CLA  ✍️ ✅",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1426981278/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1426982152",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1426982152",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1426982152,
			"node_id": "IC_kwDOBLftOs5VDgUI",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-12T09:16:47Z",
			"updated_at": "2023-02-12T09:16:47Z",
			"author_association": "CONTRIBUTOR",
			"body": "I have read the CLA Document and I hereby sign the CLA.",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1426982152/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427008278",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427008278",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427008278,
			"node_id": "IC_kwDOBLftOs5VDmsW",
			"user": {
				"login": "laurent22",
				"id": 1285584,
				"node_id": "MDQ6VXNlcjEyODU1ODQ=",
				"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/laurent22",
				"html_url": "https://github.com/laurent22",
				"followers_url": "https://api.github.com/users/laurent22/followers",
				"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
				"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
				"organizations_url": "https://api.github.com/users/laurent22/orgs",
				"repos_url": "https://api.github.com/users/laurent22/repos",
				"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
				"received_events_url": "https://api.github.com/users/laurent22/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-12T11:31:19Z",
			"updated_at": "2023-02-12T11:31:19Z",
			"author_association": "OWNER",
			"body": "Is that for GSoC?",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427008278/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427037671",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427037671",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427037671,
			"node_id": "IC_kwDOBLftOs5VDt3n",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-12T13:45:21Z",
			"updated_at": "2023-02-12T13:45:21Z",
			"author_association": "CONTRIBUTOR",
			"body": "> Is that for GSoC?\r\nI do wish to participate in GSOC this year and contribute to Joplin. That is why I am trying to fix basic issues to get used to the codebase.",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427037671/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427713168",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427713168",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427713168,
			"node_id": "IC_kwDOBLftOs5VGSyQ",
			"user": {
				"login": "TaoK",
				"id": 531704,
				"node_id": "MDQ6VXNlcjUzMTcwNA==",
				"avatar_url": "https://avatars.githubusercontent.com/u/531704?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/TaoK",
				"html_url": "https://github.com/TaoK",
				"followers_url": "https://api.github.com/users/TaoK/followers",
				"following_url": "https://api.github.com/users/TaoK/following{/other_user}",
				"gists_url": "https://api.github.com/users/TaoK/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/TaoK/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/TaoK/subscriptions",
				"organizations_url": "https://api.github.com/users/TaoK/orgs",
				"repos_url": "https://api.github.com/users/TaoK/repos",
				"events_url": "https://api.github.com/users/TaoK/events{/privacy}",
				"received_events_url": "https://api.github.com/users/TaoK/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T10:39:12Z",
			"updated_at": "2023-02-13T10:39:12Z",
			"author_association": "CONTRIBUTOR",
			"body": "I do have a concern here: \"Swap line down\" and \"Swap line up\" are already keymappable actions that work in the Note Editor - and they default to Alt-Down and Alt-Up in Windows, but maybe something else eg on Mac - so it would be very odd for the same shortcuts to work the same way in the Note List in Windows by default, but not work the same way in the Note List for users or OSs that have the keys mapped differently.\r\n",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427713168/reactions",
				"total_count": 1,
				"+1": 1,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427778683",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427778683",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427778683,
			"node_id": "IC_kwDOBLftOs5VGix7",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T11:23:59Z",
			"updated_at": "2023-02-13T11:23:59Z",
			"author_association": "CONTRIBUTOR",
			"body": "> I do have a concern here: \"Swap line down\" and \"Swap line up\" are already keymappable actions that work in the Note Editor - and they default to Alt-Down and Alt-Up in Windows, but maybe something else eg on Mac - so it would be very odd for the same shortcuts to work the same way in the Note List in Windows by default, but not work the same way in the Note List for users or OSs that have the keys mapped differently.\n> \n\nCan you elaborate further with an example?",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427778683/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427812569",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427812569",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427812569,
			"node_id": "IC_kwDOBLftOs5VGrDZ",
			"user": {
				"login": "TaoK",
				"id": 531704,
				"node_id": "MDQ6VXNlcjUzMTcwNA==",
				"avatar_url": "https://avatars.githubusercontent.com/u/531704?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/TaoK",
				"html_url": "https://github.com/TaoK",
				"followers_url": "https://api.github.com/users/TaoK/followers",
				"following_url": "https://api.github.com/users/TaoK/following{/other_user}",
				"gists_url": "https://api.github.com/users/TaoK/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/TaoK/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/TaoK/subscriptions",
				"organizations_url": "https://api.github.com/users/TaoK/orgs",
				"repos_url": "https://api.github.com/users/TaoK/repos",
				"events_url": "https://api.github.com/users/TaoK/events{/privacy}",
				"received_events_url": "https://api.github.com/users/TaoK/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T11:52:57Z",
			"updated_at": "2023-02-13T11:55:35Z",
			"author_association": "CONTRIBUTOR",
			"body": ">> I do have a concern\r\n\r\n> Can you elaborate further with an example?\r\n\r\nWhen you install Joplin on Windows, the \"Swap Line Down\" and \"Swap Line Up\" commands are set to \"Alt-Down\" and \"Alt-Up\". \r\n\r\nYou can verify this by editing a note that contains multiple lines, and using Alt-Up and Alt-Down on an existing line.\r\n\r\nYou can edit the keyboard shortcut for these commands, under Tools -> Options -> Keyboard shortcuts. If you change them to Ctr+Alt+Down and Ctrl+Alt+Up, for example, that's what works.\r\n\r\nFurthermore, on a Mac, these shortcuts default to \"Option+Down\" and \"Option+Up\"; broadly equivalent but not exactly the same.\r\n\r\nIn the changes above (so far), you are reusing the shortcuts (\"Alt+Down\", \"Alt+Up\"), but not the commands with their remappability. So for a new install it would work sensibly (the same shortcut works to do the same thing in note editor and in note list), but if a user remapped the \"Swap line down\" command, then it would change in the Note Editor as they requested, but not in the Note List.\r\n\r\nI am proposing that instead of hardcoding `((keyCode === 40 || keyCode === 38) && event.altKey)`, you should find a way to listen for the `editor.swapLineDown` and `editor.swapLineUp` commands. I haven't understood exactly how this would be done. I see that arbitrary Joplin commands are normally defined in `packages/app-desktop/gui/MainScreen/commands/*`, and I think I see that the CodeMirror editor command shortcuts are registered through a different pathway in `packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useKeymap.ts` - I suspect you'll have to create a new command in the former folder, but I'm not at all sure (that might mess up the CodeMirror mapping, I guess, we'd need to dig deeper to be sure). Alternatively, the answer may be to keep the existing code structure, but instead of hardcoding the keycode check, compare the incoming keycodes to those specified in the registration of the `editor.swapLineDown` and `editor.swapLineUp` commands. I don't know whether there is a straightforward utility for doing that.",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427812569/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427840017",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427840017",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427840017,
			"node_id": "IC_kwDOBLftOs5VGxwR",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T12:13:14Z",
			"updated_at": "2023-02-13T12:13:14Z",
			"author_association": "CONTRIBUTOR",
			"body": "Hi, after some testing , I have figured out that the keymapping for the\nnote viewer and the note list are two different things. Unlike the note\nviewer, the shortcuts for the note list are hard-coded and cannot be\nchanged by the user. I agree that the system should be changed for\nintegrating both, however according to the system that exists right now, I\nbelieve the keys for move note up and down should be hard-coded just like\nthe rest of the shortcuts for the Note List.\n\n\nFor example, you can try changing the shortcut for select All 'Ctrl+A' to\n'Ctrl+1' and changes are only seen in the Note editor and not the Note\nList. So, we can integrate this now and get started working on a system\nthat handles keymapping for the note list to be configurable as well.\n\nOn Mon, 13 Feb, 2023, 5:23 pm Tao Klerks, ***@***.***> wrote:\n\n> I do have a concern\n>\n> Can you elaborate further with an example?\n>\n> When you install Joplin on Windows, the \"Swap Line Down\" and \"Swap Line\n> Up\" commands are set to \"Alt-Down\" and \"Alt-Up\".\n>\n> You can verify this by editing a note that contains multiple lines, and\n> using Alt-Up and Alt-Down on an existing line.\n>\n> You can edit the keyboard shortcut for these commands, under Tools ->\n> Options -> Keyboard shortcuts. If you change them to Ctr+Alt+Down and\n> Ctrl+Alt+Up, for example, that's what works.\n>\n> Furthermore, on a Mac, these shortcuts default to \"Option+Down\" and\n> \"Option+Up\"; broadly equivalent but not exactly the same.\n>\n> In the changes above (so far), you are reusing the shortcuts (\"Alt+Down\",\n> \"Alt+Up\"), but not the commands with their remappability. So for a new\n> install it would work sensibly (the same shortcut works to do the same\n> thing in note editor and in note list), but if a user remapped the \"Swap\n> line down\" command, then it would change in the Note Editor as they\n> requested, but not in the Note List.\n>\n> I am proposing that instead of hardcoding ((keyCode === 40 || keyCode ===\n> 38) && event.altKey), you should find a way to listen for the\n> editor.swapLineDown and editor.swapLineUp commands. I haven't understood\n> exactly how this would be done. I see that arbitrary Joplin commands are\n> normally defined in packages/app-desktop/gui/MainScreen/commands/*, and I\n> think I see that the CodeMirror editor command shortcuts are registered\n> through a different pathway in\n> packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useKeymap.ts\n> - I suspect you'll have to create a new command in the former folder, but\n> I'm not at all sure (that might mess up the CodeMirror mapping, I guess,\n> we'd need to dig deeper to be sure).\n>\n> —\n> Reply to this email directly, view it on GitHub\n> <https://github.com/laurent22/joplin/pull/7755#issuecomment-1427812569>,\n> or unsubscribe\n> <https://github.com/notifications/unsubscribe-auth/APLESFJ4WXDKW4SPDQUYIF3WXIOCLANCNFSM6AAAAAAUZGFRQI>\n> .\n> You are receiving this because you authored the thread.Message ID:\n> ***@***.***>\n>\n",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427840017/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427854358",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427854358",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427854358,
			"node_id": "IC_kwDOBLftOs5VG1QW",
			"user": {
				"login": "TaoK",
				"id": 531704,
				"node_id": "MDQ6VXNlcjUzMTcwNA==",
				"avatar_url": "https://avatars.githubusercontent.com/u/531704?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/TaoK",
				"html_url": "https://github.com/TaoK",
				"followers_url": "https://api.github.com/users/TaoK/followers",
				"following_url": "https://api.github.com/users/TaoK/following{/other_user}",
				"gists_url": "https://api.github.com/users/TaoK/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/TaoK/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/TaoK/subscriptions",
				"organizations_url": "https://api.github.com/users/TaoK/orgs",
				"repos_url": "https://api.github.com/users/TaoK/repos",
				"events_url": "https://api.github.com/users/TaoK/events{/privacy}",
				"received_events_url": "https://api.github.com/users/TaoK/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T12:23:55Z",
			"updated_at": "2023-02-13T12:23:55Z",
			"author_association": "CONTRIBUTOR",
			"body": "I'll leave it to the project leaders to decide, but I personally would prefer to introduce the new functionality in an intuitive/compatible way, rather than introducing it inconsistently and making it a separate project to clean up / make consistent.\r\n\r\nI had not noticed that there are other \"inconsistent shortcuts\" - is Ctrl+A the only one? I see \"Delete Line\" could be considered to be similar, but has a *different shortcut* anyway, so it's not a candidate for shortcut consolidation.",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427854358/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427859244",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427859244",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427859244,
			"node_id": "IC_kwDOBLftOs5VG2cs",
			"user": {
				"login": "laurent22",
				"id": 1285584,
				"node_id": "MDQ6VXNlcjEyODU1ODQ=",
				"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/laurent22",
				"html_url": "https://github.com/laurent22",
				"followers_url": "https://api.github.com/users/laurent22/followers",
				"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
				"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
				"organizations_url": "https://api.github.com/users/laurent22/orgs",
				"repos_url": "https://api.github.com/users/laurent22/repos",
				"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
				"received_events_url": "https://api.github.com/users/laurent22/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T12:27:38Z",
			"updated_at": "2023-02-13T12:27:38Z",
			"author_association": "OWNER",
			"body": "I agree with TaoK, these new shortcuts should be the same as those for the note editor. Can you figure this out @Polaris66?",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427859244/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427870313",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427870313",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427870313,
			"node_id": "IC_kwDOBLftOs5VG5Jp",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T12:36:04Z",
			"updated_at": "2023-02-13T12:36:04Z",
			"author_association": "CONTRIBUTOR",
			"body": "> I agree with TaoK, these new shortcuts should be the same as those for the note editor. Can you figure this out @Polaris66?\n\nShortcuts such as Ctrl+A and these new shortcuts have similar looking but completely different functionality in the note list and the note editor. Hence, I would assume two different systems exist right now in the Joplin code for shortcuts in the editor and the note list.\n\nThe problem here is not that they have different functionality, it's that client changing shortcuts functionality exists only for the shortcuts available in the note editor and not for those available in note list.\n\nPossible solutions are adding the shortcuts for the note list to the \"changing shortcuts by client\" functionality as different shortcuts.\n\nFor eg. Selecting all notes 'Ctrl+A'\nAnd Selecting all lines 'Ctrl+A' hence allowing the user to change whichever shortcut they would like to change for both the note list and the note editor.\n\nI can get working on the understanding the changing keyboard shortcuts and adding the functionality for changing these shortcuts too. However that is a big task and I feel should be treated as a seperate issue/pull request.\n\nHence, I ask that we push this for now and I can get working on adding all the shortcuts in the Note List.tsx as variable shortcuts influenced by the client changes. ",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427870313/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427879540",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427879540",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427879540,
			"node_id": "IC_kwDOBLftOs5VG7Z0",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T12:43:42Z",
			"updated_at": "2023-02-13T12:43:42Z",
			"author_association": "CONTRIBUTOR",
			"body": "This process would involve removing all the shortcuts used currently for the noteList and make all of them customizable.\r\nHence, basically rewriting a lot of the file NoteList.tsx",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427879540/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427956844",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1427956844",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1427956844,
			"node_id": "IC_kwDOBLftOs5VHORs",
			"user": {
				"login": "laurent22",
				"id": 1285584,
				"node_id": "MDQ6VXNlcjEyODU1ODQ=",
				"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/laurent22",
				"html_url": "https://github.com/laurent22",
				"followers_url": "https://api.github.com/users/laurent22/followers",
				"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
				"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
				"organizations_url": "https://api.github.com/users/laurent22/orgs",
				"repos_url": "https://api.github.com/users/laurent22/repos",
				"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
				"received_events_url": "https://api.github.com/users/laurent22/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T13:37:10Z",
			"updated_at": "2023-02-13T13:37:10Z",
			"author_association": "OWNER",
			"body": "Surely it's possible to detect whether it's Option+Down or Alt+Down and do something different depending on the platform?",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1427956844/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1428056975",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1428056975",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1428056975,
			"node_id": "IC_kwDOBLftOs5VHmuP",
			"user": {
				"login": "TaoK",
				"id": 531704,
				"node_id": "MDQ6VXNlcjUzMTcwNA==",
				"avatar_url": "https://avatars.githubusercontent.com/u/531704?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/TaoK",
				"html_url": "https://github.com/TaoK",
				"followers_url": "https://api.github.com/users/TaoK/followers",
				"following_url": "https://api.github.com/users/TaoK/following{/other_user}",
				"gists_url": "https://api.github.com/users/TaoK/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/TaoK/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/TaoK/subscriptions",
				"organizations_url": "https://api.github.com/users/TaoK/orgs",
				"repos_url": "https://api.github.com/users/TaoK/repos",
				"events_url": "https://api.github.com/users/TaoK/events{/privacy}",
				"received_events_url": "https://api.github.com/users/TaoK/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-13T14:43:13Z",
			"updated_at": "2023-02-13T14:43:13Z",
			"author_association": "CONTRIBUTOR",
			"body": "> Shortcuts such as Ctrl+A and these new shortcuts have similar looking but completely different functionality in the note list and the note editor. Hence, I would assume two different systems exist right now in the Joplin code for shortcuts in the editor and the note list.\r\n\r\nI agree that the implementations of these actions are entirely independent, but as a **user**, I don't see them as substantially different things, and I certainly don't want to manage separate shortcuts for them.\r\n\r\n> client changing shortcuts functionality exists only for the shortcuts available in the note editor and not for those available in note list.\r\n\r\nI'm not sure what you mean by this. There are many shortcuts which take effect in the notes list, eg \"New Todo\"... Again, as a user, I don't distinguish between \"Global shortcuts\", \"Folder Shortcuts\", \"Note Shortcuts\", and \"Editor Shortcuts\" - there is one shortcut-editing screen, and I expect to manage things there and have them take effect in the right places.\r\n\r\nIf \"Swap Line Up\" is a thing that makes sense in both the note editor and the note list, then I expect that shortcut to control the corresponding action in both places. We **could** implement this as two shortcuts, \"Swap line up in code editor\" and \"Swap note up in note list\", but I doubt there are many users who would appreciate the resulting relationship between additional control and understandability/simplicity.\r\n\r\nThere could of course be good reasons for keeping these things separate:\r\n* If you want to be able to swap note order **from the editor context** (like you can, for example, run \"New Todo\"in that context) - then it should be a *different command, and different keyboard shortcut, altogether*.\r\n* If the action is benign in one context, and dangerous in another, then you might want to give the user the option to separately disable the shortcut\r\n* (etc?)\r\n\r\nBut I don't think these considerations apply in this case.\r\n\r\n> This process would involve removing all the shortcuts used currently for the noteList and make all of them customizable.\r\nHence, basically rewriting a lot of the file NoteList.tsx\r\n\r\nI definitely don't understand why that would be the case. Are you saying that it is not possible to implement your changes in this pull requests so that they \"follow\" the shortcuts defined for `editor.swapLineDown` and `editor.swapLineUp`? (*without* introducing a whole bunch of new user-facing \"commands\" for the note list actions)?\r\n\r\n",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1428056975/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1429690947",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1429690947",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1429690947,
			"node_id": "IC_kwDOBLftOs5VN1pD",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-14T12:45:07Z",
			"updated_at": "2023-02-14T12:45:07Z",
			"author_association": "CONTRIBUTOR",
			"body": "> Surely it's possible to detect whether it's Option+Down or Alt+Down and do something different depending on the platform?\r\n\r\nHi, according to this documentation : https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent\r\n\r\n\"[KeyboardEvent.altKey](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/altKey) Read only\r\nReturns a boolean value that is true if the Alt (Option or ⌥ on macOS) key was active when the key event was generated.\"\r\n\r\nHence, the code I have implemented should also work for macs.",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1429690947/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1429759150",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1429759150",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1429759150,
			"node_id": "IC_kwDOBLftOs5VOGSu",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-14T13:35:42Z",
			"updated_at": "2023-02-14T13:35:42Z",
			"author_association": "CONTRIBUTOR",
			"body": "> I agree that the implementations of these actions are entirely independent, but as a user, I don't see them as substantially different things, and I certainly don't want to manage separate shortcuts for them.\r\n\r\nHi, I think that this is just a design choice. For example, VS Code, I believe has different shortcut management for different parts of the editor. The system I imagine joplin having is similar.\r\n\r\nAs in,\r\n\"NoteList : Select All : Ctrl + A\"\r\n\"Editor : Select All : Ctrl + A\"\r\nWhich it looks like the developers were originally moving towards, seeing as some shortcuts have this classification.\r\n\r\nHowever, once again having the shortcuts for \"similar\" tasks like select all or move line up/move line down derive from shortcuts in the editor or different shortcuts altogether is a design choice that I leave upto the project leaders.\r\n\r\n> I'm not sure what you mean by this. There are many shortcuts which take effect in the notes list, eg \"New Todo\"... Again, as a user, I don't distinguish between \"Global shortcuts\", \"Folder Shortcuts\", \"Note Shortcuts\", and \"Editor Shortcuts\" - there is one shortcut-editing screen, and I expect to manage things there and have them take effect in the right places.\r\n\r\nAfter further research, I have found that both the Note List and the sidebar handle their keyboard shortcuts using just the frontend. The Note Editor on the other hand has a very complicated typescript setup involving files like:\r\n\r\n***\r\neditorCommandDeclarations.ts\r\n\r\n```\r\nimport { CommandDeclaration } from '@joplin/lib/services/CommandService';\r\nimport { _ } from '@joplin/lib/locale';\r\n{\r\n\t\tname: 'editor.swapLineUp',\r\n\t\tlabel: () => _('Swap line up'),\r\n\t}\r\n\r\nexport default declarations;\r\n\r\n```\r\n***\r\nar.json\r\n \"Swap line up\": \"اصطف بلمبادلة لأعلى\",\r\n \r\n converted to ar.po\r\n \r\n***\r\n30 different languages\r\n***\r\nmenuCommandNames.ts\r\n```\r\nexported 'editor.swapLineUp',\r\n```\r\n***\r\nKeyMapService.ts\r\n```\r\n{ accelerator: 'Alt+Up', command: 'editor.swapLineUp' },\r\n```\r\n***\r\nMenuBar.tsx\r\nmenuItemDic['editor.swapLineUp'],\r\n***\r\nuseKeyMap.ts\r\n***\r\nCommandService.ts\r\n***\r\nThe keyboard shortcut customisability is a part of this process and hence cannot be directly accessed by the frontend without changing all of this backend.\r\n\r\nI do believe that we should integrate all of the shortcuts for the Note List and the Side Bar into the back end, including but not limited to:\r\n* Ctrl - 'NOTE_SELECT_TOGGLE',\r\n* Shift -\r\n'NOTE_SELECT_EXTEND'\r\n* Up, Down = scroll Note Index\r\n* Ctrl+End/Cmd+Down - Last Note\r\n* Ctrl+Home/Cmd+Up - First Note\r\n* Move Line Up - Alt+Up\r\n* Move Line Down - Alt + Down\r\n* Note Delete = Delete Key\r\n* Ctrl + A = 'NOTE_SELECT_ALL'\r\n\r\nThis will take a lot of changes in the code and requires a lot of research. I am willing to begin on this ASAP.\r\n\r\nHowever, combining this to this particular pull request would violate two of the guidelines of Joplin PRs\r\n* Changes that will consist of more than 50 lines of code should be discussed on the [Joplin Forum](https://discourse.joplinapp.org/), so that you don't spend too much time implementing something that might not be accepted.\r\n* Pull requests that address multiple issues will most likely stall and eventually be closed. This is because we might be fine with one of the changes but not with others and untangling that kind of pull request is too much hassle both for maintainers and the person who submitted it. So most of the time someone gives up and the PR gets closed. So please keep the pull request focused on one issue.\r\n\r\nHence for clarity's sake, I would request the project leaders to merge this PR to the source code as it completely covers the issue it set out to solve, i.e adding a shortcut for \"Swap Note Up\" and \"Swap Note Down\" and release a new issue for integrating the shortcuts in the Note List and the Side Bar into the backend Configurable KeyMap Service, because that would require a lot of change in the code and a lot more discussion than Issue #7692 is warranted.\r\n\r\nRegards,\r\nDhruv Arora\r\n\r\n",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1429759150/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1432071370",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1432071370",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1432071370,
			"node_id": "IC_kwDOBLftOs5VW6zK",
			"user": {
				"login": "laurent22",
				"id": 1285584,
				"node_id": "MDQ6VXNlcjEyODU1ODQ=",
				"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/laurent22",
				"html_url": "https://github.com/laurent22",
				"followers_url": "https://api.github.com/users/laurent22/followers",
				"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
				"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
				"organizations_url": "https://api.github.com/users/laurent22/orgs",
				"repos_url": "https://api.github.com/users/laurent22/repos",
				"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
				"received_events_url": "https://api.github.com/users/laurent22/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-15T21:38:35Z",
			"updated_at": "2023-02-15T21:38:35Z",
			"author_association": "OWNER",
			"body": "recheck",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1432071370/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1432762815",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1432762815",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1432762815,
			"node_id": "IC_kwDOBLftOs5VZjm_",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-16T09:15:50Z",
			"updated_at": "2023-02-16T09:15:50Z",
			"author_association": "CONTRIBUTOR",
			"body": "So, is this ready to merge?",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1432762815/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1432808711",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1432808711",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1432808711,
			"node_id": "IC_kwDOBLftOs5VZu0H",
			"user": {
				"login": "laurent22",
				"id": 1285584,
				"node_id": "MDQ6VXNlcjEyODU1ODQ=",
				"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/laurent22",
				"html_url": "https://github.com/laurent22",
				"followers_url": "https://api.github.com/users/laurent22/followers",
				"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
				"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
				"organizations_url": "https://api.github.com/users/laurent22/orgs",
				"repos_url": "https://api.github.com/users/laurent22/repos",
				"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
				"received_events_url": "https://api.github.com/users/laurent22/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-16T09:50:02Z",
			"updated_at": "2023-02-16T09:50:02Z",
			"author_association": "OWNER",
			"body": "> So, is this ready to merge?\r\n\r\nWhat do you think? You still haven't addressed one of the first comment, and there's still a large block of code that's been copied and pasted there. I don't know the answer to your question - if I look into it, it's much faster for me to just do it, rather than explain to you step by step how to do it",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1432808711/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1433075623",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1433075623",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1433075623,
			"node_id": "IC_kwDOBLftOs5Vav-n",
			"user": {
				"login": "Polaris66",
				"id": 64375061,
				"node_id": "MDQ6VXNlcjY0Mzc1MDYx",
				"avatar_url": "https://avatars.githubusercontent.com/u/64375061?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/Polaris66",
				"html_url": "https://github.com/Polaris66",
				"followers_url": "https://api.github.com/users/Polaris66/followers",
				"following_url": "https://api.github.com/users/Polaris66/following{/other_user}",
				"gists_url": "https://api.github.com/users/Polaris66/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/Polaris66/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/Polaris66/subscriptions",
				"organizations_url": "https://api.github.com/users/Polaris66/orgs",
				"repos_url": "https://api.github.com/users/Polaris66/repos",
				"events_url": "https://api.github.com/users/Polaris66/events{/privacy}",
				"received_events_url": "https://api.github.com/users/Polaris66/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-16T13:17:30Z",
			"updated_at": "2023-02-16T13:17:30Z",
			"author_association": "CONTRIBUTOR",
			"body": "> What do you think? You still haven't addressed one of the first comment, and there's still a large block of code that's been copied and pasted there. I don't know the answer to your question - if I look into it, it's much faster for me to just do it, rather than explain to you step by step how to do it\r\n\r\nI understand and I apologise for the inconvenience. I have refactored that particular code. Please check and let me know if there is something further to be done or is the pull request ready to be merged.",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1433075623/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1438271360",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1438271360",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1438271360,
			"node_id": "IC_kwDOBLftOs5VukeA",
			"user": {
				"login": "laurent22",
				"id": 1285584,
				"node_id": "MDQ6VXNlcjEyODU1ODQ=",
				"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/laurent22",
				"html_url": "https://github.com/laurent22",
				"followers_url": "https://api.github.com/users/laurent22/followers",
				"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
				"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
				"organizations_url": "https://api.github.com/users/laurent22/orgs",
				"repos_url": "https://api.github.com/users/laurent22/repos",
				"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
				"received_events_url": "https://api.github.com/users/laurent22/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-21T10:55:08Z",
			"updated_at": "2023-02-21T10:55:08Z",
			"author_association": "OWNER",
			"body": "Ok let's merge, thanks for looking into it, and thanks @TaoK for reviewing",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1438271360/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1438671556",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1438671556",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1438671556,
			"node_id": "IC_kwDOBLftOs5VwGLE",
			"user": {
				"login": "laurent22",
				"id": 1285584,
				"node_id": "MDQ6VXNlcjEyODU1ODQ=",
				"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/laurent22",
				"html_url": "https://github.com/laurent22",
				"followers_url": "https://api.github.com/users/laurent22/followers",
				"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
				"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
				"organizations_url": "https://api.github.com/users/laurent22/orgs",
				"repos_url": "https://api.github.com/users/laurent22/repos",
				"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
				"received_events_url": "https://api.github.com/users/laurent22/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-21T15:24:56Z",
			"updated_at": "2023-02-21T15:24:56Z",
			"author_association": "OWNER",
			"body": "I should have waited for CI to complete because your stuff doesn't even build. 10 days and 36 comments later, and you can't get something as basic working, well done. This waste of time is exactly why we don't want GSoC PRs before GSoC",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1438671556/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		},
		{
			"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1438675475",
			"html_url": "https://github.com/laurent22/joplin/pull/7755#issuecomment-1438675475",
			"issue_url": "https://api.github.com/repos/laurent22/joplin/issues/7755",
			"id": 1438675475,
			"node_id": "IC_kwDOBLftOs5VwHIT",
			"user": {
				"login": "laurent22",
				"id": 1285584,
				"node_id": "MDQ6VXNlcjEyODU1ODQ=",
				"avatar_url": "https://avatars.githubusercontent.com/u/1285584?v=4",
				"gravatar_id": "",
				"url": "https://api.github.com/users/laurent22",
				"html_url": "https://github.com/laurent22",
				"followers_url": "https://api.github.com/users/laurent22/followers",
				"following_url": "https://api.github.com/users/laurent22/following{/other_user}",
				"gists_url": "https://api.github.com/users/laurent22/gists{/gist_id}",
				"starred_url": "https://api.github.com/users/laurent22/starred{/owner}{/repo}",
				"subscriptions_url": "https://api.github.com/users/laurent22/subscriptions",
				"organizations_url": "https://api.github.com/users/laurent22/orgs",
				"repos_url": "https://api.github.com/users/laurent22/repos",
				"events_url": "https://api.github.com/users/laurent22/events{/privacy}",
				"received_events_url": "https://api.github.com/users/laurent22/received_events",
				"type": "User",
				"user_view_type": "public",
				"site_admin": false
			},
			"created_at": "2023-02-21T15:27:32Z",
			"updated_at": "2023-02-21T17:09:22Z",
			"author_association": "OWNER",
			"body": "Wow there's a TypeScript error **and** a linter error. Couldn't be worst",
			"reactions": {
				"url": "https://api.github.com/repos/laurent22/joplin/issues/comments/1438675475/reactions",
				"total_count": 0,
				"+1": 0,
				"-1": 0,
				"laugh": 0,
				"hooray": 0,
				"confused": 0,
				"heart": 0,
				"rocket": 0,
				"eyes": 0
			},
			"performed_via_github_app": null
		}
	]
}